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.
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
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.
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).
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.