Éviter 502 mauvaise passerelle dans un process de reds Robin Webserver process de redémarrage

J'ai un équilibreur de charge / proxy inversé (soit nginx ou cherokee, peu importe lequel) déployé sur mon server et il pointe vers plusieurs process de server web d'arrière-plan (soit gunicorn ou cherrypy, peu importe) dans une configuration round-robin .

Afin de minimiser les time d'arrêt, j'ai un script de redémarrage du server web qui tue un process de server Web spécifique (hors 8 process), puis le démarre immédiatement; et passe ensuite au prochain process du server web (tuez-le, puis redémarrez-le), à ​​tout moment, il y aura toujours au less 7 process disponibles pour mon proxy inverse.

C'est bien; mais y a-t-il un moyen de "perfectionner" ce process de sorte que je n'obtiens pas 502 mauvaises passerelles? La passerelle 502 se produit lorsqu'un user se trouve sur le site et utilise un process de server Web qui est temporairement tué et relancé.

De toute évidence, la raison pour laquelle j'ai besoin d'un script de redémarrage est pour le deployment d'un nouveau code python dans mon application python (en cours d'exécution sur le gunicorn ou le cherrypy).

nginx devrait le faire sortir de la boîte. Le paramètre d' error timeout par défaut de proxy_next_upstream transmettra une requête au prochain membre d'un bloc en amont si le server initial choisi est inaccessible.

Pourquoi tu tuez Gunicorn? Envoyez-le simplement un SIGHUP comme tout autre process Unix bien porté et il sera réactivé sans perdre de connection.

Si vous utilisez haproxy et configurez un backend pour chaque process de server web et que vous utilisez également des controls de santé sur ces backends, il détectera quand il est en panne et le marquer comme hors ligne, équilibrant les requêtes aux personnes en bonne santé.
Un user connecté au server web de redémarrage doit être rééquilibré vers un user après avoir actualisé la page ou lancé une autre requête.

Utilisez plutôt apache httpd .

Il dispose d'un baliseur de charge proxying inversé ultra-configurable qui prend en charge le drain des membres et les preferences pondérées, sans parler de la reconfiguration en ligne via l'interface balanceur-gestionnaire .