1. Кластер высокой доступности

Обзор

Высокая доступность (HA) обычно требуется в критически важных инфраструктурах, которым необходимо практически полное отсутствие простоя. Таким образом, любой сервис, который потенциально может выйти из строя, должен иметь вариант аварийного переключения на случай сбоя текущего сервиса.

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

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

Переключение на Zabbix HA ни к чему не обязывает. Вы можете переключиться обратно на автономный режим в любой момент.

Смотрите также: Детали реализации

Включение высокой доступности

Запуск Zabbix сервера как ноды кластера

Чтобы запустить Zabbix сервер в качестве ноды кластера, необходимо указать два параметра в конфигурации сервера:

  • Для каждого Zabbix сервера, который будет нодой HA кластера, необходимо указать параметр HANodeName.

Это уникальный идентификатор ноды, по которому на этот сервер будут ссылаться в конфигурациях агентов и прокси (например, zabbix-node-01). Если вы не укажете HANodeName, то сервер запустится в автономном режиме.

  • Для каждой ноды необходимо указать параметр NodeAddress.

Параметр NodeAddress (адрес:порт) будет использован веб-интерфейсом Zabbix для подключения к активной ноде. NodeAddress должен соответствовать IP или FQDN имени соответствующего Zabbix сервера.

Перезапустите все Zabbix серверы после внесения изменений в файлы конфигурации. Серверы теперь будут запускаться как ноды кластера. Новое состояние серверов можно увидеть в ОтчетыИнформация о системе, а также при выполнении:

zabbix_server -R ha_status

Эта команда административного управления выведет текущее состояние кластера в журнал сервера (и в стандартный вывод):

Подготовка веб-интерфейса

Убедитесь, что адрес:порт Zabbix сервера не указаны в конфигурации веб-интерфейса (находится в conf/zabbix.conf.php в директории с файлами веб-интерфейса).

Веб-интерфейс Zabbix автоматически определит активную ноду, прочитав настройки из таблицы нод в базе данных Zabbix. Адрес активной ноды будет использован как адрес Zabbix сервера.

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

Ноды (серверы) HA кластера должны быть перечислены в конфигурации как пассивных, так и активных Zabbix прокси.

В случае пассивных прокси имена нод необходимо перечислить в параметре Server этих прокси, разделяя имена запятой.

Server=zabbix-node-01,zabbix-node-02

В случае активных прокси имена нод необходимо перечислить в параметре Server этих прокси, разделяя имена точкой с запятой.

ServerActive=zabbix-node-01;zabbix-node-02
Настройка агента

Ноды (серверы) HA кластера необходимо перечислить в конфигурации Zabbix агента или Zabbix агента 2.

Чтобы активировать пассивные проверки, имена нод необходимо перечислить в параметре Server, разделяя имена нод запятой.

Server=zabbix-node-01,zabbix-node-02

Чтобы активировать активные проверки, имена нод необходимо перечислить в параметре ServerActive. Обратите внимание, что для работы активных проверок ноды необходимо отделить от любых других серверов запятой, тогда как сами ноды разделяются (друг от друга) точкой с запятой, например:

ServerActive=zabbix-node-01;zabbix-node-02

Автоматическое переключение на резервную ноду

Zabbix автоматически переключится на другую ноду, если активная нода остановится. Для автоматического переключения необходимо иметь по крайней мере одну ноду в состоянии резерва.

Как быстро произойдет автоматическое переключение? Все ноды обновляют своё время последнего доступа (и состояния, если оно меняется) каждые 5 секунд. Таким образом:

  • Если активная нода выключается и успевает сообщить своё состояние как "остановлена", другая нода подхватит нагрузку в течение 5 секунд.

  • Если активная нода выключается / становится недоступной без возможности обновить своё состояние, резервные ноды будут ожидать задержку автоматического переключения + 5 секунд перед тем как перенять нагрузку на себя.

Задержка автоматического переключения настраивается, поддерживаемый диапазон от 10 секунд до 15 минут (по умолчанию одна минута). Чтобы изменить задержку автоматического переключения, вы можете выполнить:

zabbix_server -R ha_set_failover_delay=5m

Управление HA кластером

Текущим состоянием HA кластера можно управлять при помощи выделенных опций управления работой:

  • ha_status — вывод состояния HA кластера в журнал Zabbix сервера (и в стандартный вывод);
  • ha_remove_node=цель — удаление HA ноды заданной своим <цель> — именем или идентификатором ноды (имя/идентификатор можно получить из вывода при выполнении ha_status), например:
zabbix_server -R ha_remove_node=zabbix-node-02

Обратите внимание, что активные / резервные ноды нельзя удалить.

  • ha_set_failover_delay=задержка — установка задержки аварийного переключения HA (от 10 секунд до 15 минут; поддерживаются суффиксы времени, такие как 10s, 1m)

Состояние нод можно отслеживать:

  • в ОтчетыИнформация о системе;
  • в виджете панели Информация о системе;
  • используя опцию управления работой ha_status на стороне сервера (см. выше).

Для обнаружения нод можно использовать внутренний элемент данных zabbix[cluster,discovery,nodes], поскольку этот элемент данных возвращает JSON данные с информацией о нодах высокой доступности.

Отключение высокой доступности

Чтобы отключить кластер высокой доступности:

  • сделайте резервные копии файлов конфигурации;
  • остановите резервные ноды;
  • удалите параметр HANodeName на основном активном сервере;
  • перезапустите основной сервер (он запустится в автономном режиме).

Детали реализации

Кластер высокой доступности (HA) является опциональным решением и поддерживается для Zabbix сервера. Собственное решение HA разработано с учётом более простого использования, это решение будет работать между разными площадками и не потребует никаких особых требований к базам данных, которые распознаются Zabbix. Пользователи могут свободно выбирать использовать собственное решение Zabbix HA или же стороннее решение HA, в зависимости от того, какое решение наилучшим образом подходит под требования высокой доступности в их среде.

Решение состоит из нескольких экземпляров zabbix_server или нод. Каждая нода:

  • настраивается отдельно (файл конфигурации, скрипты, шифрование, экспорт данных)
  • использует ту же базу данных
  • имеет несколько режимов: активная, резервная, недоступная, остановленная

Только одна нода может быть активной (рабочей) в один момент времени. На резервной ноде работает только один процесс — HA manager. Резервная нода не выполняет сбор данных, обработку или какие-либо другие обычные действия сервера; она не слушает порты; имеет минимальное количество подключений к базе данных.

Как активные, так и резервные ноды выполняют обновление времени своего последнего доступа каждые 5 секунд. Каждая резервная нода наблюдает за временем последнего доступа активной ноды. Если время последнего доступа активной ноды превышает «задержку при аварийном переключении» в секундах, резервная нода переключает себя в в режим активной ноды и назначает состояние «недоступна» ранее активной ноде.

Активная нода отслеживает свое собственное подключение к базе данных — если подключение потеряно более чем на задержка при аварийном переключении-5 секунд, нода должна остановить всю обработку и переключиться в резервный режим. Активная нода также отслеживает состояния резервных нод — если время последнего доступа резервной ноды превышает «задержку при аварийном переключении» в секундах, резервной ноде присваивается состояние «недоступная».

Ноды разрабытывались таким образом, чтобы быть совместимыми между минорными версиями Zabbix.