2.5.4.2 Настройка высокодоступного прокси-сервера HAProxy
Скачать документ Предварительная настройка
Отключение SELinux
Базовая настройка HAProxy
Настройка веб-серверов
Настройка сервера nginx
Настройка сервера apache2 (httpd)
Проверка работоспособности HAProxy
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Сервер графический, сервер минимальный
- Версия ПО: haproxy-2.6.11-2
HAProxy – программное обеспечение с открытым исходным кодом, которое обеспечивает высокодоступный балансировщик нагрузки и прокси-сервер для приложений на основе TCP и HTTP, распределяющих запросы между несколькими серверами.
Предварительная настройка
Дальнейшая настройка должна выполняться с правами администратора системы (sudo) или суперпользователя root (su), если не указано иное. В текущей инструкции команды будут выполнены с правами суперпользователя root. Для перехода в сеанс суперпользователя выполните:
su -
Перед настройкой на всех машинах необходимо установить последние обновления:
dnf update
Отключение SELinux
На время установки и настройки HAProxy необходимо переключить SELinux в режим уведомлений.
Для этого в файле конфигурации /etc/selinux/config замените режим enforcing
на permissive
командой:
sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config
Для применения изменений перезапустите систему.
Статус службы SELinux можно просмотреть командой:
sestatus
Базовая настройка HAProxy
Для установки HAProxy выполните команду:
dnf install haproxy
После установки HAProxy будет автоматически запущена служба haproxy. Для проверки статуса службы выполните команду:
systemctl status haproxy
В статусе должно отображаться active (running).
Для автоматического запуска службы после перезагрузки сервера выполните команду:
systemctl enable haproxy
Перед началом настройки рекомендуется создать резервную копию файла конфигурации:
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
Для настройки откройте конфигурационный файл HAProxy:
nano /etc/haproxy/haproxy.cfg
Файл конфигураций состоит из следующих секций:
global
– содержит системные настройки и отвечает за более гибкую настройку производительности и безопасности;defaults
– стандартные настройки, которые должны работать без дополнительных изменений. Также здесь находятся настройки времени ожидания и отчетов ошибок;frontend
– настройки frontend-сервера, на котором установлен haproxy;backend
– информация о backend-серверах и режиме балансировки;listen
– дополнительные настройки, позволяющие включить мониторинг статистики.
Выбор режимов балансировки:
roundrobin — режим, при котором HAProxy выбирает сервера по очереди, равномерно распределяя нагрузку;
leastconn — в этом режиме запросы направляются к серверу, у которого меньше всего подключений, рекомендуется использовать для долгих сессий;
source — режим выбирает сервер на основе хэша источника IP-адреса, с которого клиенты отправляют запросы, это гарантирует, что одни и те же пользователи используют один и тот же сервер.
Добавьте в секцию frontend
следующее содержимое:
frontend haproxy # имя фронтенда
bind 192.168.1.1:80 # IP-адрес сервера с HAproxy
stats uri /haproxy?stats # адрес веб-интерфейса мониторинга
default_backend webservers # имя нужного бэкенда
В секцию backend
добавьте следующее содержимое:
backend webservers # имя бэкэнда
balance roundrobin # режим балансировки
server web1.example.com 192.168.1.2:80 # имя и адрес веб-серверов
server web2.example.com 192.168.1.3:80
Для включения статистики в секцию listen
добавьте:
listen stats
bind *:8080
stats enable
stats uri /
stats refresh 5s
stats realm Haproxy\ Stats
stats auth Login:Password #логин и пароль для подключения к веб-интерфейсу мониторинга
После сохранения изменений в файле конфигурации проверьте корректность файла, выполнив команду:
haproxy -f /etc/haproxy/haproxy.cfg -c
Если все настроено правильно, ответ должен выглядеть следующим образом:
Configuration file is valid
Для применения внесенных изменений перезапустите службу:
systemctl restart haproxy
Если DNS-сервер не настроен, необходимо прописать веб-сервера в файл /etc/hosts:
192.168.1.1 haproxy 192.168.1.2 web1.example.com 192.168.1.3 web2.example.com
Настройка веб-серверов
В рамках данной статьи для проверки работы haproxy будет рассмотрена настройка двух серверов – nginx и apache2 (httpd).
Настройка сервера nginx
Для установки nginx выполните команду:
dnf install nginx
Запустите службу nginx и добавьте ее в автозагрузку:
systemctl enable nginx --now
Проверьте статус службы:
systemctl status nginx
В статусе должно отображаться active (running).
Для настройки сервера откройте файл конфигурации nginx.conf:
nano /etc/nginx/nginx.conf
В секцию server
добавьте следующее содержимое:
server_name web1.example.com; # укажите имя веб-сервера или IP-адрес
Выполните проверку настроек nginx:
nginx -t
Если файл конфигурации настроек верно, вывод должен иметь вид:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Для применения конфигурации перезапустите веб-сервер:
systemctl restart nginx
Настройка сервера apache2 (httpd)
Для установки apache2 (httpd) выполните команду:
dnf install httpd
Запустите службу httpd и добавьте ее в автозагрузку:
systemctl enable httpd --now
Проверьте статус службы:
systemctl status httpd
В статусе должно отображаться active (running).
Для настройки сервера откройте файл конфигурации httpd.conf:
nano /etc/httpd/conf/httpd.conf
В секцию 'Main' server configuration
добавьте следующее содержимое:
servername web1.example.com # укажите имя веб-сервера или IP-адрес
Для применения конфигурации перезапустите службу:
systemctl restart httpd
Проверка работоспособности HAProxy
Ранее был настроен сбор статистики для HAProxy. Для доступа к просмотру собранной статистики откройте браузер и в адресной строке введите <IP-адрес_HAProxy>/haproxy?stats.
Если сервер в списке подсвечен зеленым цветом, значит настройка была произведена корректно.
Если серверы подсвечены красным цветом, значит настройка была выполнена неверно либо сервер не включен. Также в статистике отображено, что весь трафик уходит на единственный рабочий сервер.
При правильной работе в режиме roundrobin трафик распределяется равномерно:
Дата последнего изменения: 06.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.