Как настроить HAProxy на CentOS RHEL 9 и 8

5 feb 2024 3 min di lettura
Как настроить HAProxy на CentOS RHEL 9 и 8
Indice dei contenuti

Введение

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, чтобы отслеживать ее производительность и вносить необходимые изменения.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.