HAProxy - это TCP/HTTP Load Balancer. Программа написанная на C предназначенная для обеспечения высокой доступности и балансировки нагрузки для TCP и HTTP-приложений. Благодаря распределения входящих запросов на несколько обслуживающих серверов.
Данное решение перераспределяет запросы между сервером и его нодами, по средствам балансировки по определенным правилам, указанным в файле конфигурации haproxy.cfg.
Приступим к его установке на Debian:
sudo apt-get install haproxy
После установки можем проверить версию:
haproxy -v HA-Proxy version 1.8.19-1 2019/02/12 Copyright 2000-2019 Willy Tarreau <willy@haproxy.org>
Проверяем статус:
systemctl status haproxy ● haproxy.service - HAProxy Load Balancer Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-10-23 11:06:03 +05; 1min 2s ago Docs: man:haproxy(1) file:/usr/share/doc/haproxy/configuration.txt.gz Main PID: 1865 (haproxy) Tasks: 2 (limit: 2329) Memory: 1.8M CGroup: /system.slice/haproxy.service ├─1865 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid └─1866 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid окт 23 11:06:03 debi systemd[1]: Starting HAProxy Load Balancer... окт 23 11:06:03 debi systemd[1]: Started HAProxy Load Balancer.
Для настройки конфигурации переходим в следующий каталог:
cd /etc/haproxy/ ls -la итого 24 drwxr-xr-x 3 root root 4096 окт 23 11:05 . drwxr-xr-x 127 root root 12288 окт 23 11:06 .. drwxr-xr-x 2 root root 4096 окт 23 11:05 errors -rw-r--r-- 1 root root 1276 янв 3 2019 haproxy.cfg
Перед тем как начать заполнять файл конфигурации, отвлечемся к структуре, что мы хотим получить:
* У вас на портах могут висеть сервисы или страницы. Так как мы просто тестируем, у нас есть только Jenkins на одной из нод. Тем не менее, принцип работы мы сможем показать ниже.
Открываем для редактирования файл конфигурации:
nano haproxy.cfg
Файл будет выглядеть следующим образом(сокращенный вариант):
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy ... errorfile 504 /etc/haproxy/errors/504.http
Заполняем файл, после основного текста (дополняем снизу)
#--------------------------------------------------- frontend my_http_front bind *:80 default_backend my_httpd_back frontend my_privat_front bind *:8080 default_backend my_privat_back backend my_httpd_back balance roundrobin server myweb_1 192.168.0.20:80 server myweb_2 192.168.0.40:80 backend my_privat_back server privatweb_1 192.168.0.30:8080
Если мы хотим распределить перенаправление, дополняем weight:
... server myweb_1 192.168.0.20:80 weight 70 server myweb_2 192.168.0.40:80 weight 30 ...
Пояснение:
Разберем наш код
Главный сервер IP 192.168.0.10 на котором стоит HaProxy, будет смотреть на файл конфигурации. Там мы указали:
Теперь рассмотрим подробнее. На сервере с HAProxy ничего нет, на портах 80 и 8080. Заходим на сервер по адресу: 192.168.0.10:80
Заходим на по адресу: 192.168.0.10:8080
Как мы видим, HaProxy производит перенаправление, при этом сам адрес остается прежним. Но физический клиент перенаправлен на подчиненный нода-сервер.
Основные команды:
Запуск:
Удаление:
Всем спасибо за внимание!
Источник: http://linuxsql.ru