Настройка haproxy centos 7

Обновлено: 04.07.2024

Несмотря на то, что инструкция применима для Linux CentOS, настройка HAProxy применима для других систем, например Ubuntu.

Установка

HAProxy присутствует в репозитории CentOS и может быть установлен командой:

yum install haproxy

Разрешим автозапуск сервиса и запустим его:

systemctl enable haproxy

systemctl start haproxy

На этом установка и запуск закончены.

Принцип настройки

Конфигурирование HAProxy выполняется в файле /etc/haproxy/haproxy.cfg. Все основные настройки находятся в 4-х секциях:

  1. global. Глобальные настройки, распространяемые на все публикации.
  2. defaults. Настройки, применяемые по умолчанию, если они не указаны явно в публикации.
  3. frontend. Правила обработки запросов, приходящих на сервер и передачи этих запросов серверам backend. Может быть несколько.
  4. backend. Настройка конечных серверов, которые обрабатывают запросы и возвращают результаты. Может быть несколько.

Также есть возможность создать дополнительные секции, например userlist.

Настройка frontend

При настройке прослушивания внешних запросов, основное, что мы указываем:

  • IP-адрес и порт прослушивания.
  • Правила, по которым обрабатываются запросы.
  • Группы серверов, на которые будет перекинут запрос.

acl url_stat path_end -i .css .js

use_backend static if url_stat
default_backend webserver

Настройка backend

При настройке указываем:

  1. Как распределяется нагрузка между серверами. Доступны варианты:
    • roundrobin — серверы используются по очереди. Нагрузка распространяется равномерно, в зависимости от указанного веса. Вес может быть изменен на лету.
    • static-rr — серверы используются по очереди. Нагрузка распространяется равномерно, в зависимости от указанного веса. Вес не может быть изменен на лету.
    • lessconn — запросы идут к серверу с наименьшим количеством активных подключений.
    • source — запросы от одного и того же IP-адреса идут на один и тот же сервер.
    • uri — запросы с одним и тем же URL (до знака вопроса) будут переправляться на один и тот же сервер.
    • url_param — запросы с одинаковыми параметрами GET (все, что после знака вопроса) будут переправляться на один и тот же сервер.
  2. На какие именно серверы передавать запросы.

backend webserver
balance roundrobin
server server1 192.168.0.20:80 check
server server2 192.168.0.30:80 check

* где webserver — название бэкэнда; balance — опция определения алгоритма распределения запросов между серверами; server — указывает имя и IP-адрес сервера, на который передается запрос; check — указываем, что необходимо проверять состояние сервера.
* для работы достаточно и одного сервера, но несколько добавят отказоустойчивости.

После внесения изменений в настройку HAProxy, необходимо перезапустить сервис:

systemctl restart haproxy

или просто перечитать настройки:

systemctl reload haproxy

Брандмауэр

firewall-cmd --permanent --add-port=80/tcp

firewall-cmd --permanent --add-port=443/tcp

Подробнее про настройку брандмауэра в Linux при помощи firewalld и iptables.

Примеры использования

Рассмотрим часто встречаемые варианты использования HAProxy.

2. Распределение запросов по весу (weight)

Если необходимо на определенный сервер отправлять больше запросов, можно применить weight при настройке бэкэнда:

backend weight-backend
.
server server1 192.168.0.20:80 weight 100
server server2 192.168.0.30:80 weight 80

* в данном примере запросы будут отправляться чаще на сервер server1.

3. Поддержка sticky session

backend sticky-backend
.
server server1 192.168.0.20:80 cookie check
server server2 192.168.0.30:80 cookie check

4. Защита паролем

Сделаем необходимость вводить пароль при подключении к серверу.

Сначала получим хэш пароля:

В конфиге haproxy создаем список пользователей (отдельная секция):

5. Распределение запросов по серверам с помощью url_reg

С помощью url_reg мы можем распределить запросы по группам серверов исходя из URL страницы.

Во frontend добавляем:

В работе url_reg и use_backend есть нюанс — Haproxy найдет все возможные acl для запросов, а перенаправит на тот use_backend, который первый встретится в конфигурации. Таким образом, если адрес страницы будет соответствовать нескольким acl, результат работы может быть непредсказуем. В этом случае, необходимо более частный acl ставить выше при описании use_backend.

backend serers1
server www1 192.168.0.20:80 check
server www2 192.168.0.30:80 check

backend serers2
server www3 192.168.0.40:80 check
server www4 192.168.0.50:80 check

Дополнительные настройки

Рассмотрим настройки, которые могут оказаться полезными.

Логирование

Открываем конфигурационный файл:

Проверяем наличие следующей строки в секции global:

global
.
log 127.0.0.1 local2

* при ее отсутствии, добавляем.

Создаем файл с настройками логов для haproxy:

systemctl restart rsyslog

Если мы используем Debian или Ubuntu, то также открываем конфигурационный файл rsyslog.conf:

Добавляем, если нет:

.
$ModLoad imudp
$UDPServerRun 514
.

По аналогии с keep-alive у NGINX и Apache. В новых версиях HAProxy настроено по умолчанию. В случае необходимости настройки таймаута, в секции defaults правим:

Favorite

Добавить в избранное

Главное меню » Операционная система CentOS » Балансировка нагрузки с HAProxy, Nginx и Keepalived в Linux (CentOS)

Настройка балансировщика нагрузки в Linux с помощью Nginx, HAProxy и Keepalived

Н аличие правильной настройки балансировщика нагрузки позволяет вашему веб-серверу надежно обрабатывать высокий трафик, а не обрушится. В этом руководстве мы рассмотрим, как настроить балансировщик нагрузки с высокой доступностью.

Что такое балансировка нагрузки?

Обработка трафика на одном сервере

В этом примере, если веб-сервер не работает, веб-запрос пользователя не может быть доступен в режиме реального времени. Кроме того, если число пользователей запрашивает одну и ту же веб-страницу одновременно, то обслуживание веб-запроса пользователя одним веб-сервером может быть медленным процессом. Следовательно, балансировщики нагрузки используются для повышения производительности сервера, обеспечения резервного копирования и предотвращения сбоев.

В этой статье мы собираемся настроить балансировщик нагрузки для веб-сервера с помощью Nginx, HAProxy и Keepalived. Ниже показан пример того, как выглядят серверы с балансировщиками нагрузки.

Балансировка нагрузки с HAProxy, Nginx и Keepalived в Linux

Использование балансировки нагрузки для эффективной обработки высокого трафика

Итак, что такое Nginx, Haproxy и Keepalived?

nginx

HAProxy

Функция Haproxy заключается в пересылке веб-запроса от конечного пользователя к одному из доступных веб-серверов. Он может использовать различные алгоритмы балансировки нагрузки как Round Robin, Least Connections и т. д.

Keepalived

Что делать, если haproxy балансировки нагрузки упадет?

Keepalived является программой с открытым исходным кодом, которая поддерживает балансировку нагрузки и высокую доступность. Это в основном программное обеспечение маршрутизации и обеспечивает два типа балансировки нагрузки:

  • Уровень 4 (транспортный уровень)
  • Уровень 7 (прикладной уровень)

Keepalived может выполнять следующие функции:

  • Проверка работоспособности (работают ли серверы или нет)
  • Реализует третий уровень (виртуальных избыточность протокола маршрутизации) для балансировки нагрузки, отказоустойчивости

Keepalived использования для VIP (виртуальный IP-адрес) как плавающий IP, который плавает между мастером балансировки нагрузки и резервного копирования балансировки нагрузки и используется для переключения между ними. Если главный балансировщик нагрузки отключается, то резервный балансировщик нагрузки используется для пересылки веб-запроса.

Давайте перейдем к моделированию того, как высокая доступность и балансировка нагрузки поддерживается для веб-серверов.

Настройка балансировщика нагрузки в Linux с помощью Nginx, HAProxy и Keepalived

Настройка балансировщика нагрузки в Linux с помощью Nginx, HAProxy и Keepalived

Это тестовый лабораторный эксперимент, означающий, что это просто тестовая установка, чтобы вы начали. Возможно, вам придется сделать некоторые настройки, если вы реализуете его на реальных серверах. Используйте этот учебник в качестве учебного материала, а не слепо следовать ему для вашей собственной установки.

Мы использовали CentOS в качестве дистрибутива Linux в этой статье. Вы можете использовать другие дистрибутивы Linux, но мы не можем гарантировать, что все команды (особенно установочные) будут работать в других дистрибутивах.

Требования к настройке подсистемы балансировки нагрузки

4 сервера с установленной системой CentOS (минимальная установка достаточно для этого учебника)

  • 2 CentOS для установки с nginx
  • 2 CentOS для настройки с HAProxy и Keepalived

В этом учебнике мы работали на следующими IP-адресами в качестве примера. Они могут быть изменены в соответствии с вашей системой. Не думайте, что это статические IP-адреса.

Шаг 1: Настройка веб-серверов с Nginx

В этой части мы будем использовать две системы CentOS в качестве веб-сервера. Сначала нужно установить Nginx на них.

Для этого добавьте репозиторий, содержащий nginx, и установите его оттуда:

После установки nginx запустите службу Nginx:

Включите службу nginx после каждой загрузки:

Проверка статуса сервиса nginx:

Разрешите веб-трафик в nginx, который по умолчанию блокируется брандмауэром CentOS.

Повторите описанные выше шаги и на веб-сервере второго CentOS.

Теперь обратите внимание на следующие шаги.

Веб-файлы для nginx находится в каталоге /usr/share/nginx/html. Изменение содержимого индекса.html-файл только для идентификации веб-серверов.

Для первого веб-сервера:

Для второго веб-сервера:

Если вы находитесь на виртуальной машине, лучше установить и настроить Nginx на одной системе, а затем клонировать систему. После этого можно перенастроить вторую систему. Экономит время и уменьшает число ошибок.

или в терминале, curl Local_IP_Address. Пример здесь:

Вы получите такой выход:

Балансировка нагрузки с HAProxy, Nginx и Keepalived в Linux

Шаг 2: Настройка балансировщиков нагрузки с HAProxy

В двух других системах для установки HAProxy используйте следующие команды:

Файл конфигурации HAProxy находится в каталоге /etc/haproxy. Перейдите в каталог и создайте резервную копию файла перед редактированием.

Создайте новый файл haproxy.cfg и откройте файл с помощью любого редактора, который Вам нравится.

Теперь вставьте следующие строки в файл:

Теперь включите и запустите службу HAProxy.

Проверка состояния HAProxy:

или в терминале, используйте команду $ curl LoadBalancer_IP_Address

curl два раза, и вы увидите различные выходы для команды curl. Это происходит из-за того, что ответ поступает от разных веб-серверов (по одному за раз), для вашего запроса в подсистеме балансировки нагрузки.

Выходные данные будут выглядеть следующим образом:

Балансировка нагрузки с HAProxy, Nginx и Keepalived в Linux

Шаг 3: Настройка высокой доступности с Keepalived

Keepalived должен быть установлен в обеих системах haproxy load balancer CentOS (которые мы только что настроили выше). Один действует как главный (основной балансировщик нагрузки), а другой действует как резервный балансировщик нагрузки.

В обеих системах выполните следующую команду:

Конфигурационный файл Keepalived находится на файле /etc/keepalived/keepalived.conf . Создайте резервную копию исходного файла поддержки.conf и используйте следующую конфигурацию в новом файле keepalived .conf.

Вставьте следующие строки в файл конфигурации (не забудьте изменить адреса электронной почты):

Виртуальные IP-адреса могут быть любым реальным IP внутри вашей сети. Около диапазона IP-адреса Loadbalancer. Здесь, IP балансировщика нагрузки являются: 10.13.211.194 & 10.13.211.120, и VIP является 10.13.211.10

Отредактируйте файл конфигурации в соответствии с системным предположением. Позаботьтесь о главной и резервной конфигурации. Сохраните файл и запустите и включите процесс Keepalived:

Просмотр состояния Keepalived:

Если вы находитесь на виртуальной машине, лучше установить и настроить Haproxy и Keepalived на одной системе, а затем клонировать систему. После этого можно перенастроить вторую систему. Это экономит время и уменьшает количество ошибок.

Теперь, чтобы проверить состояние балансировщика нагрузки высокой доступности, перейдите к терминалу и нажмите:

Нажмите ctrl+c , чтобы остановить запущенный терминал.

Выходные данные будут выглядеть следующим образом:

Балансировка нагрузки с HAProxy, Nginx и Keepalived в Linux

Мы надеемся, что этот учебник помог вам настроить балансировщик нагрузки в Linux с высокой доступностью. Конечно, это была простая настройка, но она определенно дает представление о балансировке нагрузки и обработке высокой доступности.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Балансировка нагрузки — это распространенное решение для горизонтального масштабирования веб-приложений по нескольким хостам с предоставлением пользователям единой точки доступа к сервису. HAProxy является одной из самых популярных программ для балансировки нагрузки с открытым исходным кодом, которая также обеспечивает высокую доступность и функциональность проксирования.

HAProxy стремится оптимизировать использование ресурсов, максимизировать пропускную способность, минимизировать время отклика и избежать перегрузки каждого отдельно взятого ресурса. Она может быть установлена на множестве дистрибутивов Linux, таких как CentOS 8, на котором мы остановимся в этом руководстве, а также в системах Debian 8 и Ubuntu 16.


HAProxy особенно подходит для веб-сайтов с очень высоким трафиком и поэтому часто используется для повышения надежности и производительности конфигураций веб-служб с несколькими серверами. В этом руководстве изложены шаги по настройке HAProxy в качестве балансировщика нагрузки на облачном хосте CentOS 8, который затем направляет трафик на ваши веб-серверы.

Установка HAProxy на CentOS 8

В силу того, что HAProxy — быстро развивающееся приложение с открытым исходным кодом, дистрибутив, доступный вам в стандартных репозиториях CentOS, может оказаться не самой последней версией. Чтобы узнать актуальную версию, выполните следующую команду:

HAProxy всегда предоставляет на выбор три стабильные версии: две самые последние поддерживаемые версии и третью, более старую, которая все еще получает критические обновления. Вы всегда можете проверить самую последнюю стабильную версию, указанную на сайте HAProxy, а затем решить, с какой версией вы хотите работать.

В этом руководстве мы будем устанавливать самую последнюю стабильную версию 2.0, которая еще не была доступна в стандартных репозиториях на момент написания руководства. Вам нужно будет установить ее из первоисточника. Но сначала проверьте, выполнены ли у вас необходимые условия для загрузки и компиляции программы.

Загрузите исходный код с помощью команды ниже. Вы можете проверить, существует ли более новая версия, доступная на странице загрузки HAProxy.

После завершения загрузки распакуйте файлы с помощью приведенной ниже команды:

Перейдите в распакованный каталог с исходниками:

Затем скомпилируйте программу под вашу систему:

И, наконец, установите саму HAProxy:

Теперь HAProxy установлена, но для ее работы требуются некоторые дополнительные манипуляции. Продолжим настройку программного обеспечения и сервисов ниже.

Настройка HAProxy под ваш сервер

Теперь добавьте следующие каталоги и файл статистики для записей HAProxy:

Создайте символьную ссылку для двоичных файлов, чтобы вы могли запускать команды HAProxy от имени обычного пользователя:

Если вы хотите добавить прокси-сервер в систему в качестве службы, скопируйте файл haproxy.init из examples в свой каталог /etc/init.d. Отредактируйте права доступа к файлу, чтобы скрипт выполнялся, а затем перезагрузите демон systemd:

Вам также необходимо разрешить службе автоматическую перезагрузку при запуске системы:

В целях удобства также рекомендуется добавить нового пользователя для запуска HAProxy:

После этого вы можете еще раз проверить номер установленной версии с помощью следующей команды:

В нашем случае версия должна быть 2.0.7, как показано в примере вывода выше.

Наконец, файрвол в CentOS 8 по умолчанию довольно рестриктивен для этого проекта. Используйте следующие команды, чтобы разрешить необходимые службы и перезагрузить файрвол:

Настройка балансировщика нагрузки

Настройка HAProxy — довольно простой процесс. По сути, всё, что вам нужно сделать, это сообщить HAProxy, какие соединения он должен прослушивать и куда следует их ретранслировать.

Это делается путем создания файла конфигурации /etc/haproxy/haproxy.cfg с определяющими настройками. Вы можете почитать о параметрах конфигурации HAProxy на странице документации, если хотите узнать об этом больше.

Балансировка нагрузки на транспортном уровне (layer 4)

Начнем с базовой настройки. Создайте новый файл конфигурации, например, используя vi с командой ниже:

Добавьте в файл следующие разделы. Замените server_name тем, что должно вызывать ваши сервера на странице статистики, а private_ip — приватными IP-адресами серверов, на которые вы хотите направлять веб-трафик. Вы можете проверить приватные IP-адреса на панели управления UpCloud и на вкладке Private network в меню Network.

Различные алгоритмы балансировки нагрузки.

Указание серверов в разделе бэкенда позволяет HAProxy использовать эти серверы для балансировки нагрузки в соответствии с алгоритмом циклического перебора, когда это возможно.

Алгоритмы балансировки используются для определения того, на какой сервер в бэкенде передается каждое соединение. Вот некоторые из полезных опций:

Настройка балансировки нагрузки на прикладном уровне (layer 7)

Еще одна доступная возможность — настроить балансировщик нагрузки для работы на прикладном уровне (layer 7), что полезно, когда части вашего веб-приложения расположены на разных хостах. Это может быть достигнуто путем регулирования передачи соединения, например, по URL.

Откройте файл конфигурации HAProxy с помощью текстового редактора:

Затем настройте сегменты фронтенд и бэкенд в соответствии с примером ниже:

Фронтенд объявляет правило ACL с именем url_blog, которое применяется ко всем соединениям с путями, начинающимися с /blog. Use_backend определяет, что соединения, соответствующие условию url_blog, должны обслуживаться бэкендом с именем blog_back, а все остальные запросы обрабатываются бэкендом по умолчанию.

После изменения настроек сохраните файл и перезапустите HAProxy с помощью следующей команды:

Тестирование настройки

Когда HAProxy настроен и запущен, откройте публичный IP-адрес сервера балансировщика нагрузки в браузере и проверьте, правильно ли вы подключились к бэкенду. Параметр stats uri в конфигурации создает страницу статистики по указанному адресу.

Когда вы загружаете страницу статистики, если все ваши серверы отображаются зеленым, то настройка прошла успешно!


Защита страницы статистики с помощью пароля

Однако, если страница статистики просто указана во фронтенде, то она открыта для всеобщего обозрения, что может оказаться не очень хорошей идеей. Вместо этого вы можете назначить ей собственный номер порта, добавив приведенный ниже пример в конец вашего файла haproxy.cfg. Замените username и password на что-нибудь безопасное:

После добавления новой группы слушателей удалите старую ссылку на stats uri из фронтенд группы. Когда закончите, сохраните файл и перезапустите HAProxy.

Затем снова откройте балансировщик нагрузки с новым номером порта и войдите в систему с именем пользователя и паролем, которые вы указали в файле конфигурации.

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

Если на ваших внутренних серверах есть хотя бы какое-то разнообразие целевых страниц, вы заметите, что каждый раз, когда вы перезагружаете страницу, вы получаете ответ от другого хоста. Вы можете попробовать различные алгоритмы балансировки в разделе конфигурации или ознакомиться с полной документацией.

Заключение: балансировщик нагрузки HAProxy

Поздравляем с успешной настройкой балансировщика нагрузки HAProxy! Даже с базовой настройкой балансировки нагрузки вы можете значительно повысить производительность и доступность вашего веб-приложения. Это руководство является лишь введением в балансировку нагрузки с помощью HAProxy, которая способна на гораздо большее, чем то, что можно описать в краткой инструкции по настройке. Мы рекомендуем поэкспериментировать с различными конфигурациями с помощью обширной документации, доступной для HAProxy, а затем приступить к планированию балансировки нагрузки для вашей производственной среды.

Используя несколько хостов для защиты вашего веб-сервиса с помощью запаса мощности, сам балансировщик нагрузки все равно может представлять точку отказа. Вы можете еще больше повысить высокую доступность, установив плавающий IP между несколькими балансировщиками нагрузки. Вы можете узнать больше об этом в нашей статье о плавающих IP-адресах на UpCloud.


Установка HAProxy на Linux (Debian/Ubuntu или CentOS/RedHat)

HAProxy используют многие высоконагруженные сайты ( например Twitter, Instagram и многие другие).

Рассмотрю готовый пример использования.

Для начала нужно установить все необходимое, например nginx или apache. Можно прочитать как это делается в моих статьях:

Рассмотрим мой готовый пример на реальных машинах. И так, я имею:

Установка HAProxy.

Можно установить несколькими методами ( пакетом или с исходного кода).

1. Установка из пакетов.

Для начала необходимо включить репозиторий Backports:

Тогда, используйте следующие команды для установки. И для начала, выполняем обновления ОС:

И выполняем установку:

Для начала необходимо включить репозиторий Backports:

Тогда, используйте следующие команды для установки.

И для начала, выполняем обновления ОС:

И выполняем установку:

И для начала, выполняем обновления ОС:

И выполняем установку:

Для начала необходимо включить репозиторий Backports:

Тогда, используйте следующие команды для установки:

Добавляем EPEL репозиторий и после чего выполняем следующую команду:

2. Установка из исходного кода.

Скачиваем исходный код:

Распакуем данный архив и перейдем в папку с исходным кодом:

Конфигурируем и собираем данный пакет.

Более подробно напишу попозже, если что-то не понятно, пишите я постараюсь Вам помочь.

Настройка логов в HAProxy

Далее, необходимо включить функцию ведения лога (записи ошибок в лог) в HAProxy для будущей отладки, для этого внесем изменения в файле:

Далее, в зависимости от дистрибутив внесите изменения в HAProxy.

если она прописана, то не нужно ничего менять.

Далее, мы должны включить логирование для UDP в файле конфигурации:

Расскоментировать нужно ModLoad и UDPServerRun, здесь наш сервер будет слушать порт 514 для сбора логов в syslog.

Добавьте следующую строку в файл вновь создать.

Наконец, нужно перезапустить службу Rsyslog для обновления изменений:

Настройка HAProxy.

В качестве примера, я выбрал виртуальную машину на CentOS 6.6. Скопирую дефолтный конфиг ( чтобы можно было вернуть на прежнее место все как было):

Немного изменим конфигурационный файл, чтобы он выглядел так (конфиг для первого примера, на одной виртуальной машине):

Затем мы должны определить front-end и back-end балансировки в глобальном файле конфигурации /etc/haproxy/haproxy.cfg, как показано ниже. Замените IP-адреса, имена хостов и учетные данные HAProxy на ваши.

И приводим к виду:

После того как вы настроили все в конфигурации, выполним перезапуск HAProxy:

Посмотреть стартует ли сервис при запуске операционной системе, можно так:

Может возникнуть ошибка:

Смотрим кто занял 80-й порт:

Вы можете “убить” его с помощью:

А потом попробуйте перезагрузить Nginx снова:

И снова перезапускаем haproxy:

Включаем SSL в HAProxy

Чтобы включить SSL в HAProxy, необходимо установить пакет mod_ssl для создания SSL сертификата для HAProxy.

Для apache вебсервер:

Для apache вебсервер:

По умолчанию в Ubuntu / Debian, SSL уже имеется в пакете с Apache.

Включаем SSL в апаче:

После включения SSL, перезагрузите сервер Apache, чтобы изменения признаются:

ВНИМАНИЕ! Если Вы используете nginx, то в нем уже подключен модуль SSL.

После перезагрузки, перейдите в каталог, SSL и создайте SSL сертификат, используя следующие команды:

Смотрим что получилось:

И делаем сертификат из ключей:

Ну и вносим изменения:

После всех изменений выполняем перезагрузку сервиса haproxy:

Я получил следующую ошибку:

Ну и все, проверяем 😉

Открытые портов для HAProxy в брандмауэре

Для CentOS/RHEL 6

На CentOS/RHEL 7 и Fedora 21

ВНИМАНИЕ! Так же, обязательно добавьте порт для статистики (можно указать при конфигурации статистики 80-й порт и тогда ничего не нужно будет добавлять), я использую порт 1936, но у меня выключен фаэрвол и мне не нужно было добавлять правило.

Тестирование HAproxy

Создам файл для тестирования с именем index.html:

И вставлю следующий код:

Так же можно использовать следующий php скрипт cо следующим содержанием:

Session Stickiness

Я приведу пример использования следующий PHP кода, чтобы продемонстрировать, как работает все это:

Проведен небольшой эксперимент. При помощи программы wget запросим страничку тысячу раз такой командой:

Включаем статистику HAProxy

HAProxy статистика дает много информации о переданных данных, общей связи, состояния сервера и т.д. после установки HAProxy, если вы хотите посмотреть в HAProxy статистику, то ее можно легко настроить.

Отредактируем конфиг балансировщика:

И прописываем (добавляем в самый конец конфига):

Ваш может получить доступ к статистике используя HAProxy URL-адрес:

статистика в haproxy

статистика в haproxy

По желанию, можно изменить следующие параметры:

3 thoughts on “ Установка HAProxy на Linux (Debian/Ubuntu или CentOS/RedHat) ”

Pretty! This has been an extremely wonderful post.
Thanks for providing these details.

I really like it whenever people get together
and share ideas. Great website, continue the good work!

Very nice article, totally what I needed.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

date

18.10.2019

directory

CentOS, Linux

comments

Комментариев пока нет

В данной статье мы покажем настройку планировщика HAProxy для двух серверов с установленным веб-сервером Nginx (можно заменить на Apache). В качестве ОС во всех случаях используется CentOS.

HAProxy устанавливается на отдельный сервер, который принимает клиентские запросы и перенаправлять их на веб-сервера Nginx. Ниже представлена общая архитектура системы.

Балансировка между nginx нагрузки с помощью HAProxy

Настройка Nginx на backend-серверах

Начнем с установки и настройки Nginx на наших веб-серверах, между которыми будет балансировать нагрузка. Установим репозиторий EPEL и собственно сам nginx с помощью yum:

Я выполнял установку сразу на двух серверах, так как сервера настраиваются один в один (для параллельного выполнения команд на нескольких серверах можно использовать pdsh).

установка nginx

Далее в конфигурационных файлах nginx.conf укажем, что сервера должны обрабатывать запросы только с сервера HaProxy и backend-серверов:

1-ый backend-сервер:

2-ой backend-сервер:

Конфиг nginx стандартный, мы лишь добавили в listen IP сервера и закрыли доступ всем, кроме наших серверов с помощью директив allow и deny.

Для работы веб-сервера, нужно открыть соединения на файерволле через firewalld или iptables:

Выполним тестовую проверку на любом из backend-серверов:

Сервер отдал стандартный index файл nginx, значит между собой сервера взаимодействуют.

Для удобства проверки, я изменил содержимое index файла на каждом backend-сервере, чтобы в процессе тестирования четко видеть в браузере какой сервер обработал запрос.

Index файл nginx расположен в /usr/share/nginx/html/.

Настройка балансировщика нагрузки HAProxy

Приступим к установке и настройке HAProxy на сервере, который будет использоваться в качестве балансировщика нагрузки.

Установим HaProxy и выполним базовые настройки для работы балансировщика.

Чтобы включить HaProxy, нужно добавить Enabled=1 в файл /etc/default/haproxy:

включить haproxy

После сохранения конфигурации, обязательно проверьте синтаксис командой:

Если все в порядке, вы получите подобный результат:

После этого нужно перезапустить HaProxy и добавить его автозагрузку CentOS. А также открыть необходимые правила на файерволле.

На этом настройка балансировщика закончена, проверим результат, открыв IP сервера с HaProxy в браузере:

балансировка нагрузки между двумя веб серверами в haproxy

Как видно, по очереди отдали контент оба сервера, балансировщик работает.

Параметры конфигурационного файла haproxy.cfg

Рассмотрим основные примеры алгоритмов работы HaProxy:

  • roundrobin — алгоритм используемый по умолчанию, отправляет запросы на сервера по очереди. В нашем примере мы использовали именно такой метод;
  • leastconn – выбирает сервер с наименьшим количеством активных соединений. Рекомендуется применять на проектах, в которых сессии могут быть задействованы продолжительное время;
  • source – выбирает сервер по хешу, построенному на основе IP пользователей. В таком режиме работы один и тот же клиент будет обращаться всегда к одному серверу, если его IP остается неизменным;

Пройдем по некоторым параметрам в конфигурационном файле.

Блок global:

Блок default. В данном блоке описываются параметры по умолчанию для всех других секций, которые следуют за ней:

Также есть большое количество параметров связанных с различными timeout.

Сбор статистики HAProxy

Добавим в конфигурационный файл блок stats:

  • bind – порт по которому будет работать просмотр статистики;
  • statsenable – включить отчеты со статистикой;
  • statsuri – установка адреса страницы со статистикой;
  • statsauth – логин и пароль для входа.
Вы можете указать любой удобный для вас порт, если указанный в статье занят или не подходит для вас.

Также для работы нашего haproxy_stats, нужно открыть указанный ранее порт на файерволле:

firewall-cmd --permanent –add-port=10001/tcp

Чтобы посмотреть отчеты по работе HAProxy, нужно перейти по ссылке:

статистика haproxy

Открываем адрес балансировщика в браузере и начинаем спамить F5. Статистика по указанной ссылке меняется, утилита работает.

На этом наша настройка закончена. В статье мы рассмотрели базовую настройку HaProxy. В нашей схеме сервер-балансировщик нагрузки HaProxy становится единой точкой отказа. Для повышения отказоустойчивости конфигурации вы можете добавить второй сервер HaProxy, а проверку доступности между серверами организовать с помощью Keepalived. Получится примерно такая схема.

haproxy + nginx + keepalived

Есть еще много вариантов использования модуля HAProxy и вы всегда сможете найти применение его в своей работе.

Читайте также: