Поиск по сайту:

Настройка балансировки нагрузки веб-серверов с использованием POUND в RHEL/CentOS


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

  1. Поддерживает виртуальные хосты.
  2. Настраиваемый.
  3. Когда внутренний сервер выходит из строя или восстанавливается после сбоя, он обнаруживает это автоматически и основывает свои решения по балансировке нагрузки в соответствии с этим.
  4. Он отклоняет неправильные запросы.
  5. Не указан браузер или веб-серверы.

Давайте посмотрим, как можно сделать этот хак.

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


Pound Gateway Server : 172.16.1.222
Web Server 01 : 172.16.1.204
Web Server 02 : 192.168.1.161

Шаг 1. Установите балансировщик нагрузки Pound на сервере шлюза.

1. Самый простой способ установить Pound — использовать предварительно скомпилированные пакеты RPM. RPM-пакеты для дистрибутивов на основе RedHat можно найти по адресу:

  1. http://www.invoca.ch/pub/packages/pound/

Альтернативно, Pound можно легко установить из репозитория EPEL, как показано ниже.


yum install epel-release
yum install Pound

После установки Pound вы можете проверить, установлен ли он, введя эту команду.


rpm –qa |grep Pound

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

Здесь у меня есть два сервера с IP-адресами 172.16.1.204 и 192.168.1.161.

Для простоты использования я создал Python SimpleHTTPServer для мгновенного создания веб-сервера на обоих серверах. Прочтите о Python SimpleHTTPServer.

В моем сценарии мой webserver01 работает на 172.16.1.204 через порт 8888, а webserver02 работает на . >192.168.1.161 через порт 5555.

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

3. Теперь пришло время завершить настройку. После успешной установки фунта он создает файл конфигурации фунта в /etc, а именно pound.cfg.

Нам необходимо отредактировать данные сервера и серверной части, чтобы сбалансировать нагрузку между веб-серверами. Перейдите в /etc и откройте файл pound.cfg для редактирования.


vi /etc/pound.cfg

Внесите изменения, как предложено ниже.


ListenHTTP
    Address 172.16.1.222
    Port 80
End

ListenHTTPS
    Address 172.16.1.222
    Port    443
    Cert    "/etc/pki/tls/certs/pound.pem"
End

Service
    BackEnd
        Address 172.16.1.204
        Port    8888
    End

    BackEnd
        Address 192.168.1.161
        Port    5555
    End
End

Вот как выглядит мой файл pound.cfg.

Под тегами «ListenHTTP» и «ListenHTTPS» вам необходимо ввести IP-адрес сервера, на котором вы установили POUND.

По умолчанию сервер обрабатывает HTTP-запросы через порт 80 и HTTPS-запросы через порт 443. Под тегом «Service» вы можете добавить любое количество вложенных тегов, называемых «BackEnd». Теги BackEnd содержат IP-адреса и номера портов, на которых работают веб-серверы.

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


/etc/init.d/pound restart 
OR
service pound restart
OR
systemctl restart pound.service

4. Теперь пришло время проверить. Откройте два веб-браузера, чтобы проверить, работают ли наши конфигурации. В адресной строке введите IP-адрес вашего шлюза POUND и посмотрите, что появится.

Первый запрос должен загрузить первый webserver01, а второй запрос от другого веб-браузера должен загрузить второй webserver02.

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

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

Чтобы сбалансировать такую нагрузку, вам просто нужно добавить один параметр в файл pound.cfg. Давайте посмотрим на это.

Думаю, сервер 192.168.1.161:5555 — лучший сервер. Затем вам нужно направить больше запросов на этот сервер. В теге «BackEnd», который настроен для сервера 192.168.1.161, добавьте параметр «Priority» перед закрывающим тегом.

Посмотрите на пример ниже.

Диапазон, который мы можем использовать для параметра «Приоритет», составляет от 1–9. Если мы его не определим, будет присвоено значение по умолчанию 5.

Тогда нагрузка будет сбалансирована одинаково. Если мы определим номер приоритета, POUND будет чаще загружать сервер с более высоким номером приоритета. То есть в этом случае 192.168.1.161:5555 будет загружаться чаще, чем сервер 172.16.1.204:8888.

Шаг 3. Планирование чрезвычайных ситуаций

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


“Emergency
           Address 192.168.5.10
           Port        8080
   End”

6. POUND всегда отслеживает, какие внутренние серверы активны, а какие нет. Мы можем определить, через сколько секунд POUND должен проверить внутренние серверы, добавив параметр «Alive» в pound.cfg.

Вы можете использовать параметр «Alive 30», чтобы установить его на 30 секунд. Pound временно отключит внутренние серверы, которые не отвечают. Когда мы говорим, что сервер не отвечает, возможно, он не работает или не может установить соединение в этот момент.

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

7. Демон POUND будет управляться командой poundctl. При этом нам не нужно редактировать файл pound.cfg, и мы можем запускать Listner Server, BackEnd серверы и сеансы и т. д. через одна команда.


Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
  1. -c определяет путь к вашему сокету.
  2. -L/-l определяет прослушиватель вашей архитектуры.
  3. -S/-s определяет службу.
  4. -B/-b определяет внутренние серверы.

Дополнительную информацию смотрите на страницах руководства poundctl.

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

Читайте также: установка балансировщика нагрузки XR Crossroads для веб-серверов