Основы работы с HAProxy и балансировкой нагрузки
https://www.dmosk.ru/miniinstruktions.php?mini=haproxy-centos7
HAProxy (High Availability Proxy) – это популярный открытый балансировщик нагрузки TCP/HTTP и прокси-сервер для систем Linux, Solaris и FreeBSD. Он позволяет улучшить производительность и ошибкоустойчивость серверного окружения путём распределения рабочей нагрузки между несколькими серверами (например, между веб-сервером, сервером баз данных и сервером приложений). HAProxy используют многие проекты с высокой нагрузкой: GitHub, Imgur, Instagram и Twitter.
Данная статья ознакомит вас с основными понятиями HAProxy и балансировки нагрузки. Также здесь вы найдёте примеры настроек и полезные советы, которые помогут вам повысить производительность и надёжность серверной среды.
sudo yum info haproxy
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 10s
timeout client 60s
timeout server 60s
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
bind *:80
mode tcp
option tcplog
default_backend router_http
frontend https_bind
bind *:443
mode tcp
option tcplog
default_backend router_https
backend router_http
mode tcp
server router_server router:80
backend router_https
mode tcp
server router_server router:443
frontend http-in
bind *:80
acl host_d1 hdr(host) -i d1.com
acl host_d2 hdr(host) -i d2.com
use_backend be_d1 if host_d1
use_backend be_d2 if host_d2
backend be_d1
server D1M1 10.0.0.1:8080
server D1M2 10.0.0.2:8080
backend be_d2
server D2M1 10.0.0.1:8080
server D2M2 10.0.0.2:8080
Параметры конфигурационного файла haproxy.cfg
Рассмотрим основные примеры алгоритмов работы HaProxy:
- roundrobin — алгоритм используемый по умолчанию, отправляет запросы на сервера по очереди. В нашем примере мы использовали именно такой метод;
- leastconn – выбирает сервер с наименьшим количеством активных соединений. Рекомендуется применять на проектах, в которых сессии могут быть задействованы продолжительное время;
- source – выбирает сервер по хешу, построенному на основе IP пользователей. В таком режиме работы один и тот же клиент будет обращаться всегда к одному серверу, если его IP остается неизменным;
Пройдем по некоторым параметрам в конфигурационном файле.
Блок global:
- log — вести лог в /dev/log сохраняя в «объект» local0;
- chroot — настройки безопасности, «запирающие» HAProxy в указанной директории;
- maxconn — максимальное количество конкурирующих соединений на один процесс;
- user — пользователь, от имени которого будет запущена программа;
- group — группа пользователя, от имени которого будет запущена программа;
- daemon — запуск процесса как демона.
Блок default. В данном блоке описываются параметры по умолчанию для всех других секций, которые следуют за ней:
- log — указывает, в какой лог вести записи (global в данном случае означает, что используются параметры, заданные в секции global);
- mode — устанавливает протокол взаимодействия, принимает одно из значений: tcp, http или health;
- retries — количество попыток соединения с сервером в случае отказа;
- option httplog — формат лога, в случае использования HAProxy для проксирования HTTP-запросов;
- option redispatch — разрешает программе разорвать и переназначить сессию в случае отказа сервера;
- contimeout — максимальное время ожидания успешного соединения с сервером.
Также есть большое количество параметров связанных с различными timeout.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.