Установка в конфигурации agents-use

Отказоустойчивая конфигурация agents-use предполагает установку модуля-балансировщика нагрузки, который распределяет трафик по проксируемым серверам – фильтрующим нодам Weblock.Agent. Такая конфигурация позволяет обслуживать больше клиентов и защищает от сбоя, автоматически перераспределяя трафик между работающими нодами.

В качестве модуля-балансировщика нагрузки предлагаем использовать HAProxy версий 3.0 и выше.

Процедура установки Системы в конфигурации agents-use аналогична описанной выше для конфигурации single-install. Дополнительно к этому:

Установка модуля HAProxy

Модуль HAProxy устанавливается на сервер с операционной системой Debian. Для повышения отказоустойчивости лучше устанавливать модуль-балансировщик нагрузки на сервер, отличный от целевой машины, где будет установлен дистрибутив «Weblock.».

Для установки HAProxy 3.0 (ОС Debian 11) сначала, если отсутствуют, установить пакеты Curl и GPG с помощью команды:

$ apt-get install curl gpg

Включить выделенный репозиторий командами:

$ curl https://haproxy.debian.net/bernat.debian.org.gpg | gpg --dearmor > /usr/share/keyrings/haproxy.debian.net.gpg

$ echo deb "[signed-by=/usr/share/keyrings/haproxy.debian.net.gpg]" http://haproxy.debian.net bullseye-backports-3.0 main \
> /etc/apt/sources.list.d/haproxy.list

Обновить список доступных пакетов командой:

$ apt-get update

Установить HAProxy 3.0 с помощью команды:

$ apt-get install haproxy=3.0.\*

Примечание

Подробнее об установке HAProxy можно узнать из официальной документации: https://haproxy.debian.net/, https://haproxy.debian.net/#distribution=Debian&release=bullseye&version=3.0.

Настройка конфигурационного файла HAProxy

Пример конфигурационного файла /etc/haproxy/haproxy.cfg для HAProxy 3.0.

global
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level ad-min
    stats timeout 30s
    user haproxy
    group haproxy
    ca-base /etc/haproxy/ssl/certs
    crt-base /etc/haproxy/ssl/private
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
    ssl-server-verify none
    setenv WAFAGENT_1 ip
    setenv WAFAGENT_2 ip

    cache cacher1
        total-max-size 1024 #1 GB in MB
        max-object-size 2097152 #2 MB
        max-age 240
        #process-vary on
        #max-secondary-entries 12

defaults
    log global
    mode http
    option httplog
    option dontlognull
    option forwardfor
    timeout connect 5000
    timeout client 50000
    timeout server 50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend stats
    bind *:8404
    stats auth admin:<пароль>
    stats enable
    stats admin if TRUE
    stats uri /stats
    stats refresh 10s
    http-request deny if !{ src ip/24 }

frontend haproxy
    bind :80
    bind :443 ssl crt /etc/haproxy/ssl/private verify none
    http-request redirect scheme https unless { ssl_fc }
    use_backend %[req.hdr(host),lower,map_dom(/etc/haproxy/host_backend.map,be_default)]

backend dvwa
    retry-on conn-failure empty-response response-timeout
    http-request cache-use cacher1
    http-response cache-store cacher1

    option httpchk
        http-check connect port 443 ssl
        http-check send meth GET uri /login.php ver HTTP/1.1 hdr Host dvwa.ru
        http-check expect status 200

    balance first
        server WAF_Agent_2 "$WAFAGENT_2":443 check ssl veri-fy none inter 5s fall 3 rise 3
        server WAF_Agent_1 "$WAFAGENT_1":443 check ssl veri-fy none inter 5s fall 3 rise 3
        server reserved ip:80 backup track backup.dvwa/dvwa

backend backup.dvwa
    retry-on conn-failure empty-response response-timeout

    option httpchk
        http-check connect port 80 #443 ssl
        http-check send meth GET uri /login.php ver HTTP/1.1 hdr Host dvwa.ru
        http-check expect status 200

    server dvwa ip:80 check

где

  • global.ca-base и crt-base – путь к SSL сертификатам,

  • global.setenv – имя переменной окружения и IP-адрес фильтрующих нод,

  • defaults.log – настройка журнала регистрации,

  • frontend_stats.stats auth – данные авторизации,

  • frontend_stats.http-request – IP-адрес фильтрующих нод с маской подсети,

  • frontend_haproxy.use_backend – включение для использования карты маршрутизации доменных имен, рекомендуем использовать с вышеприведенными параметрами,

  • backend_dvwa.balance – алгоритм балансировки между нодами,

  • backend_dvwa.balance.server – имя переменной окружения, IP-адрес или доменное имя и порт фильтрующих нод,

  • backend_backup.dvwa.server – IP-адрес фильтрующей ноды для проверки работоспособности.

_images/Weblock_Logos_small.png