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

от автора

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

Что такое HAProxy?

HAProxy — это легковесный балансировщик нагрузки с открытым исходным кодом. Его можно использовать для построения отказоустойчивой инфраструктуры или сокрытия «реального» местоположения проекта по соображениям безопасности. ПО перенаправляет пользовательские запросы согласно правилам, которые задает администратор сайта, и работает по протоколам TCP и HTTP. HAProxy известен по всему миру, его используют такие крупные ИТ-компании, как Twitter, Instagram, Avito, DevianArt, Github, и другие.

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

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

  • Нужно как минимум три сервера — два из них будут работать в качестве серверов, обслуживающих контент вашего проекта, третий — в качестве балансировщика HAProxy;

  • Доменное имя с А-записями, «направленными» на IP балансировщика;

  • Контент вашего веб-сайта должен быть идентичен на обоих веб-серверах.

Настройка сети

Прежде чем приступить к настройке HAProxy, мы должны знать некоторые параметры сети, такие как IP-адреса и имена используемых серверов.

Пошаговая инструкция по настройке сети:

  • Создайте три сервера через панель управления Serverspace. Два из них будут работать как «бэкенд», третий сервер будет балансировщиком HAProxy. Получившаяся «инфраструктурная» схема отображена ниже.

  • Добавьте в файлы /etc/hosts на каждом из трех серверов строки, позволяющие «связать» IP-адреса с именами серверов. Затем проверьте доступность серверов, открыв SSH-консоль на haproxy-сервере и отправив несколько ICMP-пакетов
    на веб-серверы;

cat <<EOF >> /etc/hosts <backend_server_one_IP> <backend_server_one_hostname> <backend_server_two_IP> <backend_server_two_hostname> <haproxy_server_IP> <haproxy_server_hostname> EOF
ping <LAN_servers_IPs><lan_servers_ips></lan_servers_ips>
  • Создайте правило брандмауэра, блокирующее весь входящий трафик на веб-серверы, за исключением трафика с haproxy. Опционально, чтобы сделать управление серверами более комфортным, можно добавить в белый список свой собственный IP. Самый простой способ сделать это — зайти в детальные настройки сервера в личном кабинете Serverspace, добавьте правила и нажмите кнопку SAVE. Помните, что разрешающие правила следует располагать выше запрещающих, иначе доступ к серверу будет невозможен.

Развертывание веб-сайта

  • Если ранее вы внесли свой собственный IP-адрес в белый список, можете воспользоваться самым простым способом развертывания веб-сервера и дальнейшего управления сайтами — установить любую веб-панель, например, HestiaCP. Установите панель на первый «контентный» сервер, как описано здесь, затем авторизуйтесь в панели и, кликнув на Users > Add user, создайте непривилегированного пользователя;

  • Авторизуйтесь как этот аккаунт с «пониженными» правами;

  • Создайте веб-сайт через кнопку на панели;

  • Повторите развертывание веб-сайта на втором  «контентном» сервере;

Настройка HAProxy

Теперь пришло время установки балансировщика:

  • Авторизуйтесь в SSH-консоли сервера HAProxy, затем обновите существующие пакеты;

apt-get update; apt upgrade -y
  • Запустите установку балансировщика;

apt-get install haproxy -y
  • Отредактируйте конфигурационный файл HAProxy, просто добавьте в него следующие строки;

<span>frontend haproxy_web</span> <span>&nbsp; bind <IP_сервера_haproxy>:80</span> <span>&nbsp; default_backend web_back</span> mode http <span>backend web_back</span> <span>&nbsp; balance roundrobin</span> server <hostname_первого_контентного_сервера> <IP_первого_контентного_сервера>:80 server <hostname_второго_контентного_сервера> <IP_второго_контентного_сервера>:80
  • Запустите службу HAProxy и активируйте ее запуск при загрузке;

service haproxy start; systemctl enable haproxy

Проверка работы балансировщика

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

  • Войдите на первый веб-сервер через SSH, перейдите в каталог веб-сайта и переименуйте индексный файл;

cd <корневой_каталог_сайта> mv <индексный_файл> <индексный_файл.bkp>
  • Создайте новый индексный файл, содержащий IP-адрес сервера;

echo $(hostname) > <индексный_файл>
  • Повторите ту же процедуру на втором веб-сервере;

  • Откройте свой сайт в браузере, затем несколько раз обновите страницу. Вы увидите несколько отличную информацию. Все нормально, это означает, что балансировщик работает;

  • Верните «исходные» индексные файлы обратно на обоих «контентных» серверах:

rm <index file> mv <индексный_файл.bkp> <индексный_файл>

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


ссылка на оригинал статьи https://habr.com/ru/company/serverspace/blog/694770/


Комментарии

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

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