HAProxy (High Availability Proxy) — это бесплатное ПО для балансировки нагрузки и проксирования с открытым исходным кодом, предназначенное для упрощения и защиты современной архитектуры приложений. Оно позволяет веб-серверу распределять входящие запросы по нескольким конечным точкам. Это очень полезно, когда слишком много одновременных подключений нагружают один сервер. HAProxy очень популярный инструмент, благодаря своей эффективности, надежности, а также маленькой утилизации оперативной памяти и процессорного времени.

В этой статье, рассмотрим процесс установки HAProxy на Ubuntu 23.04

Что нужно.

  • Сервер Ubuntu 23.04 для установки на него HAProxy
  • Два сервера на Ubuntu 23.04 для Apache. (Backend)
  • root права на всех серверах.

Настройка Apache в качестве backend.

Во-первых, вам нужно будет настроить два веб-сервера Apache в качестве backend части. Устанавливать Apache будем из стандартного репозитория. Для этого выполним, на обоих серверах apache, следующую команду:

//На первом сервере
root@apache1:~# apt-get install apache2 -y
//На втором сервере
root@apache2:~# apt-get install apache2 -y

После установки, создадим образец главной страницы для apache:

//Для первого сервера
root@apache1:~# echo "<H1>Это мой первый apache сервер</H1>" | tee /var/www/html/index.html
//Для второго сервера
root@apache2:~# echo "<H1>Это мой второй apache сервер</H1>" | tee /var/www/html/index.html

На этом с apache, пожалуй, пока хватит. Перейдем к установке HAProxy

Установка HAProxy

По умолчанию HAProxy включен в репозиторий Ubuntu 23.04. Установим его, выполнив следующую команду:

root@haproxy:~# apt-get install haproxy -y

После установки HAProxy запустим службу HAProxy и добавим ее в автозагрузку:

root@haproxy:~# systemctl start haproxy
root@haproxy:~# systemctl enable haproxy
Synchronizing state of haproxy.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable haproxy

С установкой закончили, приступим к конфигурации.

Конфигурирование HAProxy.

У нас HAProxy установлен и работает. Теперь необходимо отредактировать файл конфигурации /etc/haproxy/haproxy.cfg, используемый по умолчанию и определить внутренние серверы. Откроем этот файл в любом удобном текстовом редакторе. Обычно в нем уже есть два раздела global и defaults. Их трогать не будем, что какой параметр означает можете прочитать в документации. Добавим в него два других раздела для frontend и backend.

frontend apache_front
        # Порт на котором будет доступен frontend - 80
        bind *:80
        # Backend, используемый по умолчанию: apache
        default_backend    apache_backend_servers
        # Отправка заголовка XFF
        option             forwardfor
  
# Определение backend
backend apache_backend_servers                                                                                                                     
        # Использовать алгоритм балансировки roundrobin
        # Каждый сервер используется по очереди, в соответствии со своим весом
        balance            roundrobin
        # Определение серверов для backend'а, необходимо указать имя хоста и ip наших двух apache
        server             apache1 ip_apache1:80 check
        server             apache2 ip_apache2:80 check

Сохраняем и закрываем наш конфиг. После этого перезапустим сервис HAProxy для применения настроек.

root@haproxy:~# systemctl restart haproxy

И проверим работоспособность, должен получится примерно вот такой вывод

root@haproxy:~# systemctl status haproxy
 haproxy.service - HAProxy Load Balancer
     Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; preset: enabled)
     Active: active (running) since Tue 2023-09-05 18:43:43 UTC; 16s ago
       Docs: man:haproxy(1)
             file:/usr/share/doc/haproxy/configuration.txt.gz
   Main PID: 2633 (haproxy)
      Tasks: 2 (limit: 1097)
     Memory: 39.4M
        CPU: 244ms
     CGroup: /system.slice/haproxy.service
             ├─2633 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
             └─2635 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock

Проверим работу HAProxy.

На этом этапе HAProxy настроен и работает. Теперь пришло время проверить, работает ли HAProxy или нет.

Откройте веб-браузер и введите URL-адрес http://ip_вашего_haproxy. Вы увидите, что HAProxy отправляет запросы на внутренние серверы один за другим после каждого обновления.

Теперь обновим страницу, получим запрос к другому серверу

Заключение.

В этой статье рассмотрели, как установить и настроить сервер HAProxy для распределения нагрузки между двумя веб-серверами Apache в Ubuntu 23.04. Теперь можете внедрить HAProxy в своей производственной среде, чтобы повысить производительность и доступность вашего веб-сайта или приложения.

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