Наличие правильной настройки балансировщика нагрузки позволяет вашему веб-серверу надежно обрабатывать высокий трафик, а не обрушится. В этом руководстве мы рассмотрим, как настроить балансировщик нагрузки с высокой доступностью.
Балансировка нагрузки – это процесс распределения рабочих нагрузок на несколько серверов. Это похоже на распределение рабочих нагрузок между дневной сменой и ночной сменой работников в компании. Балансировка нагрузки повышает надежность сервера, поскольку она преодолевает одноточечный сбой.
В этом примере, если веб-сервер не работает, веб-запрос пользователя не может быть доступен в режиме реального времени. Кроме того, если число пользователей запрашивает одну и ту же веб-страницу одновременно, то обслуживание веб-запроса пользователя одним веб-сервером может быть медленным процессом. Следовательно, балансировщики нагрузки используются для повышения производительности сервера, обеспечения резервного копирования и предотвращения сбоев.
В этой статье мы собираемся настроить балансировщик нагрузки для веб-сервера с помощью Nginx, HAProxy и Keepalived. Ниже показан пример того, как выглядят серверы с балансировщиками нагрузки.
Итак, что такое Nginx, Haproxy и Keepalived?
Nginx, произносится как Engine-x является веб-сервером с открытым исходным кодом. Он больше, чем просто Веб-сервер, он может работать как обратный прокси-сервер, почтовый прокси-сервер, балансировщик нагрузки, легкий файловый сервер и кэш HTTP. Nginx был использован во многих популярных сайтах, таких как BitBucket, WordPress, Pinterest, Quora и GoDaddy.
HAProxy означает прокси высокой доступности. Это балансировщик нагрузки с открытым исходным кодом, который обеспечивает балансировку нагрузки, высокую доступность и прокси-решения для приложений на основе TCP и HTTP. Он лучше всего подходит для распределения рабочей нагрузки между несколькими серверами для повышения производительности и надежности серверов.
Функция Haproxy заключается в пересылке веб-запроса от конечного пользователя к одному из доступных веб-серверов. Он может использовать различные алгоритмы балансировки нагрузки как Round Robin, Least Connections и т. д.
Что делать, если haproxy балансировки нагрузки упадет?
Keepalived является программой с открытым исходным кодом, которая поддерживает балансировку нагрузки и высокую доступность. Это в основном программное обеспечение маршрутизации и обеспечивает два типа балансировки нагрузки:
Keepalived может выполнять следующие функции:
Keepalived использования для VIP (виртуальный IP-адрес) как плавающий IP, который плавает между мастером балансировки нагрузки и резервного копирования балансировки нагрузки и используется для переключения между ними. Если главный балансировщик нагрузки отключается, то резервный балансировщик нагрузки используется для пересылки веб-запроса.
Давайте перейдем к моделированию того, как высокая доступность и балансировка нагрузки поддерживается для веб-серверов.
Это тестовый лабораторный эксперимент, означающий, что это просто тестовая установка, чтобы вы начали. Возможно, вам придется сделать некоторые настройки, если вы реализуете его на реальных серверах. Используйте этот учебник в качестве учебного материала, а не слепо следовать ему для вашей собственной установки.
Мы использовали CentOS в качестве дистрибутива Linux в этой статье. Вы можете использовать другие дистрибутивы Linux, но мы не можем гарантировать, что все команды (особенно установочные) будут работать в других дистрибутивах.
4 сервера с установленной системой CentOS (минимальная установка достаточно для этого учебника)
В этом учебнике мы работали на следующими IP-адресами в качестве примера. Они могут быть изменены в соответствии с вашей системой. Не думайте, что это статические IP-адреса.
Web-сервер:
LoadBalancer:
Виртуальный IP:
В этой части мы будем использовать две системы CentOS в качестве веб-сервера. Сначала нужно установить Nginx на них.
Для этого добавьте репозиторий, содержащий nginx, и установите его оттуда:
yum install epel-release yum install nginx
После установки nginx запустите службу Nginx:
systemctl start nginx
Включите службу nginx после каждой загрузки:
systemctl enable nginx
Проверка статуса сервиса nginx:
systemctl status nginx
Разрешите веб-трафик в nginx, который по умолчанию блокируется брандмауэром CentOS.
firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd –reload
Повторите описанные выше шаги и на веб-сервере второго CentOS.
Теперь обратите внимание на следующие шаги.
Веб-файлы для nginx находится в каталоге /usr/share/nginx/html. Изменение содержимого индекса.html-файл только для идентификации веб-серверов.
Для первого веб-сервера:
echo “this is first webserver” > /usr/share/nginx/html/index.html
Для второго веб-сервера:
echo “this is second webserver” > /usr/share/nginx/html/index.html
Теперь подтвердите статус веб-сервера, перейдя по следующему URL в браузере: http://SERVER_DOMAIN_NAME или Local_IP_Address. Пример здесь:
http://10.13.211.169
или в терминале, curl Local_IP_Address. Пример здесь:
curl 10.13.211.169
Вы получите такой выход:
В двух других системах для установки HAProxy используйте следующие команды:
yum -y update yum -y install haproxy
Файл конфигурации HAProxy находится в каталоге /etc/haproxy. Перейдите в каталог и создайте резервную копию файла перед редактированием.
cd /etc/haproxy/ mv haproxy.cfg haproxy.cfg_bac
Создайте новый файл haproxy.cfg и откройте файл с помощью любого редактора, который Вам нравится.
touch haproxy.cfg vim haproxy.cfg
Теперь вставьте следующие строки в файл:
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 #--------------------------------- frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_back #round robin balancing backend http #----------------------------------- backend http_back balance roundrobin #balance leastconn mode http server webserver1 10.13.211.169:80 check # ip_address_of_1st_centos_webserver server webserver2 10.13.211.158:80 check # ip_address_of_2nd_centos_webserver
Теперь включите и запустите службу HAProxy.
systemctl enable haproxy systemctl start haproxy
Проверка состояния HAProxy:
systemctl status haproxy
Перейдите по url в браузере, чтобы подтвердить сервис haproxy: http://load balancer’s IP Address/haproxy?stats. Пример, используемый здесь:
http://10.13.211.194/haproxy?stats
или в терминале, используйте команду $ curl LoadBalancer_IP_Address
curl 10.13.211.194 curl 10.13.211.194
curl два раза, и вы увидите различные выходы для команды curl. Это происходит из-за того, что ответ поступает от разных веб-серверов (по одному за раз), для вашего запроса в подсистеме балансировки нагрузки.
Выходные данные будут выглядеть следующим образом:
Keepalived должен быть установлен в обеих системах haproxy load balancer CentOS (которые мы только что настроили выше). Один действует как главный (основной балансировщик нагрузки), а другой действует как резервный балансировщик нагрузки.
В обеих системах выполните следующую команду:
yum install -y keepalived
Конфигурационный файл Keepalived находится на файле /etc/keepalived/keepalived.conf
. Создайте резервную копию исходного файла поддержки.conf и используйте следующую конфигурацию в новом файле keepalived .conf.
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac touch /etc/keepalived/keepalived.conf vim /etc/keepalived/keepalived.conf
Вставьте следующие строки в файл конфигурации (не забудьте изменить адреса электронной почты):
global_defs { notification_email { andreyex.ru andreyex@gmail.com } notification_email_from master@andreyex.ru smtp_server 10.13.211.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 #введите имя интерфейса. [чтобы увидеть имя интерфейса: $ ip a ] virtual_router_id 51 priority 101 # 101 для мастера. 100 для резервного копирования. [приоритет мастера> приоритет резервного копирования] advert_int 1 authentication { auth_type PASS auth_pass 1111 #пароль } virtual_ipaddress { 10.13.211.10 # используйте виртуальный ip-адрес. } }
Отредактируйте файл конфигурации в соответствии с системным предположением. Позаботьтесь о главной и резервной конфигурации. Сохраните файл и запустите и включите процесс Keepalived:
systemctl start keepalived systemctl enable keepalived
Просмотр состояния Keepalived:
systemctl status keepalived
Теперь, чтобы проверить состояние балансировщика нагрузки высокой доступности, перейдите к терминалу и нажмите:
$ while true; do ; curl 10.13.211.10 ; sleep 1; done;
Нажмитеctrl+c
, чтобы остановить запущенный терминал.
Выходные данные будут выглядеть следующим образом:
Мы надеемся, что этот учебник помог вам настроить балансировщик нагрузки в Linux с высокой доступностью. Конечно, это была простая настройка, но она определенно дает представление о балансировке нагрузки и обработке высокой доступности.
Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже