Что такое HAproxy. Настройка

HAproxy — это бесплатный и открытый программный пакет, который обеспечивает высокую доступность и балансировку нагрузки для программ, работающих на основе протоколов TCP и HTTP. Он распределяет нагрузку между различными веб-серверами и серверами приложений. HAproxy является популярным выбором среди пользователей Linux, так как он доступен практически для всех дистрибутивов этой операционной системы. Благодаря своей эффективности, надежности и низким требованиям к ресурсам, HAproxy стал одним из самых популярных балансировщиков нагрузки в мире.

Мы будем использовать три сервера Ubuntu; все в одной сети. Подробная информация о наших серверах:

Hostname: HAproxy, IP address: 192.168.1.150 (Frontend server)
Hostname: web-server1, IP address: 192.168.1.151 (Backend servers)
Hostname: web-server2, IP address: 192.168.1.152 (Backend servers)

Мы установим HAproxy на одну машину, которая будет работать как балансировщик нагрузки. Эта машина будет принимать запросы от пользователей и перенаправлять их на два других сервера, которые будут выполнять функции веб-серверов. Веб-серверы будут обрабатывать полученные запросы и предоставлять пользователям необходимую информацию. Таким образом, мы создадим систему, где HAproxy будет играть роль внешнего сервера, распределяющего нагрузку между двумя внутренними серверами.

Настройка веб-серверов — Backend-серверы

В этом разделе мы настроим два веб-сервера ( web1 и web2 ) в качестве наших внутренних серверов.

На веб-сервере1 (192.168.1.151)

Выполните следующие шаги на своем веб-сервере. Обязательно замените имена хостов и IP-адреса соответствующими IP-адресами и именами хостов ваших веб-серверов.

1. Настройте файл hosts

На веб-сервере1 отредактируйте файл /etc/hosts :

$ sudo nano /etc/hosts

Затем добавьте запись имени хоста для сервера HAproxy следующим образом:

hostname-of-HAproxy IP-address-of-HAproxy

В нашем сценарии это будет:

HAproxy 192.168.1.150

2. Настройте веб-сервер Apache.

Теперь установите веб-сервер Apache:

$ sudo apt install apache2

Затем включите и запустите службу Apache:

$ sudo systemctl enable apache2 
$ sudo systemctl start apache2

Создайте индексный файл для web-server1:

$ echo "<H1>Hello! This is webserver1: 192.168.1.151 </H1>" | sudo tee /var/www/html/index.html

Если в вашей системе работает брандмауэр, вам необходимо разрешить трафик Apache через него:

$ sudo ufw allow 80/tcp

Затем перезагрузите конфигурации брандмауэра:

$ ufw reload

Теперь попробуйте получить доступ к сайту в своем веб-браузере, набрав http://, а затем либо IP-адрес, либо имя хоста вашего веб-сервера.

http:// hostname-or-IP-address

Можно использовать команду curl для тестирования веб-страницы.

$ curl <hostname-or-IP-address>

Для второго сервера конфигурация аналогична.


Настройка балансировщика нагрузки HAproxy-Frontend server

На сервере HAproxy 192.168.1.150 выполните следующие шаги для настройки балансировщика нагрузки.

1. Настройте файл hosts

Отредактируйте файл / etc / hosts, используя следующую команду в Терминале:

$ sudo nano / etc / hosts

Добавьте следующие записи имени хоста для обоих веб-серверов Apache вместе с собственным именем хоста :

192.168.1.150 HAproxy
192.168.1.151 web1
192.168.1.152 web2

Сохраните и закройте файл /etc/hosts.

Установка балансировщика нагрузки HAproxy

Теперь на этом этапе мы будем устанавливать HAproxy на один из наших серверов Ubuntu (192.168.1.150).

$ sudo apt-get update

Обновим пакеты:

$ sudo apt-get upgrade

Установим Haproxy

$ sudo sudo apt install haproxy

После завершения установки сервера HAproxy посмотрим версию:

$ haproxy -v

Настройка HAproxy в качестве балансировщика нагрузки

Для этого отредактируйте файл /etc/haproxy/haproxy.cfg :

$ sudo nano /etc/haproxy/haproxy.cfg

Добавьте следующие строки в файл haproxy.cfg, заменив IP-адреса вашими собственными IP-адресами.

Интерфейс веб-интерфейс в приведенной выше строках конфигурации говорит HAproxy для прослушивания входящих запросов на порт 80 из 192.168.1.150 , а затем направляет их серверные сервера , сконфигурированных в соответствии с серверной веб-интерфейсом. Во время настройки замените IP-адреса соответствующими IP-адресами ваших веб-серверов.

Настройка мониторинга HAproxy

С помощью мониторинга HAproxy вы можете просматривать множество информации, включая статус сервера, передаваемые данные, время безотказной работы, скорость сеанса и т.д. Чтобы настроить мониторинг HAproxy, добавьте следующие строки в файл конфигурации, расположенный по адресу /etc/haproxy/haproxy.cfg :

listen stats
bind 192.168.72.157:8080
mode http
option forwardfor
option httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats
stats realm Haproxy\ Statistics
stats auth kbuzdar:kbuzdar            #Login User and Password for the monitoring
stats admin if TRUE
default_backend web-backend

Приведенная выше конфигурация включает страницу « статистики » HAproxy с помощью директивы stats и защищает ее с помощью базовой аутентификации http с использованием имени пользователя и пароля, определенных директивой stats auth .

По завершении настройки сохраните и закройте файл haproxy.cfg.

Проверьте файл конфигурации:

$ haproxy -c -f /etc/haproxy/haproxy.cfg

Чтобы применить настройки, перезапустите службу HAproxy:

$ sudo systemctl restart haproxy.service

Он остановит, а затем запустит службу HAproxy.

Чтобы проверить статус службы HAproxy:

$ sudo systemctl status haproxy.service

Чтобы запустить сервер HAproxy, команда должна быть такой:

$ sudo systemctl start haproxy.service

Чтобы остановить сервер HAproxy, используйте следующую команду:

$ sudo systemctl stop haproxy.service

Если вы хотите временно отключить сервер HAproxy, используйте следующую команду:

$ sudo systemctl disable haproxy.service

Чтобы повторно включить сервер HAproxy, введите следующую команду:

$ sudo systemctl enable haproxy.service

Тестирование мониторинга HAproxy
Чтобы получить доступ к странице мониторинга HAproxy, введите http: //, а затем IP-адрес/имя хоста сервера HAproxy и порт 8080 / stats:

http://192.168.1.150:8080/stats

или же

http://HAproxy:8080/stats

Появится следующее окно аутентификации. Введите имя пользователя и пароль, которые вы настроили ранее в конфигурациях, а затем нажмите OK .