Введение
HAProxy — это бесплатное программное обеспечение с открытым исходным кодом, которое обеспечивает высокодоступный балансировщик нагрузки и прокси-сервер для приложений на основе TCP и HTTP. Он особенно подходит для веб-сайтов с высоким трафиком и поддерживает большое количество самых посещаемых сайтов в мире. Настройка HAProxy в CentOS/RHEL (Red Hat Enterprise Linux) может улучшить вашу сетевую инфраструктуру за счет повышения ее производительности и надежности.
Это руководство проведет вас через шаги, необходимые для установки и настройки HAProxy в CentOS/RHEL 9/8.
Предварительные условия
- Сервер CentOS/RHEL 9/8.
- Пользователь без полномочий root с привилегиями sudo
Шаг 1. Обновите свою систему
Перед установкой каких-либо пакетов рекомендуется обновить индекс пакетов вашей системы. Это гарантирует наличие последних обновлений и исправлений безопасности.
sudo dnf update
Шаг 2. Установите HAProxy
HAProxy доступен в репозиториях CentOS/RHEL по умолчанию. Установите его с помощью следующей команды:
sudo dnf install haproxy
Шаг 3. Настройте HAProxy
После установки следующим шагом будет настройка HAProxy в соответствии с вашими потребностями. Основной файл конфигурации HAProxy — /etc/haproxy/haproxy.cfg
. Вам нужно будет изменить этот файл в соответствии с вашей конфигурацией. Используйте текстовый редактор, например nano или vim, для редактирования файла:
sudo nano /etc/haproxy/haproxy.cfg
Базовая конфигурация
Ниже приведен базовый пример конфигурации, который настраивает HAProxy в качестве балансировщика нагрузки для двух веб-серверов:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Update to use only TLS 1.3 and TLS 1.2
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
ssl-default-bind-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http-in
bind *:80
# Enable TLS 1.3 and TLS 1.2 on HTTPS connections
bind *:443 ssl crt /etc/haproxy/certs/example.com.pem alpn h2,http/1.1
redirect scheme https if!{ ssl_fc }
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i.jpg.gif.png.css.js
use_backend static if url_static
default_backend app
backend static
balance roundrobin
server static1 192.168.1.101:80 check
server static2 192.168.1.102:80 check
backend app
balance roundrobin
cookie SERVERID insert indirect nocache
server app1 192.168.1.103:80 check cookie app1
server app2 192.168.1.104:80 check cookie app2
listen stats
bind *:8080
stats enable
stats uri /haproxy?stats
stats hide-version
stats auth admin:admin
Эта конфигурация сообщает HAProxy прослушивать порт 80 на предмет входящего HTTP-трафика (интерфейс http_front) и балансировать нагрузку между двумя внутренними серверами (серверная часть http_back) с использованием алгоритма циклического перебора.
Строка stats uri /haproxy?stats включает страницу статистики по URL-адресу /haproxy?stats
, где вы можете просмотреть полезную статистику о сервере HAProxy.
Сохранить и выйти
После того, как вы настроили HAProxy по своему вкусу, сохраните файл и выйдите из текстового редактора.
Шаг 4. Включите и запустите HAProxy.
После настройки HAProxy следующим шагом будет включить его запуск при загрузке, а затем немедленно запустить службу:
sudo systemctl enable haproxy
sudo systemctl start haproxy
Чтобы убедиться, что HAProxy работает, вы можете проверить его статус с помощью:
sudo systemctl status haproxy
Шаг 5. Измените настройки брандмауэра
Если у вас включен брандмауэр, вам нужно будет разрешить трафик через порт, который прослушивает HAProxy. Например, чтобы разрешить трафик через порт 80, вы можете использовать:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
Заключение
Вы успешно установили и настроили HAProxy на своем сервере CentOS/RHEL 9/8. HAProxy теперь настроен для распределения входящего сетевого трафика на внутренние серверы, что повышает надежность и производительность вашего приложения. Не забывайте регулярно проверять страницу статистики HAProxy, чтобы отслеживать ее производительность и вносить необходимые изменения.