Установка Балансировщика Нагрузки Haproxy На Centos

Перевод статьи был подготовлен до начала курса.

«Администратор Linux. Виртуализация и кластеризация»






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

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

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

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

Его можно установить на различные дистрибутивы Linux, например на CentOS 8, на которой мы сосредоточимся в этом руководстве, а также на системы Дебиан 8 И Убунту 16 .



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

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

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

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

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



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

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

Чтобы узнать текущую версию, выполните следующую команду:

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

sudo yum info haproxy

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

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

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

Вам нужно будет установить его из оригинального источника.

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



sudo yum install gcc pcre-devel tar make -y

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

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



wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

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

tar xzvf ~/haproxy.tar.gz -C ~/

Перейдите в распакованную директорию с исходниками:

cd ~/haproxy-2.0.7

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

make TARGET=linux-glibc

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

sudo make install

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

Продолжим настройку программного обеспечения и сервисов ниже.



Настройка HAProxy для вашего сервера

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

sudo mkdir -p /etc/haproxy sudo mkdir -p /var/lib/haproxy sudo touch /var/lib/haproxy/stats

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

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

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

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy sudo chmod 755 /etc/init.d/haproxy sudo systemctl daemon-reload

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

sudo chkconfig haproxy on

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

sudo useradd -r haproxy

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

haproxy -v HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

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

Наконец, брандмауэр по умолчанию в CentOS 8 весьма ограничителен для этого проекта.

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

sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp sudo firewall-cmd --reload



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

Настройка HAProxy — довольно простой процесс.

По сути, все, что вам нужно сделать, это указать HAProxy, какие соединения он должен прослушивать и куда он должен их ретранслировать.

Это делается путем создания файла конфигурации /etc/haproxy/haproxy.cfg с определяющими настройками.

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



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

Начнем с базовой настройки.

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

sudo vi /etc/haproxy/haproxy.cfg

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

Заменять имя сервера как должны вызываться ваши серверы на странице статистики, и частный_ip — частные IP-адреса серверов, на которые вы хотите направлять веб-трафик.

Вы можете проверить частные IP-адреса на панели управления UpCloud и на вкладке Частная сеть в меню Сеть .



global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats timeout 30s user haproxy group haproxy daemon defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 frontend http_front bind *:80 stats uri /haproxyЭstats default_backend http_back backend http_back balance roundrobin server server_name1 private_ip1:80 check server server_name2 private_ip2:80 check

Это определяет балансировщик нагрузки транспортного уровня (уровень 4) с внешним именем http_front, прослушивающий порт 80, который затем перенаправляет трафик на серверную часть по умолчанию с именем http_back. Дополнительная статистика /haproxyЭstats подключает страницу статистики по указанному адресу.



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

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

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

Вот несколько полезных опций:

  • По-круговой: Каждый сервер используется по очереди в зависимости от его веса.

    Это самый плавный и справедливый алгоритм, когда время обработки серверов распределяется равномерно.

    Этот алгоритм является динамическим, что позволяет регулировать вес сервера на лету.

  • Минимальное подключение: выбирается сервер с наименьшим количеством подключений.

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

    Использование этого алгоритма рекомендуется для длинных сеансов, таких как LDAP, SQL, TSE и т. д., но он не очень подходит для коротких сеансов, таких как HTTP.

  • Первый: Соединение получает первый сервер с доступными слотами подключения.

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

    Как только сервер достигает maxconn, используется следующий сервер.

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

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



Настройка балансировки нагрузки на уровне приложения (уровень 7)

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

Этого можно достичь путем регулирования передачи соединения, например, по URL-адресу.

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

sudo vi /etc/haproxy/haproxy.cfg

Затем настройте сегменты внешнего и внутреннего интерфейса, как показано в примере ниже:

frontend http_front bind *:80 stats uri /haproxyЭstats acl url_blog path_beg /blog use_backend blog_back if url_blog default_backend http_back backend http_back balance roundrobin server server_name1 private_ip1:80 check server server_name2 private_ip2:80 check backend blog_back server server_name3 private_ip3:80 check

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

На внутренней стороне конфигурация устанавливает две группы серверов: http_back, как и раньше, и новую, называемую blog_back, которая обрабатывает соединения с example.com/blog. После изменения настроек сохраните файл и перезапустите HAProxy с помощью следующей команды:

sudo systemctl restart haproxy

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



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

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

Параметр stats uri в конфигурации создает страницу статистики по указанному адресу.



http://load_balancer_public_ip/haproxyЭstats

Если при загрузке страницы статистики все ваши серверы горят зеленым цветом, значит, настройка прошла успешно!

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

Страница статистики содержит полезную информацию для отслеживания ваших веб-хостов, включая время включения/выключения и количество сеансов.

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

Если ваш балансировщик нагрузки не отвечает, убедитесь, что HTTP-соединения не блокируются брандмауэром.

Также убедитесь, что HAProxy работает, используя команду ниже:

sudo systemctl status haproxy



Защита страницы статистики паролем

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

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

listen stats bind *:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth username:password

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

По завершении сохраните файл и перезапустите HAProxy.

sudo systemctl restart haproxy

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



http://load_balancer_public_ip:8181

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



http://load_balancer_public_ip/

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

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



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

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

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

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

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

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

Подробнее об этом вы можете узнать в нашем статья о плавающих IP-адресах на UpCloud .




Подробнее о курсе «Администратор Linux. Виртуализация и кластеризация» ***


Теги: #linux #Оптимизация сервера #Системное администрирование #Администрирование сервера #балансировка нагрузки #Конфигурация Linux #haproxy #centos #балансировщик нагрузки
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.