Установка в конфигурации agents-use¶
Отказоустойчивая конфигурация agents-use предполагает установку модуля-балансировщика нагрузки, который распределяет трафик по проксируемым серверам – фильтрующим нодам Weblock.Agent. Такая конфигурация позволяет обслуживать больше клиентов и защищает от сбоя, автоматически перераспределяя трафик между работающими нодами.
В качестве модуля-балансировщика нагрузки предлагаем использовать HAProxy версий 3.0 и выше.
Процедура установки Системы в конфигурации agents-use аналогична описанной выше для конфигурации single-install. Дополнительно к этому:
в конфигурационном файле Системы добавляется блок waf_agents с указанием проксируемых серверов,
устанавливается модуль HAProxy.
Установка модуля 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-адрес фильтрующей ноды для проверки работоспособности.
