
HAProxy — это программное обеспечение с открытым исходным кодом, которое предоставляется бесплатно. Оно используется для распределения нагрузки и как прокси-сервер, чтобы обеспечить непрерывную работу и высокую доступность веб-приложений и сервисов. Программа позволяет направлять трафик на различные серверы, что помогает поддерживать оптимальное распределение нагрузки и надёжную работу системы.
Установка HAProxy
Устанавливаем HAProxy из пакетов.
# aptitude install haproxy haproxy-log-analysi
Активируем и запускаем.
# systemctl enable haproxy
# systemctl start haproxy
# systemctl status haproxy
Пример конфигурации HAProxy для работы на уровне L4
HAProxy может работать как на уровне L4, так и на уровне L7. Уровень L4 используется например для балансировки неструктурированного трафика, а уровень L7 позволяет реализовать функционал аналогичный Nginx.
Рассмотрим пример конфигурации балансировщика уровня L4.
frontend mysql
mode tcp
bind :30001
default_backend mysql_servers
backend mysql_servers
mode tcp
balance leastconn
server s1 185.173.93.43:30001
server s2 185.133.42.139:30001
server s3 109.248.222.30:30001
HAProxy поддерживает несколько типов балансировщиков нагрузки, которые позволяют эффективно распределять трафик между серверами. Основные типы алгоритмов балансировки нагрузки в HAProxy включают:
- Round Robin (циклический алгоритм):
- трафик распределяется по серверам поочерёдно;
- подходит для систем, где все серверы имеют примерно одинаковую производительность и нагрузку.
- Least Connection (наименьшее количество соединений):
- новый запрос направляется на сервер с наименьшим количеством активных соединений;
- эффективен в ситуациях, когда серверы имеют различную производительность или нагрузку.
- Source (на основе IP-адреса источника):
- запросы от одного и того же IP-адреса направляются на один и тот же сервер;
- обеспечивает «привязку» пользователя к определённому серверу, что может быть полезно для сохранения состояния сеанса.
- URI (на основе URL-адреса):
- распределение нагрузки на основе части URL;
- может быть использовано для направления определённых типов запросов на специализированные серверы.
- Random (случайный выбор):
- сервер для нового запроса выбирается случайным образом;
- простой, но менее эффективный метод, так как не учитывает текущую нагрузку на серверы.
HAProxy также предоставляет возможности для настройки весов серверов, учёта их состояния (например, исключения из балансировки недоступных серверов) и реализации других стратегий балансировки с помощью дополнительных настроек и конфигураций.
Пример конфигурации HAProxy для работы на уровне L7
Простой пример конфигурации.
frontend http_front
bind :80
bind :443 ssl crt /etc/ssl/cert.pem
default_backend be_d1
backend be_d1
balance leastconn
server S1FR xx.xx.xx.xx:443 check ssl verify none
server S2UK xx.xx.xx.xx:443 check ssl verify none
server S3DE xx.xx.xx.xx:443 check ssl verify none
server S4CA xx.xx.xx.xx:443 check ssl verify none
server S5USAW 1xx.xx.xx.xx:443 check ssl verify none