Как установить и настроить HAproxy в Ubuntu 20.04 LTS

Как работает прокси-сервер

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

Мы установили три машины. Мы установим HAproxy на одном сервере и веб-серверы Apache на двух серверах. Затем наш сервер HAproxy будет действовать как балансировщик нагрузки и распределять нагрузку между веб-серверами Apache.

Примечание. Процедура и команды, упомянутые в этом посте, были протестированы на Ubuntu 20.04 LTS (Focal Fossa). Та же процедура действительна для дистрибутивов Debian и Mint.

Сведения о сети

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

Hostname: HAproxy, IP address: 192.168.72.157 (Frontend server)
Hostname: web-server1, IP address: 192.168.72.158 (Backend servers)
Hostname: web-server2, IP address: 192.168.72.159 (Backend servers)

Примечание. У вас должны быть права sudo на всех серверах.

Мы настроим одну машину как балансировщик нагрузки, а две другие как веб-серверы. Сервер HAproxy будет нашим внешним сервером, который будет получать запросы от пользователей и пересылать их на два веб-сервера. Веб-серверы будут нашими внутренними серверами, которые будут получать эти перенаправленные запросы.

Вот как выглядит наша установка:

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

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

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

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

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

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

$ sudo nano /etc/hosts

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

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

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

HAproxy 192.168.72.157

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.72.158 </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>

На веб-сервере-2 192.168.72.159

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

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

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

$ sudo nano /etc/hosts

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

HAproxy 192.168.72.157

2. Установите веб-сервер Apache.

Теперь установите веб-сервер Apache, используя следующую команду в Терминале.

$ sudo apt install apache2

Затем включите и запустите службу Apache, используя следующие команды в Терминале:

$ sudo systemctl включить apache2 
$ sudo systemctl start apache2

Создайте индексный файл для web-server2, используя следующую команду в Терминале:

$ echo "<H1>Hello! This is webserver2: 192.168.72.159 </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>

Теперь наши веб-серверы Apache готовы.

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

В этом разделе мы настроим балансировщик нагрузки HAproxy для наших веб-серверов. Этот HAproxy-сервер будет действовать как внешний сервер и принимать входящие запросы от клиентов.

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

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

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

$ sudo nano / etc / hosts

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

192.168.72.157 HAproxy
192.168.72.158 web-server1
192.168.72.159 web-server2

Теперь сохраните и закройте файл /etc/hosts.

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

Теперь на этом этапе мы будем устанавливать HAproxy на один из наших серверов Ubuntu (192.168.72.157). Для этого обновите apt, используя следующую команду в Терминале:

$ sudo apt-get update

Затем обновите пакеты, используя следующую команду:

$ sudo apt-get upgrade

Теперь установите HAproxy, используя следующую команду в Терминале:

$ sudo sudo apt install haproxy

После завершения установки сервера HAproxy вы можете подтвердить это, используя следующую команду в Терминале:

$ haproxy -v

Он покажет вам установленную версию HAproxy в вашей системе, которая подтверждает, что HAproxy был успешно установлен.

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

В следующем разделе мы настроим HAproxy в качестве балансировщика нагрузки. Для этого отредактируйте файл /etc/haproxy/haproxy.cfg :

$ sudo nano /etc/haproxy/haproxy.cfg

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

Интерфейс веб-интерфейс в приведенной выше строках конфигурации говорит HAproxy для прослушивания входящих запросов на порт 80 из 192.168.72.157 , а затем направляет их серверные сервера , сконфигурированных в соответствии с серверной веб-интерфейсом. Во время настройки замените 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 включен и работает нормально.

Вот еще несколько команд для управления сервером HAproxy:

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

$ sudo systemctl start haproxy.service

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

$ sudo systemctl stop haproxy.service

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

$ sudo systemctl отключить haproxy.service

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

$ sudo systemctl включить haproxy.service

Тест HAproxy

Перед тестированием настройки HAproxy убедитесь, что у вас есть подключение к веб-серверам. С вашего HAproxy-сервера проверьте связь с обоими веб-серверами по их IP-адресам или именам хостов.

$ ping имя-хоста-или-IP-адрес

Следующие выходные данные показывают, что сервер HAproxy может подключаться к обоим веб-серверам.

Протестируйте прокси HA с помощью веб-браузера
Теперь на сервере HAproxy откройте любой веб-браузер и введите http: //, а затем IP-адрес сервера HAproxy, который в нашем случае 192.168.72.157.

http://192.168.72.157

В качестве альтернативы сервер HAproxy отправит запрос на оба веб-сервера в циклическом методе. Вы можете проверить это, перезагрузив веб-страницу несколько раз.

Вот ответ, который мы получили, когда впервые посетили http://192.168.72.157 :

Это ответ, который мы получили, когда перезагрузили веб-страницу:

Вы также можете использовать имя хоста вместо IP-адреса сервера HAproxy.

Протестируйте прокси HA с помощью curl

Вы также можете использовать команду curl в Linux для проверки настройки HAproxy. Откройте Терминал и введите curl, а затем IP-адрес или имя хоста сервера HAproxy.

$ curl 192.168.72.157

или же

$ curl HAproxy

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

Вместо того, чтобы запускать команды несколько раз, вы также можете запустить следующий однострочный сценарий для тестирования сервера HAproxy:

$ while true; do curl 192.168.72.157; sleep 1; done

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

http://192.168.72.157:8080/stats

или же

http://HAproxy:8080/stats

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

Это статистический отчет для нашего сервера HAproxy.

Здесь у вас есть установка и настройка балансировщика нагрузки HAproxy в системе Linux. Мы только что обсудили базовую настройку и конфигурацию HAproxy в качестве балансировщика нагрузки для веб-серверов Apache. Мы также рассмотрели некоторые команды для управления сервером HAproxy. В итоге мы протестировали балансировку нагрузки через браузер и команду curl. Для получения дополнительной информации посетите официальную документацию HAproxy.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.