• Ввойдите на сайт >>>

Статьи

Как установить балансировщик нагрузки HAProxy в Ubuntu

  1. Попробуйте это руководство на UpCloud с нашей бесплатной пробной версией! Начать Балансировка нагрузки...
  2. Настройка балансировщика нагрузки
  3. Балансировка нагрузки на слое 4
  4. Различные алгоритмы балансировки нагрузки
  5. Настройка балансировки нагрузки для слоя 7
  6. Тестирование настройки
  7. Пароль защищающий страницу статистики
  8. Выводы

Попробуйте это руководство на UpCloud с нашей бесплатной пробной версией! Начать

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

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

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

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

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

Установка HAProxy 1.7

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

sudo apt show haproxy

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

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

sudo add-apt-repository ppa: vbernat / haproxy-1.7

Подтвердите добавление нового PPA, нажав клавишу Enter .

Затем обновите список источников.

обновление sudo apt

Затем установите HAProxy, как обычно.

sudo apt install -y haproxy

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

haproxy -v HA-Proxy версия 1.7.8-1ppa1 ~ xenial 2017/07/09 Copyright 2000-2017 Willy Tarreau < [электронная почта защищена] >

Установка завершена. Ниже приведены инструкции по настройке балансировщика нагрузки для перенаправления запросов на веб-серверы.

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

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

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

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

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

sudo nano /etc/haproxy/haproxy.cfg

Добавьте следующие разделы в конец файла. Замените <имя сервера> тем, что вы хотите называть вашими серверами на странице статистики, а <частный IP> - частными IP-адресами серверов, на которые вы хотите направлять веб-трафик. Вы можете проверить частные IP на вашем Панель управления UpCloud и вкладка Частная сеть в меню Сеть .

внешний интерфейс http_front bind *: 80 stats uri / haproxy? stats default_backend http_back backend http_back балансировка roundrobin сервер <имя_сервера1> <частный IP 1>: 80 проверка сервера <имя_сервера2> <частный IP 2>: проверка 80

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

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

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

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

  • Roundrobin: каждый сервер используется по очереди в соответствии со своим весом. Это самый плавный и честный алгоритм, когда время обработки серверов остается равномерно распределенным. Этот алгоритм является динамическим, что позволяет регулировать вес сервера на лету.
  • Leastconn: выбран сервер с наименьшим количеством соединений. Циклический перебор выполняется между серверами с одинаковой нагрузкой. Использование этого алгоритма рекомендуется для длинных сеансов, таких как LDAP, SQL, TSE и т. Д., Но он не очень подходит для коротких сеансов, таких как HTTP.
  • Первый: первый сервер с доступными слотами для подключения получает соединение. Серверы выбираются от самого низкого числового идентификатора до самого высокого, который по умолчанию соответствует положению сервера в ферме. Как только сервер достигает своего значения maxconn, используется следующий сервер.
  • Источник: IP-адрес источника хешируется и делится на общий вес работающих серверов, чтобы указать, какой сервер будет получать запрос. Таким образом, один и тот же IP-адрес клиента всегда будет достигать одного и того же сервера, в то время как серверы остаются неизменными.

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

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

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

sudo nano /etc/haproxy/haproxy.cfg

Затем установите передний и внутренний сегменты в соответствии с примером ниже.

внешний интерфейс http_front bind *: 80 stats uri / haproxy? stats acl url_blog path_beg / blog use_backend blog_back если url_blog default_backend http_back бэкэнд http_back балансный сервер roundrobin <имя сервера> <частный IP>: 80 проверить сервер <имя сервера> <частный IP>: 80 проверить backend сервер blog_back <имя сервера> <частный IP>: 80 check

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

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

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

sudo systemctl перезапустить haproxy

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

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

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

http: // <публичный IP балансировщика нагрузки> / haproxy? stats

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

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

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

sudo systemctl статус haproxy

Пароль защищающий страницу статистики

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

прослушивание статистики bind *: 8181 статистика включает статистику uri / stats realm Haproxy \ Статистика статистика auth имя пользователя: пароль

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

sudo systemctl перезапустить haproxy

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

http: // <общедоступный IP-адрес балансировщика нагрузки>: 8181

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

http: // <публичный IP балансировщика нагрузки> /

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

Выводы

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

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

Внешний интерфейс http_front bind *: 80 stats uri / haproxy?
Дополнительная статистика URI / haproxy?
Внешний интерфейс http_front bind *: 80 stats uri / haproxy?
Http: // <публичный IP балансировщика нагрузки> / haproxy?

Новости

Карта