HAProxy - mise en place d'une page de maintenance


5

Existe-t-il un moyen simple de dissoudre tous les backends dans haproxy et de servir une page de maintenance appropriée (pour les requêtes http)?

J'ai un peu lu sur l'option de désactivation, que je comprends bien par serveur, mais je me demande s'il existe un moyen d'arrêter simplement le trafic vers tous les serveurs.

Réponses:


3

Le backupmot clé est ce que nous utilisons pour cela. Voir cet exemple:

listen example_com 0.0.0.0:8001
...
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www.example.com\r\nUser-Agent:\ HAProxy
server  web01 10.1.31.21:80 cookie cookie_web01 check inter 5000 rise 2 fall 5 disabled
server  web02 10.1.31.22:80 cookie cookie_web02 check inter 5000 rise 2 fall 5 disabled
server  prx   10.1.31.10:9000  backup

Ici, les deux serveurs web01et web02sont réglés sur disabled, auquel cas le backupserveur prxde 10.1.31.10:9000 sera utilisé, qui sert une page de maintenance. Le prxserveur dans notre cas est le serveur HAProxy lui-même et sur le port 9000 exécute un HTTPD Apache, servant le contenu de maintenance:

<VirtualHost *:9000>
    ServerName  example.com
    ServerAdmin webmaster@example.com

    DocumentRoot /var/www/example.com/errors/
    <Directory /var/www/example.com/errors/>
        Options -Indexes
    </Directory>

    RewriteEngine On
    RewriteCond %{DOCUMENT_ROOT}/systemDown.html -f
    RewriteCond %{SCRIPT_FILENAME} !systemDown.html
    RewriteRule ^.*$ /systemDown.html [R=503,L]
    ErrorDocument 503 /systemDown.html

</VirtualHost>

Je ne comprends pas si je dois juste utiliser disabledet backupou si je dois aussi configurer un processus (différent de HAProxy) qui écoute sur un port personnalisé. Probablement le deuxième: il serait préférable d’avoir une option intégrée dans HAProxy!
Collimarco

1

Qu'en est-il de redirection ou redir

Un exemple simple

server srv1 10.0.0.10:80 redir http://maintenance.domain.com check

la redirection peut être définie dans toutes les options par défaut.



0

Vous pouvez spécifier un serveur principal sans directive de serveur et uniquement une page d'erreur 503.
La seule chose à faire est de modifier (temporairement) l' default_backendoption ou vous pouvez créer un acl:

frontend public

    #  default_backend www
    default_backend www-maintenance

backend www-maintenance
    errorfile       503 /etc/haproxy/error/503.http

backend www
    server www      10.0.0.1:8080 check
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.