[Эта статья была написана Оуэном Гарреттом]
Ни для кого не секрет, что в сегодняшнем постоянно включенном и постоянно подключенном обществе пользователи ожидают, что ваши сайты и приложения будут доступны 24 × 7. Именно здесь NGINX и NGINX Plus всегда помогали вам сиять. Одним из ключевых преимуществ развертывания NGINX Plus в качестве обратного прокси-сервера и балансировщика нагрузки для серверов приложений является повышение доступности и надежности приложений, и вы можете еще больше повысить производительность приложений и веб-сайтов, добавив высокую доступность (HA) к самому NGINX Plus.
В NGINX Plus Release 6 (R6) мы представили новое решение, которое позволяет быстро и легко развертывать экземпляры NGINX Plus в активно-пассивной конфигурации HA. Решение основано на проекте keepalived с открытым исходным кодом , который предоставляет решение высокой доступности для систем Linux с тремя компонентами: демон keepalived, реализация протокола избыточности виртуального маршрутизатора (VRRP) для управления назначением виртуального IP-адреса для пары высокой доступности. и средство проверки работоспособности, чтобы определить, работает ли служба (например, веб-сервер, PHP-сервер или NGINX Plus).
Как работает высокая доступность?
Исходя из исходной конфигурации (см. « Настройка NGINX Plus для HA» ниже), keepalived определяет один узел NGINX Plus в качестве (активного) главного, а другой — (пассивной) резервной копии. Каждый узел имеет свой собственный IP-адрес, и главному узлу также назначается виртуальный IP-адрес, который объявлен клиентам в системе доменных имен (DNS). Во время работы VRRP и средство проверки работоспособности контролируют работу узлов и NGINX Plus, чтобы виртуальный IP-адрес можно было переназначить резервной копии в случае сбоя главного устройства:
- Экземпляр VRRP на резервном узле прослушивает рекламные пакеты от своего партнера на главном узле. Если он не получает рекламный пакет в течение периода, превышающего трехкратный настроенный рекламный интервал, он становится главным и назначает себе виртуальный IP-адрес.
- Если проверки работоспособности NGINX Plus на главном узле не удается выполнить заданное число раз, keepalived переназначает виртуальный IP-адрес с главного узла на резервный узел.
Настройка NGINX Plus для HA
Чтобы настроить активно-пассивную пару узлов NGINX Plus для HA, выполните следующие действия на обоих узлах:
- Установите или обновите базовый пакет NGINX Plus R6 ( nginx-plus ), следуя инструкциям для вашей операционной системы в репозитории NGINX Plus .
- Используя команду установки, указанную в репозитории NGINX Plus для вашей операционной системы, установите пакет nginx-ha-keepalived , заменив nginx-plus на nginx-ha-keepalived , как в этом примере для Ubuntu:
root# apt-get install nginx-ha-keepalived
- Запустите скрипт nginx-ha-setup (он устанавливается из пакета nginx-ha-keepalived в / usr / bin ).
root# nginx-ha-setup
-
Мы рекомендуем запускать сценарий на обоих узлах одновременно в параллельных окнах терминала, выполняя каждый шаг на обоих узлах, прежде чем переходить к следующему шагу. Мы также рекомендуем использовать команду Linux
screen
(1) для запуска окон терминала, чтобы можно было продолжить установку, если сеанс отключается.Прежде чем начать, соберите следующую информацию для подсказок:
- Физические IP-адреса обоих узлов.
- Виртуальный IP-адрес, который изначально назначается главному узлу. Сценарий называет его «кластерным IP-адресом (или конечной точкой)». Это не должен быть фактический IP-адрес любого узла.
Поддерживаемый скрипт конфигурации
На каждом узле сценарий nginx-ha-setup создает локальный файл конфигурации keepalived /etc/keepalived/keepalived.conf , включающий значения, указанные вами на шаге 3. Далее приведен пример, созданный для узла с IP-адресом 192.168. 100.100 (адрес другого узла — 192.168.100.101, а виртуальный IP-адрес — 192.168.100.150). Обратите внимание, что хотя это очень похоже на конфигурацию NGINX Plus, это не так — во-первых, точки с запятой не используются для разграничения директив.
vrrp_script chk_nginx_service { script "/usr/libexec/keepalived/nginx-ha-check" interval 3 weight 50 } vrrp_instance VI_1 { interface eth0 state BACKUP priority 101 virtual_router_id 51 advert_int 1 unicast_src_ip 192.168.100.100 unicast_peer { 192.168.100.101 } authentication { auth_type PASS auth_pass f8f0e5114cbe031a3e1e622daf18f82a } virtual_ipaddress { 192.168.100.150 } track_script { chk_nginx_service } notify "/usr/libexec/keepalived/nginx-ha-notify" }
Объяснение цели каждой директивы выходит за рамки этого поста, но есть несколько вещей, на которые следует обратить внимание.
- В файле есть два основных блока конфигурации:
vrrp_script
Блок настраивает здоровья проверки объекта для запуска сценария , которая проверяет Nginx Plus находится в рабочем состоянии .Сценарий nginx-ha-check устанавливается автоматически из пакета nginx-ha-keepalived в указанный каталог, который зависит от операционной системы.
В
interval
директиве устанавливает , как часто запускает сценарий, в секундах.vrrp_instance
Блок настраивает экземпляр VRRP на этом узле.Предоставляемые вами IP-адреса записываются в виде значений трех директив:
unicast_src_ip
(локальный узел),unicast_peer
(другой узел) иvirtual_ipaddress
(виртуальный IP-адрес, назначенный главному узлу).В
advert_int
директиве управляет тем, как часто экземпляр VRRP на мастер — узле посылает рекламу своего партнера на резервном узле, в секундах.Значение 51 для
virtual_router_id
директивы является образцом значения; при необходимости измените его, чтобы он был уникальным в вашей среде (это становится актуальным, если вы используете VRRP для предоставления HA для нескольких услуг).
- Вместе
weight
директива вvrrp_script
блоке иpriority
директива вvrrp_instance
блоке используются при определении того, какой узел становится главным. Для получения дополнительной информации см. Использование сценария проверки работоспособности для управления мастерством в статье Руководства администратора NGINX Plus о HA. - Если в вашей локальной сети запущено несколько пар экземпляров keepalived (или других экземпляров VRRP), создайте
vrrp_instance
для каждого из них блок с уникальным именем (какVI_1
в примере) иvirtual_router_id
номером.Точно так же, если вы используете keepalived для предоставления HA для других сервисов, для каждого из них вам нужно создать отдельный скрипт проверки работоспособности и
vrrp_script
заблокировать его.
Дополнительная информация
Для получения дополнительной информации о решении HA см. Поддержка высокой доступности в NGINX Plus в Руководстве администратора NGINX Plus. В нем объясняется, как выяснить, какой узел является главным, принудительно сменить мастерство, вручную переназначить виртуальный IP-адрес, устранить неполадки keepalived и VRRP, а также добавить дополнительные виртуальные IP-адреса. Он также указывает на образцы файлов конфигурации для более сложных настроек HA.