Назад | Перейти на главную страницу

HAProxy - создание страницы обслуживания

Есть ли простой способ отключить все серверные части в haproxy и вместо этого обслуживать соответствующую страницу обслуживания (для HTTP-запросов)?

Я немного прочитал о опции отключения, которая, как я понимаю, предназначена для каждого сервера, но мне интересно, есть ли способ просто остановить трафик для всех бэкэндов?

В backup ключевое слово - это то, что мы используем для этого. См. Этот пример:

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

Здесь оба сервера web01 и web02 установлены на disabled, в этом случае backup сервер prx 10.1.31.10:9000, которая обслуживает страницу обслуживания. В prx В нашем случае сервером является сам HAProxy, а на порту 9000 запускается Apache HTTPD, обслуживающий содержание:

<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>

А как насчет перенаправления или перенаправления

Простой пример redir

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

редирект может быть установлен во всех параметрах по умолчанию.

Это сообщение в блоге помогло мне: https://rimuhosting.com/knowledgebase/creating-a-main maintenance-page-for-your-site

Он предлагает установить / настроить обработчик ошибок 503:

errorfile 503 /var/www/503maintance.html

Заметка: вам необходимо включить заголовки http в файл обработчика ошибок:

HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html

Вы можете указать серверную часть без директивы сервера и только страницу с ошибкой 503.
Единственное, что вам нужно сделать, это (временно) изменить default_backend вариант, или вы можете создать 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