Reconfiguração automática do haproxy.cfg do HAPROXY
ChatGPT:
Perfeito! Aqui está um script cron completo e seguro para fazer o reload do haproxy.cfg em todos os containers haproxy do Swarm, sem reiniciar os containers — apenas recarregando o processo haproxy com kill -HUP.
✅ Script: reload-haproxy-containers.sh
bash
## INICIO SCRIPT ##
#!/bin/bash
# Nome da imagem usada no serviço haproxy
IMAGE_NAME="haproxytech/haproxy-debian:3.3"
# Comando de reload usado dentro do container
RELOAD_CMD="haproxy -c -f /usr/local/etc/haproxy/haproxy.cfg && kill -HUP 1"
# Busca containers que usam a imagem especificada
CONTAINERS=$(docker ps --filter "ancestor=$IMAGE_NAME" --format "{{.ID}}")
if [ -z "$CONTAINERS" ]; then
echo "[INFO] Nenhum container HAProxy em execução com imagem '$IMAGE_NAME'"
exit 0
fi
echo "[INFO] Recarregando configuração HAProxy em $(echo "$CONTAINERS" | wc -l) container(s)..."
for cid in $CONTAINERS; do
echo " → Validando e recarregando HAProxy no container $cid..."
docker exec "$cid" sh -c "$RELOAD_CMD" && \
echo " ✅ Container $cid recarregado com sucesso." || \
echo " ❌ Erro ao recarregar o container $cid."
done
## FIM SCRIPT ##
🔧 Como usar
1. Salve o script
sudo mkdir -p /usr/local/bin
sudo nano /usr/local/bin/reload-haproxy-containers.sh
Cole o conteúdo, salve, e depois:
sudo chmod +x /usr/local/bin/reload-haproxy-containers.sh
2. Agende via crontab
Edite o cron para o usuário que gerencia o Swarm (geralmente root):
sudo crontab -e
Adicione a linha para executar de hora em hora:
0 * * * * /usr/local/bin/reload-haproxy-containers.sh >> /var/log/reload-haproxy.log 2>&1
🛡️ Segurança adicional (opcional)
Se quiser ser ainda mais seletivo, você pode filtrar por nome do serviço ou label, ex:
docker ps --filter "name=mystack_haproxy" --format "{{.ID}}"
Ou com label:
docker ps --filter "label=com.docker.stack.namespace=mystack" --format "{{.ID}}"
✅ Resultado
Com isso, seu Swarm:
✅ Executará reload leve e seguro do haproxy.cfg de hora em hora
✅ Sem precisar redeploy, sem downtime
✅ Sincronizado via GlusterFS automaticamente
✅ Sem scripts dentro dos containers
No comments to display
No comments to display