Примеры настройки HaProxy


В догонку за первой статьей в этой я хочу рассмотреть несколько примеров настройки HaProxy для балансировки трафика.

Вся конфигурация HaProxy хранится в файле /etc/haproxy/haproxy.cfg
Стандартный конфиг имеет несколько примеров описания backend, frontend и listen секций.

Также он содержит секцию "Global", в которой описаны опции, которые являются глобальными. Опять же все очень просто и понятно для любого, кто владеет английским на уровне "читаю со словарем". Разверните спойлер:

Пример секции global

global
    log         127.0.0.1 local2 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

Для того, что бы включить логирование воспользуйтесь этой статьей.

Дальше идет секция defaults, которая содержит общие для всех настройки.

Пример секции defaults

defaults
    log         global
    option      dontlognull
    option      forwardfor
    option      redispatch
    timeout connect 10000 # default 10 second time out if a backend is not found
    timeout client 300000
    timeout server 300000
    maxconn     60000
    retries     3

Свой пример я начну с более сложного подхода: описание Frontend-Backend. Этот подход может быть очень полезным, если у Вас есть несколько групп серверов, отвечающих за разные задачи, в моем примере - 2 сайта находятся на 2-х парах серверов. Соответственно группы серверов объединяются в backendы, а условия доставки запросов к ним определяются с помощью acl в секции frontend.

####
# HTTP section
####
frontend http-proxy
 bind *:80
 mode http
 acl web1 hdr_beg(host) www.website1.com
 acl web2 hdr_beg(host) www.website2.com
 use_backend http-web2 if web2
 default_backend http-web1

####
# Description of the web1 servers
####
backend http-web1
 mode http
 balance roundrobin
 option httpclose
 option forwardfor
 option httpchk OPTIONS * HTTP/1.1rnHost: www
server web01 192.168.10.20:80 check inter 2000 fall 3
server web02 192.168.10.16:80 check inter 2000 fall 3

####
# Description of the web2 servers
####
backend http-web2
 balance roundrobin
 mode http
 option httpclose
 option forwardfor
 option httpchk OPTIONS * HTTP/1.1rnHost: www
server app01 192.168.10.13:80 check inter 2000 fall 3
server app02 192.168.10.14:80 check inter 2000 fall 3

Балансировка https трафика происходит в режиме tcp. Ниже представлен пример описания секции listen. По аналогии с предыдущим примером, несколько серверов можно описывать с помощью подхода frontend-backend.

В режиме tcp HaProxy просто отправляет весь трафик на сервера за балансировщиком.

####
# HTTPs section
####
listen https-proxy *:443
 mode tcp
 balance source
 option httpclose
 option forwardfor
server web01 192.168.10.20:443 check port 443
server web02 192.168.10.16:443 check port 443

В режиме tcp также можно балансировать MySQL или MSSQL трафик, если у Вас настроена master-master репликация. В случае master-slave репликации рекомендую использовать mysql-proxy для распределения select, update, insert запросов между серверами

Описание mysql серверов

####
# Description of the sql servers
####

listen mysql-proxy *:3306
 mode tcp
 balance roundrobin
 option tcplog
server SQL01 192.168.10.21:3306 check port 3306
server SQL02 192.168.10.22:3306 check port 3306
server SQL02 192.168.10.23:3306 check port 3306

Share Button
(Visited 4 055 times, 1 visits today)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.