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.

Jusqu'à la crique
la source

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 [email protected]

    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>
daff
la source
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.

Silviud
la source
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
Tim
la source