Ce «script de redémarrage» HAProxy fonctionnera-t-il aussi gracieusement que je le pense?


9

J'ai assemblé ce script à partir de divers endroits. Ce que j'espère, c'est qu'il fera ce qui suit une fois exécuté:

  1. Mettre en pause tout le trafic http "NOUVEAU" pour les ports 80 et 443 - juste "mettre en pause", ne donnez aucune erreur
  2. redémarrer gracieusement haproxy lorsque toutes les demandes "en cours" sont terminées
  3. Annulez la pause du trafic http et continuez comme d'habitude.

Est-ce ainsi que cela fonctionnera? Ai-je raté quelque chose? Nous avons des milliers de règles acl basées sur ip, stockées dans un fichier qui référence haproxy et nous devons le recharger plusieurs fois par minute.

#!/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

Edit: J'adorerais le tester d'une manière ou d'une autre, mais nous n'avons pas encore de trafic pour le moment (à l'exception de mes tests).

Sources:

http://www.forouzani.com/reload-haproxy-cfg-without-restarting.html

https://github.com/Mirantis/openstack-lbaas/issues/3

Recharge gracieuse HAProxy sans perte de paquets

Réponses:


4

Sur la base de ces articles, cela devrait fonctionner correctement.

N'oubliez pas que vous n'avez pas le trafic, vous pouvez toujours l'imiter.

Utilisez l' outil de référence apache pour mettre du faux trafic.

Assurez-vous simplement que la page que vous chargez prend quelques secondes à charger, pour tester le pire des cas.

J'ai créé pour vous un livre de recettes qui prouve que la configuration que vous fournissez fonctionne correctement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.