EnterpriseApps/Haproxy: различия между версиями
(не показано 5 промежуточных версий этого же участника) | |||
Строка 25: | Строка 25: | ||
# systemctl enable --now haproxy.service | # systemctl enable --now haproxy.service | ||
=Каталоги и файлы | =Каталоги и файлы Haproxy= | ||
*{{path|/etc/haproxy/conf.d}} - каталог с настройками (по-умолчанию пустой) | *{{path|/etc/haproxy/conf.d}} - каталог с настройками (по-умолчанию пустой) | ||
*{{path|/etc/haproxy/haproxy.cfg}} - конфигурационный файл | *{{path|/etc/haproxy/haproxy.cfg}} - конфигурационный файл | ||
Строка 34: | Строка 34: | ||
Настройка HAProxy — довольно простой процесс. По сути, всё, что вам нужно сделать, это сообщить HAProxy, какие соединения он должен прослушивать и куда следует их ретранслировать. | Настройка HAProxy — довольно простой процесс. По сути, всё, что вам нужно сделать, это сообщить HAProxy, какие соединения он должен прослушивать и куда следует их ретранслировать. | ||
Это делается путем создания файла конфигурации /etc/haproxy/haproxy.cfg с определяющими настройками. | Это делается путем создания файла конфигурации {{path|/etc/haproxy/haproxy.cfg}} с определяющими настройками. | ||
Добавьте в конец файла два раздела - {{path|frontend %name%}} и {{path|backend %name%}} - %name% - замените на свои имена. | |||
Например на {{path|http_front}} и {{path|http_back}}. | |||
frontend http_front | |||
bind *:80 | |||
stats uri /haproxy?stats | |||
default_backend http_back | |||
backend http_back | |||
balance roundrobin | |||
server server_name1 private_ip1:80 check | |||
server server_name2 private_ip2:80 check | |||
Данный параметр делает следующее: | |||
*создает фронтенд {{path|http_front}} и бэкенд {{path|http_back}} | |||
*на данном порту будет страница статистики с адресом {{path|/haproxy?stats}} | |||
*при входе на адрес с портом :80 выбирается бэкенд {{path|http_back}} | |||
**у http_back тип баланса: {{path|Roundrobin}} (какие есть, см. ниже) | |||
**описываются два сервера с их именами и адресами | |||
*По адресу IP/haproxy?stats будет доступна статистика (в открытом виде) | |||
При переходе на адрес сервера с портом 80 пользователь будет автоматически перенаправлен на один из указанных серверов в бекенде http_back. | |||
===Типы баланса=== | |||
*'''Roundrobin''': каждый сервер используется по очереди в соответствии со своим весом. Это самый плавный и честный алгоритм, когда время обработки серверами остается равномерно распределенным. Этот алгоритм является динамическим, что позволяет регулировать вес сервера на лету. | |||
*'''Leastconn''': выбирается сервер с наименьшим количеством соединений. Циклический перебор выполняется между серверами с одинаковой нагрузкой. Использование этого алгоритма рекомендуется для длинных сеансов, таких как LDAP, SQL, TSE и т. д., но он не очень подходит для коротких сеансов, таких как HTTP. | |||
*'''First''': первый сервер с доступными слотами для подключения получает соединение. Серверы выбираются от самого низкого числового идентификатора до самого высокого, который по умолчанию соответствует положению сервера в ферме. Как только сервер достигает значения maxconn, используется следующий сервер. | |||
*'''Source''': IP-адрес источника хешируется и делится на общий вес запущенных серверов, чтобы определить, какой сервер будет получать запрос. Таким образом, один и тот же IP-адрес клиента будет всегда доставаться одному и тому же серверу, в то время как серверы остаются неизменными. | |||
===Защита страницы статистики с помощью пароля=== | |||
Чтобы скрыть страницу статистики из публичного доступа, можно установить пароль. Делается это добавлением следующего кода в конфигурационный файл: | |||
listen stats | |||
bind *:8181 | |||
stats enable | |||
stats uri / | |||
stats realm Haproxy\ Statistics | |||
stats auth username:password | |||
Мы ей назначили собственный номер порта (:8181) и логин-пароль. Замените username и password на что-нибудь безопасное. | |||
[[Категория:EnterpriseApps]] | [[Категория:EnterpriseApps]] |
Текущая версия от 11:09, 17 ноября 2023
HAProxy | |
---|---|
Появился в: | 2001 |
Оф. сайт: | haproxy.org |
Репозиторий ALT Linux | haproxy |
Лицензия: | GNU GPL v2 |
HAProxy — серверное программное обеспечение для обеспечения высокой доступности и балансировки нагрузки для TCP- и HTTP-приложений посредством распределения входящих запросов на несколько обслуживающих серверов.
Установка
$ su - # apt-get install haproxy # systemctl enable --now haproxy.service
Каталоги и файлы Haproxy
- /etc/haproxy/conf.d - каталог с настройками (по-умолчанию пустой)
- /etc/haproxy/haproxy.cfg - конфигурационный файл
/etc/logrotate.d/haproxy- /etc/sysconfig/haproxy - настройки службы haproxy
Настройка
Настройка HAProxy — довольно простой процесс. По сути, всё, что вам нужно сделать, это сообщить HAProxy, какие соединения он должен прослушивать и куда следует их ретранслировать.
Это делается путем создания файла конфигурации /etc/haproxy/haproxy.cfg с определяющими настройками.
Добавьте в конец файла два раздела - frontend %name% и backend %name% - %name% - замените на свои имена.
Например на http_front и http_back.
frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_back backend http_back balance roundrobin server server_name1 private_ip1:80 check server server_name2 private_ip2:80 check
Данный параметр делает следующее:
- создает фронтенд http_front и бэкенд http_back
- на данном порту будет страница статистики с адресом /haproxy?stats
- при входе на адрес с портом :80 выбирается бэкенд http_back
- у http_back тип баланса: Roundrobin (какие есть, см. ниже)
- описываются два сервера с их именами и адресами
- По адресу IP/haproxy?stats будет доступна статистика (в открытом виде)
При переходе на адрес сервера с портом 80 пользователь будет автоматически перенаправлен на один из указанных серверов в бекенде http_back.
Типы баланса
- Roundrobin: каждый сервер используется по очереди в соответствии со своим весом. Это самый плавный и честный алгоритм, когда время обработки серверами остается равномерно распределенным. Этот алгоритм является динамическим, что позволяет регулировать вес сервера на лету.
- Leastconn: выбирается сервер с наименьшим количеством соединений. Циклический перебор выполняется между серверами с одинаковой нагрузкой. Использование этого алгоритма рекомендуется для длинных сеансов, таких как LDAP, SQL, TSE и т. д., но он не очень подходит для коротких сеансов, таких как HTTP.
- First: первый сервер с доступными слотами для подключения получает соединение. Серверы выбираются от самого низкого числового идентификатора до самого высокого, который по умолчанию соответствует положению сервера в ферме. Как только сервер достигает значения maxconn, используется следующий сервер.
- Source: IP-адрес источника хешируется и делится на общий вес запущенных серверов, чтобы определить, какой сервер будет получать запрос. Таким образом, один и тот же IP-адрес клиента будет всегда доставаться одному и тому же серверу, в то время как серверы остаются неизменными.
Защита страницы статистики с помощью пароля
Чтобы скрыть страницу статистики из публичного доступа, можно установить пароль. Делается это добавлением следующего кода в конфигурационный файл:
listen stats bind *:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth username:password
Мы ей назначили собственный номер порта (:8181) и логин-пароль. Замените username и password на что-нибудь безопасное.