Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

HAProxy

Ответить
Аватара пользователя
ALEXX
Администратор
Администратор
Сообщения: 1327
Зарегистрирован: 21 дек 2014, 14:59
Откуда: Королёв
Контактная информация:

HAProxy

Сообщение ALEXX »

Описание конфигурационного файла HAProxy — haproxy.cfg
Апр-21-2011 Автор: Павел Кузьменко
[center]HAProxy — Высокопроизводительный прокси/балансировщик для TCP соединений, с поддержкой протокола HTTP.[/center]
Конфигурирование HAProxy состоит из 3 основных частей:

Аргументы из командной строки, которые всегда имеют приоритет
«global» раздел конфигурационного файла, который устанавливает параметры для всего процесса
И разделов настройки проксирования в конфигурационном файле, «defaults», «listen», «frontend» and «backend»

[center]«defaults» раздел определяет параметры по умолчанию для всех остальных разделов и являеться обизательным.

«frontend» раздел описывает набор интерфейсов для принятия соединений от клиентов(браузеров).

«backend» раздел описывает набор серверов, к которым будет подключаться прокси
для переадресации входящих соединений.

«listen» раздел описывает полный прокси с его внешним и внутренним
части объединенными в одном разделе(обедененое описание «frontend» и «backend» ). Как правило, полезна только для TCP трафикa.[/center]

[center]Полный пример конфигурационного файла:[/center]

Код: Выделить всё

global
log 127.0.0.1   local0 notice
#stats socket /tmp/stats
maxconn 10000
#chroot /usr/share/haproxy
#nbproc 2
user haproxy
group haproxy
daemon
#debug
#quiet

defaults
log     global
mode    http
option  httplog
option  dontlognull
retries 3
option redispatch
option httpclose
option forwardfor
maxconn 10000
contimeout      5000
clitimeout      50000
srvtimeout      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 http
bind *:80
acl is_site1 hdr_dom(host) -i site1
acl is_site2 hdr_dom(host) -i site2
acl is_site3 hdr_dom(host) -i site3
acl is_cdn hdr_dom(host) -i cdn
acl is_cdnt hdr_dom(host) -i cdnt
acl is_site4 hdr_dom(host) -i site4
use_backend site1_cluster1 if is_site1
use_backend site2_cluster1 if is_site2
use_backend site3_cluster1 if is_site3
use_backend cdn_cluster1 if is_cdn
use_backend cdnt_cluster1 if is_cdnt
use_backend site4_cluster1 if is_site4

backend site1_cluster1
balance roundrobin
option httpchk HEAD /show.fcgi?show=stat HTTP/1.1\r\nHost:site1.my.com
stats enable
fullconn 200
server srv-1.2.my.com 21.18.21.4:80 cookie site112ha check  inter 2000 fall 3 minconn 30 maxconn 70 weight 1
server srv-1.3.my.com 21.86.21.20:80 cookie site113ha check inter 2000 fall 3 minconn 30 maxconn 70 weight 100
server srv-3.2.my.com 21.18.21.6:81 cookie site132ha check inter 2000 fall 3 backup
server srv-3.3.my.com 21.86.21.02:81 cookie site133ha check inter 2000 fall 3 backup

backend site4_cluster1
balance roundrobin
appsession site4ha len 64 timeout 3h prefix
cookie site4ha insert indirect nocache
option httpchk HEAD / HTTP/1.1\r\nHost:site4.my.com
stats enable
server srv-1.2.my.com 21.18.21.4:80 cookie site412ha check  inter 2000 fall 3
server srv-1.3.my.com 21.86.21.20:80 cookie site413ha check inter 2000 fall 3

backend site2_cluster1
balance roundrobin
appsession site2ha len 64 timeout 3h prefix
cookie site2ha insert indirect nocache
option httpchk HEAD / HTTP/1.1\r\nHost:site2.my.com
stats enable
server srv-1.2.my.com 21.18.21.4:80 cookie site212ha check  inter 2000 fall 3
server srv-1.3.my.com 21.86.21.20:80 cookie site213ha check inter 2000 fall 3

backend site3_cluster1
balance roundrobin
option httpchk HEAD / HTTP/1.1\r\nHost:site3.my.com
stats enable
cookie site3ha insert indirect nocache
server srv-1.2.my.com 21.18.21.4:80 cookie site312ha check  inter 2000 fall 3 weight 1
server srv-1.3.my.com 21.86.21.20:80 cookie site313ha check inter 2000 fall 3 weight 100

backend cdn_cluster1
balance leastconn
option httpchk HEAD / HTTP/1.1\r\nHost:cdn.my.com
stats enable
server srv-3.2.my.com 21.18.21.6:81 check  inter 2000 fall 3 weight 1
server srv-3.3.my.com 21.86.21.02:81 check inter 2000 fall 3 weight 100

backend cdnt_cluster1
balance leastconn
option httpchk HEAD / HTTP/1.1\r\nHost:cdnt.my.com
stats enable
server srv-3.2.my.com 21.18.21.6:81 check  inter 2000 fall 3 weight 1
server srv-3.3.my.com 21.86.21.02:81 check inter 2000 fall 3 weight 100

listen stats-srv-3.my.com *:8180
stats uri /stats
stats realm   Haproxy\ Statistics
stats show-legends
stats refresh 5s
maxconn 300
mode http
option httpclose
transparent
stats auth test:test
clitimeout  10000
srvtimeout  10000
contimeout  4000
[center]Расмотрим раздел конфигурационного файла «global»[/center]

Код: Выделить всё

global
log 127.0.0.1   local0 notice
#stats socket /tmp/stats
maxconn 10000
#chroot /usr/share/haproxy
#nbproc 2
user haproxy
group haproxy
daemon
#debug
#quiet
  • log «address» «facility» [max level [min level]] (log 127.0.0.1 local0 notice) — Добавляет сервер системного журнала. «facility» — должен быть одним из 24 стандартных типов журналирования (kern user mail daemon auth syslog lpr news uucp cron auth2 ftp ntp audit alert cron2 local0 local1 local2 local3 local4 local5 local6 local7)
    maxconn «number» (maxconn 10000) — Устанавливает максимальное число одновременных подключений для каждого процесса.
    nbproc «number» (nbproc 2) — задает количество проццессов. По умолчанию только один процесс будет создан.
    daemon — режим работы демоном
    user — пользователь от которого работает процес
    group — группа от которой работает процес
    chroot /usr/share/haproxy — окружение процесса
    stats socket /tmp/stats — путь создания сокета с которого можно читать и запрашивать тикущюю информацию по работе
[center]Расмотрим раздел конфигурационного файла «defaults»[/center]

Код: Выделить всё

defaults
log     global
mode    http
option  httplog
option  dontlognull
retries 3
option redispatch
option httpclose
option forwardfor
maxconn 10000
contimeout      5000
clitimeout      50000
srvtimeout      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
  • log global — включает в журналирование информацию о трафике
    mode http — режим работы HAProxy, в http режиме происходит анализ Layer 7 трафика
    option httplog — Добавляет в лог HTTP запросы, состояние сеанса и таймеры
    option dontlognull — не логировать пустые конекшины
    retries 3 — количество попыток определить состояние бекенда после обрыва соеденения
    option redispatch — перерастределение запросов после обрыва связи с какимто бекендом
    option httpclose — закрывать пассивные соеденения
    option forwardfor — включение X-Forwarded-For для передачи IP клиента бекенду
    errorfile XXX — определение своих страниц ошибок.
[center]Расмотрим раздел конфигурационного файла «frontend»[/center]

Код: Выделить всё

frontend http
bind *:80
acl is_site1 hdr_dom(host) -i site1
acl is_site2 hdr_dom(host) -i site2
acl is_site3 hdr_dom(host) -i site3
acl is_cdn hdr_dom(host) -i cdn
acl is_cdnt hdr_dom(host) -i cdnt
acl is_site4 hdr_dom(host) -i site4
use_backend site1_cluster1 if is_site1
use_backend site2_cluster1 if is_site2
use_backend site3_cluster1 if is_site3
use_backend cdn_cluster1 if is_cdn
use_backend cdnt_cluster1 if is_cdnt
use_backend site4_cluster1 if is_site4
  • frontend http — задаем режим работы фронтенда
    bind *:80 — задает на каком IP и порту будем слушать запросы
    acl is_site1 hdr_dom(host) -i site1 — создаем политику определения запроса к конкретному сайту. hdr_dom(host) содержит адрес сайта, и если он совпадает(-i) с написаным (site1), то подпадает под политику is_site1
    use_backend site1_cluster1 if is_site1 — описуем какой бекенд использовать для какой политики
[center]Расмотрим раздел конфигурационного файла «backend»[/center]

Код: Выделить всё

backend site1_cluster1
balance roundrobin
option httpchk HEAD /show.fcgi?show=stat HTTP/1.1\r\nHost:site1.my.com
stats enable
fullconn 200
server srv-1.2.my.com 21.18.21.4:80 cookie site112ha check  inter 2000 fall 3 minconn 30 maxconn 70 weight 1
server srv-1.3.my.com 21.86.21.20:80 cookie site113ha check inter 2000 fall 3 minconn 30 maxconn 70 weight 100
server srv-3.2.my.com 21.18.21.6:81 cookie site132ha check inter 2000 fall 3 backup
server srv-3.3.my.com 21.86.21.02:81 cookie site133ha check inter 2000 fall 3 backup

backend cdn_cluster1
balance leastconn
option httpchk HEAD / HTTP/1.1\r\nHost:cdn.my.com
stats enable
server srv-3.2.my.com 21.18.21.6:81 check  inter 2000 fall 3 weight 1
server srv-3.3.my.com 21.86.21.02:81 check inter 2000 fall 3 weight 100
  • backend site1_cluster1 — название бекенда
    balance (roundrobin/leastconn/static-rr/uri/source/url_param) — настройка алгоритма балансировки.
    option httpchk HEAD /show.fcgi?show=stat HTTP/1.1\r\nHost:site1.my.com — настройка способа проверки на доступность бекенда
    server srv-1.3.my.com 21.86.21.20:80 cookie site113ha check inter 2000 fall 3 minconn 30 maxconn 70 weight 100 (backup/disable) — описание сервера. server «Название» «IP:порт» «cookie site113ha — задание кукиса необходимо для правильной балансирови сесий клиентов» «check inter 2000 fall 3 — проверять каждые 2с и после 3 ошибок считать недоступным» «minconn 30 maxconn 70 — организация очереди запросов, чтоб на сервере небыло больше 70 однавременно обрабатываюшихся запросов» «weight 100 — вес сервера от 1 до 100″ «backup/disable — использовать в качестве бекапного сервера/отключить сервер»
    stats enable — включить статистику
    fullconn 200 — максимальное значение одновременных конектов
[center]Расмотрим раздел конфигурационного файла «listen» в котором реализован доступ к статистике[/center]

Код: Выделить всё

listen stats-srv-3.my.com *:8180
stats uri /stats
stats realm   Haproxy\ Statistics
stats show-legends
stats refresh 5s
maxconn 300
mode http
option httpclose
transparent
stats auth test:test
clitimeout  10000
srvtimeout  10000
contimeout  4000
listen stats-srv-3.my.com *:8180 — описание IP:порта доступа к статистике
stats uri /stats — URL доступа к статистеке
stats realm Haproxy\ Statistics — титл странички статистики
stats show-legends — отобразать в статистеке дополнительную информацию о параметрах
stats refresh 5s — интервал автоматического обнавления странички статистики
stats auth test:test — логин и пароль для доступа к статистике

Это пока единственный документ который я нарыл на русском языке.
Ответить

Вернуться в «Сети. Настройка и администрирование»