Eu tenho um Apache2 com configuração fastcgi php; Eu quero fazer alterações de configuração sem que um cliente perceba (por isso, nenhum pedido caiu / falha), então eu coloquei o haproxy na frente dele; então eu tenho 2 servidores Apache2 rodando em diferentes IPs no mesmo servidor e o balanceamento de carga / failover Haproxy sendo executado na frente deles.
Tanto o Apache como o Haproxy têm o Keepalive desligado. Quando executo /etc/init.d/apache2_1 restart ou apache2ctl -k graceful -f /etc/apache2_1/apache2.conf durante a execução;
assista -n 1 lynx -dump -source http: // servidor /test.php (que tem eco rand (1.100000); nele)
ainda cai 1 pedido com um gateway inválido. Como posso evitar que isso aconteça?
Basicamente, se eu pudesse dizer ao Haproxy para terminar todas as conexões (terminar significa apenas deixá-las rodar) para o servidor1, mas enviar todas as novas para o servidor2 em um determinado ponto no tempo, isso funcionaria.
Observe também; Eu preciso de php-cgi; com mod_php as coisas são mais fáceis.
Editar; Eu tentei isso; link
no entanto, as solicitações que estão acontecendo não são passadas para o backup, então alguns clientes ainda estão recebendo um Gateway Incorreto.
Para responder ao comentário de Ben;
Com cgi gracioso parece começar todas as conexões em curso; com mod_php gracioso funciona bem; sem tempo de inatividade. Haproxy vê quando o apache está diminuindo (fica amarelo na tela de estatísticas), mas o fastcgi simplesmente corta os scripts no ar;
Sáb 15 de agosto 19:00:55 2009] [notice] mod_fcgid: process /var/www/gui/wsapi.php(13987) exit (erro de comunicação), finalizado chamando exit (), código de retorno: 0
[Sáb 15 de agosto de 19:00:55 2009] [aviso] mod_fcgid: processo 14012 vai desligamento normal, enviando SIGTERM
[Sáb 15 de agosto de 19:00:56 2009] [aviso] mod_fcgid: process /var/www/gui/index.php(13999) exit (erro de comunicação), finalizado chamando exit (), código de retorno: 0
Muitos clientes também estão recebendo;
[Sáb 15 de agosto 19:05:42 2009] [erro] [cliente xxx.xxx.xxx.xxx] Final prematuro dos cabeçalhos de script: index.php
Outro sinal de que não há nada de gracioso no desligamento.