Este “script de reinicialização” do HAProxy funcionará tão graciosamente que será?

8

Eu coloquei este script de vários lugares. O que eu espero é que ele faça o seguinte uma vez executado:

  1. Pause todo o tráfego HTTP "NOVO" para as portas 80 e 443 - basta "pausá-las", não dê nenhum erro
  2. reinicie graciosamente o haproxy quando todas as solicitações "em processo" forem concluídas
  3. Desative o tráfego HTTP e continue os negócios normalmente.

É assim que será executado? Eu perdi alguma coisa? Temos milhares de regras acl baseadas em ip, armazenadas em um arquivo que o haproxy faz referência e precisamos recarregá-lo várias vezes por minuto.

#!/bin/sh

# hold/pause new requests
iptables -I INPUT -p tcp --dport 80 --syn -j DROP
iptables -I INPUT -p tcp --dport 443 --syn -j DROP
sleep 1

# gracefully restart haproxy
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

# allow new requests to come in again
iptables -D INPUT -p tcp --dport 80 --syn -j DROP
iptables -D INPUT -p tcp --dport 443 --syn -j DROP

Editar: Eu adoraria testá-lo de alguma forma, mas ainda não temos nenhum tráfego (com exceção de eu testar).

Fontes:

link

link

Recarregar o HAProxy com zero perda de pacotes

    
por Mike Curry 12.09.2014 / 02:08

1 resposta

3

Com base nesses artigos, deve funcionar bem.

Lembre-se de que você não tem o tráfego em que você pode emulá-lo.

Use a ferramenta referência do apache para colocar tráfego falso.

Apenas certifique-se de que a página que você está carregando demore alguns segundos para carregar, para testar o pior cenário possível.

Criei para você um livro de receitas que prova que a configuração que você fornece funciona corretamente.

    
por 12.09.2014 / 02:53