Balanceamento de Carga de Proxy Reverso do Ubuntu Pound Baseado na carga do servidor ativo?

3

Eu tenho o Pound instalado em um balanceador de carga. Parece funcionar bem, exceto que ele atribui aleatoriamente o servidor back-end para encaminhar a solicitação para. Eu coloquei 1 máquina de backend sob tanta carga que foi usada no swap, e não consigo nem mesmo ssh dentro dela para testar esse cenário. Eu gostaria que o balanceador de carga percebesse que a máquina estava sobrecarregada e a enviasse para uma máquina backend diferente. No entanto isso não acontece. Eu li a man page e parece que a diretiva "DynScale 1" é o que iria monitorar isso, mas ainda redireciona para o servidor sobrecarregado. Eu também coloquei em "HAport 22" para o backend figurando desde que eu não posso ssh in, nem poderia o balanceador de carga e consideraria o servidor backend morto até que se livre da carga e responde, mas isso não ajuda qualquer um.

Se alguém puder ajudar com isso, eu agradeceria. Minha configuração atual está abaixo.

######################################################################
## global options:

User            "www-data"
Group           "www-data"
#RootJail       "/chroot/pound"

## Logging: (goes to syslog by default)
##      0       no logging
##      1       normal
##      2       extended
##      3       Apache-style (common log format)
LogLevel        3

## check backend every X secs:
Alive           5
DynScale        1

Client          1200
TimeOut         1500

# poundctl control socket
Control "/var/run/pound/poundctl.socket"


######################################################################
## listen, redirect and ... to:

## redirect all requests on port 80 to SSL
ListenHTTP
     Address 192.168.1.XX
     Port    80
     Service
          Redirect "https://xxx.com/"
     End
End

ListenHTTPS
     Address 192.168.1.XX
     Port    443
     Cert    "/files/www.xxx.com.pem"
     Service
           BackEnd
                  Address 192.168.1.1
                  Port 80
        HAport 22
           End
           BackEnd
                  Address 192.168.1.2
                  Port 80
        HAport 22
           End
     End
End

    
por Andrew 07.06.2011 / 17:08

3 respostas

0

De acordo com sua configuração de timeout , Pound aguarda 25 minutos por uma resposta do back-end. Defina-o para algo mais baixo durante os testes, digamos o padrão de 15 segundos.

    
por 07.06.2011 / 17:30
0

Eu ouvi opiniões muito diferentes sobre a eficácia DynScale . Nós escolhemos não usá-lo. O que fazemos em vez disso é definir um Priority val para cada seção de BackEnd . Na página do manual:

Priority val

The priority of this back-end (between 1 and 9, 5 is default). Higher priority back-ends will be used more often than lower priority ones, so you should define higher priorities for more capable servers.

Sua nova seção ListenHTTPS deve ser algo assim:

ListenHTTPS
     Address 192.168.1.XX
     Port    443
     Cert    "/files/www.xxx.com.pem"
     Service
           BackEnd
                  Address 192.168.1.1
                  Port 80
                  Priority 7
           End
           BackEnd
                  Address 192.168.1.2
                  Port 80
                  Priority 3
           End
     End
End

Teste valores diferentes para Priority em cada BackEnd até ficar satisfeito com a distribuição da carga.

Você deve desativar DynScale ao jogar com Priority , caso contrário, Pound tentará ajustar os valores para você com base no uso real.

Além disso, você provavelmente deve definir Alive para algo maior, como 30 segundos. Se seus servidores estão enterrados sob mais carga do que eles podem suportar, você não quer que o Pound o chute a cada 5 segundos para ver se ele está de volta novamente.

Por fim, concordo com @Andrew. Seu valor Timeout deve ser muito menor. Vá com algo modesto, como 300 (5 minutos).

    
por 16.06.2011 / 19:09
0

Se você estiver enviando tráfego de carga para uma das máquinas de back-end 'diretamente' (isto é, sem passar por Pound), ele não poderá detectar a carga.

O Pound simplesmente tentará a porta 80 do backend (que na verdade responderá ao handshake TCP inicial, SYN / ACK etc, mas não muito mais que isso) e aguardará até o tempo limite especificado.

Tente enviar seu tráfego de carga por meio do Pound e experimente as prioridades de back-end e o DynScale. O Pound usa o número de conexões abertas e contínuas para os back-ends para calcular o balanceamento de carga.

Além disso, verifique o comando "poundctl" para ver algumas estatísticas nos serviços / backends.

    
por 11.12.2012 / 22:26