Как установить HAProxy на CentOS 8

Как установить HAProxy на CentOS 8

 

В этом руководстве мы покажем вам, как установить HAProxy на вашем CentOS 8. Для тех из вас, кто не знал, HAProxy — это бесплатный балансировщик нагрузки HTTP / TCP и прокси-сервер с высокой доступностью. Он распределяет запросы между несколькими серверами для устранения проблем, возникающих в результате сбоя одного сервера. HA Proxy используется рядом известных веб-сайтов, включая GitHub, Bitbucket, Stack Overflow, Reddit, Tumblr, Twitter и Tuenti, а также в продукте OpsWorks от Amazon Web Services.

В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить ‘ sudo‘ к командам для получения привилегий root. Я покажу вам пошаговую установку HAProxy на CentOS 8.

Установите HAProxy на CentOS 8

Шаг 1. Во-первых, давайте начнем с проверки актуальности вашей системы.

sudo clean all
sudo dnf update

Шаг 2. Установка HAProxy на CentOS 8.

HAProxy доступен в CentOS 8 по умолчанию. Теперь используйте следующую dnfкоманду для установки HAProxy:

sudo dnf install haproxy

Шаг 3. Настройка HAProxy.

Мы собираемся создать файл конфигурации, содержащий необходимые настройки и конфигурации:/etc/haproxy/haproxy.cfg

sudo nano /etc/haproxy/haproxy.cfg

Введите в файл следующее:

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
frontend main
    bind *:5000
    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      static 127.0.0.1:4331 check
backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

Вы можете просмотреть подробные сведения о конфигурации и получить дополнительную информацию по этому URL-адресу . После того, как вы настроили HAProxy, самое время запустить службу:

sudo systemctl start haproxy
sudo systemctl enable haproxy

Шаг 4. Настройте брандмауэр.

Мы добавим HAProxy в брандмауэр CentOS 8 и обновим правила с помощью следующих команд:

sudo firewall-cmd --add-port=8088/tcp --permanent
sudo firewall-cmd --reload

Шаг 5. Настройте ведение журнала HAProxy.

Чтобы настроить стандартное ведение журнала HAProxy, отредактируйте и включите прием системного журнала UDP на порту 514:/etc/rsyslog.conf

sudo nano /etc/rsyslog.conf
...
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
...
*.info;mail.none;authpriv.none;cron.none,local2.none /var/log/messages
local2.* /var/log/haproxy.log
...

Затем сохраните файл конфигурации и выполните команду ниже, чтобы проверить наличие ошибок:

rsyslogd -N1
sudo systemctl restart rsyslog haproxy

Шаг 6. Настройте Apache X-Forwarded-For Logging на внутренних серверах.

Теперь мы авторизуемся на внутренних серверах и настраиваем Apache для регистрации заголовков X-Forwarded-For. Строка по умолчанию, которую мы изменяем:

...
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...

Отредактируйте эту строку так, чтобы она выглядела так:

...
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...

Сохраните файл и перезапустите Apache:

apachectl configtest
sudo systemctl restart httpd

Шаг 7. Тестирование HAProxy Load Balancer.

Чтобы убедиться, что HAProxy может балансировать нагрузку HTTP-запросов, перейдите в браузер и получите доступ к HAProxy, используя имя хоста или IP-адрес.

Поздравляю! Вы успешно установили HAProxy . Благодарим за использование этого руководства для установки HAProxy в ваших системах CentOS 8. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт HAProxy .