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

Обновлено: 30.06.2024

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

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

Всего 4 сервера с минимальной установкой CentOS 8.

1. Войдите на все свои клиентские машины CentOS 8 и установите веб-сервер Nginx с помощью диспетчера пакетов dnf, как показано.

2. Затем запустите службу Nginx, а пока включите ее автоматический запуск при загрузке системы и подтвердите, что она запущена и работает, проверив ее состояние с помощью команд systemctl (сделайте это на всех клиентских машинах).

4. Затем откройте веб-браузер на своих локальных машинах и проверьте, нормально ли работает установка Nginx. Используйте IP-адрес клиента для навигации. Когда вы видите тестовую страницу Nginx, это означает, что веб-сервер, установленный на клиентском компьютере, работает правильно.


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

Шаг 2: Установка и настройка HAProxy Server в CentOS 8

6. Теперь установите пакет HAProxy на сервер HAProxy, выполнив следующую команду.

7. Затем запустите службу HAProxy, включите ее автоматический запуск при загрузке системы и проверьте ее состояние.


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

Файл конфигурации разделен на четыре основных раздела.

  • глобальные настройки - устанавливает параметры всего процесса.
  • defaults - этот раздел устанавливает параметры по умолчанию для всех остальных разделов после его объявления.
  • интерфейс - в этом разделе описывается набор прослушивающих сокетов, принимающих клиентские соединения.
  • Backend - в этом разделе описывается набор серверов, к которым будет подключаться прокси-сервер для пересылки входящих соединений.

Чтобы разобраться в параметрах глобальных настроек и значений по умолчанию, прочтите документацию по HAProxy (ссылка приведена в конце статьи). В этом руководстве мы будем использовать значения по умолчанию.

9. После развертывания HAProxy будет играть важную роль в вашей ИТ-инфраструктуре, поэтому настройка ведения журнала для него является основным требованием; это позволяет вам получить представление о каждом подключении к вашим внутренним веб-серверам.


Скопируйте и вставьте следующую конфигурацию для сбора журнала с UDP на порт 514 по умолчанию.

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

11. Сохраните файл и закройте его. Затем перезапустите службу rsyslog, чтобы применить последние изменения.

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

Следующая конфигурация определяет секцию прослушивания, используемую для обслуживания страницы HAProxy Stats. Параметр bind назначает слушателя заданному IP-адресу (в данном случае * для всех) и порту (9000).

Параметр stats auth используется для добавления базовой аутентификации при доступе к странице (замените haproxy и [email protected] на имя пользователя и пароль по вашему выбору).

13. Следующая конфигурация определяет раздел внешнего интерфейса, называемый TL (вы можете указать имя по своему вкусу). Параметр mode определяет режим работы HAProxy.

Директива default_backend или use_backend определяет внутренние серверы, в данном случае на которые ссылается TL_web_servers.

Обратите внимание, что HAProxy вернет «ошибку 503 Service Unavailable», если запрос не маршрутизируется директивой use_backend или default_backend.

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

Директива server используется для определения вышестоящих серверов в формате sever_name (например, websrv1), server_IP: port и options.

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

Закомментируйте любые другие разделы внешнего и внутреннего интерфейса, как показано на следующем снимке экрана. Сохраните файл и закройте его.


15. Теперь перезапустите службу HAProxy, чтобы применить новые изменения.

Шаг 3. Тестирование настройки HAProxy и просмотр статистики

17. Теперь пора протестировать установку HAPrxoy. На локальном настольном компьютере, с которого вы получаете доступ ко всем серверам, добавьте следующую строку в файл/etc/hosts, чтобы мы могли использовать фиктивный домен сайта.

18. Затем откройте браузер и используйте адрес сервера или домен сайта.


19. Для доступа к странице статистики HAProxy используйте следующий адрес.

Затем используйте имя пользователя и пароль, которые вы определили в файле конфигурации HAProxy (см. Параметр stats auth).


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

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


В режиме разгрузки SSL/TLS HAProxy расшифровывает трафик на стороне клиента и подключается к внутренним серверам в виде чистого трафика.

Мы начнем с создания сертификата и ключа, как показано (ответьте на вопросы в соответствии с данными вашей компании во время создания сертификата, как показано на скриншоте).


21. Затем откройте файл конфигурации HAProxy (/etc/haproxy/haproxy.cfg) и отредактируйте раздел интерфейса.


Сохраните файл и закройте его.

22. Затем перезапустите службу HAProxy, чтобы применить новые изменения.

23. Затем откройте веб-браузер и попробуйте зайти на сайт еще раз. Браузер покажет ошибку из-за самозаверяющего сертификата, нажмите «Дополнительно», чтобы продолжить.




На этом пока все! Каждое веб-приложение имеет собственный набор требований, вам необходимо спроектировать и настроить балансировку нагрузки в соответствии с требованиями вашей ИТ-инфраструктуры и приложений.

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


Установка 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 и вы всегда сможете найти применение его в своей работе.

В этом руководстве вы ознакомитесь с установкой и настройкой HAProxy на RHEL 8 / CentOS 8. Мы установим HAProxy на один сервер, а затем установим Nginx веб-сервер на других серверах. HAProxy будет действовать как балансировщик нагрузки для веб-серверов Nginx.

В этом уроке вы узнаете:

  • Архитектура и концепции HAProxy
  • Настроить файл hosts для разрешения имен
  • Установить и настроить HAProxy
  • Установить и настроить Nginx
  • Тестирование функции балансировки нагрузки
  • Доступ к URL-адресу HAProxy Stats

Архитектура HAProxy

Требования к программному обеспечению и используемые условные обозначения

Архитектура и концепции HAProxy

Балансировка нагрузки уровня 4

Балансировка нагрузки уровня 4.

Балансировка нагрузки уровня 7

Балансировка нагрузки на уровне 7.

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

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

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

Это для липких сеансов, IP-адрес клиента будет хеширован для определения внутреннего сервера, который получил последний запрос с этого IP-адреса. Таким образом, IP A всегда будет обрабатываться backend1, а IP B всегда будет обрабатываться banckend2, чтобы не прерывать сеансы.

Настроить файл hosts для разрешения имен

Войдите на сервер балансировки нагрузки и отредактируйте /etc/hosts file и HAProxy loadbalancer, имена хостов nginx1, nginx2. Скопируйте тот же файл на два других узла nginx и проверьте сетевое подключение с помощью команды ping.

Установить и настроить HAProxy

HAProxy доступен в репозитории RHEL 8 / CentOS 8, поэтому войдите на сервер балансировки нагрузки и установить пакет HAProxy с этой командой yum.

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

Когда установка будет завершена, перейдите в /etc/haproxy/ каталог и сделайте резервную копию исходного файла конфигурации.

Затем внесите следующие изменения в файл конфигурации HAProxy. haproxy.cfg с любым редактором.

Сохраните этот файл конфигурации и выйдите.

Теперь мы настроим демон rsyslog для регистрации статистики HAProxy. Отредактируйте rsyslog.conf файл, чтобы разрешить использование порта UDP 514 rsyslog. Откройте файл конфигурации rsyslog и раскомментируйте строки, чтобы включить UDP-соединение.

Сохраните файл с указанными выше изменениями и выйдите. Затем создайте новый файл конфигурации HAProxy для rsyslog и добавьте в этот файл следующие записи.

Теперь перезапустите rsyslog, а затем запустите службу HAProxy и добавьте HAProxy для запуска во время загрузки.

Установить и настроить Nginx

Nginx уже является частью существующего репозитория RHEL 8 / CentOS 8 и может быть установлен с помощью следующей команды.

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

После установки Nginx перейдите в веб-каталог и измените index.html файл соответственно. Убедитесь, что вы выполняете указанные ниже действия на серверах nginx1 и nginx2.

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

Тестирование функции балансировки нагрузки

Тестирование может быть выполнено путем просмотра и доступа к IP-адресу балансировщика нагрузки 192.168.1.108 (для моего случая), и вы см. один раз он переходит к Nginx Node1, а второй раз он переходит к Nginx Node2 в циклическом режиме мода.

Веб-страница на NGINX Node1

Веб-страница на NGINX Node1.

Веб-страница на NGINX Node2

Веб-страница на NGINX Node2.

Вы также можете проверить /var/log/haproxy-access.log чтобы получить подробную информацию о балансировке нагрузки.

Доступ к URL-адресу HAProxy Stats

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

Доступ к URL-адресу HAProxy Stats

Доступ к URL-адресу HAProxy Stats.

Панель управления HAProxy Stats

Панель HAProxy Stats.

HAProxy успешно работает и действует как балансировщик нагрузки для двух веб-серверов Nginx.

Вывод

LinuxConfig ищет технических писателей, специализирующихся на технологиях GNU / Linux и FLOSS. В ваших статьях будут представлены различные руководства по настройке GNU / Linux и технологии FLOSS, используемые в сочетании с операционной системой GNU / Linux.

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

ОШИБКА: невозможно найти дерево исходных кодов ядра для текущего работающего ядра.

ОШИБКА: невозможно найти дерево исходных кодов ядра для текущего работающего ядра.

Эта статья предоставит вам информацию о том, как установить исходный код ядра в системе CentOS / RHEL Linux. В качестве альтернативы он проведет вас через простой процесс устранения неполадок, если вы уже установили исходные коды / заголовки ядра .

Как расширить файловый менеджер GNOME Nautilus пользовательскими скриптами

Как расширить файловый менеджер GNOME Nautilus пользовательскими скриптами

Хотя GNOME в итерации 3.x был объектом многих споров, из-за нетрадиционной парадигмы рабочего стола, он, вероятно, является наиболее часто используемым рабочим столом в Linux. Файловым менеджером по умолчанию, включенным в GNOME, является Nautilus.

Как установить пакеты в системе Linux RHEL 8 / CentOS 8

Как установить пакеты в системе Linux RHEL 8 / CentOS 8

Все современные дистрибутивы Linux организуют программное обеспечение в пакеты, содержащие двоичные файлы приложений, файлы, метаданные и информация о зависимостях пакетов, возможных конфликтах с другими пакетами и т.п. Основной менеджер пакетов R.

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