Высокая доступность (HA) обычно требуется в критически важных инфраструктурах, которым необходимо практически полное отсутствие простоя. Таким образом, любой сервис, который потенциально может выйти из строя, должен иметь вариант аварийного переключения на случай сбоя текущего сервиса.
Zabbix предлагает встроенное решение высокой доступности, которое легко настроить и которое не требует предварительных глубоких знаний в этой области. Это встроенное решение может быть полезным как дополнительной уровень защиты от аппаратных или программных сбоев сервера Zabbix или для уменьшения времени простоя во время обслуживания.
В режиме высокой доступности Zabbix несколько Zabbix серверов запускаются как ноды кластера. Пока один Zabbix сервер в кластере является активной нодой, остальные находятся в режиме ожидания, готовыми перенять управление при необходимости.
Переключение на Zabbix HA ни к чему не обязывает. Вы можете переключиться обратно на автономный режим в любой момент.
Смотрите также: Детали реализации
Чтобы запустить Zabbix сервер в качестве ноды кластера, необходимо указать два параметра в конфигурации сервера:
Это уникальный идентификатор ноды, по которому на этот сервер будут ссылаться в конфигурациях агентов и прокси (например, zabbix-node-01
). Если вы не укажете HANodeName, то сервер запустится в автономном режиме.
Параметр 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_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 данные с информацией о нодах высокой доступности.
Чтобы отключить кластер высокой доступности:
Кластер высокой доступности (HA) является опциональным решением и поддерживается для Zabbix сервера. Собственное решение HA разработано с учётом более простого использования, это решение будет работать между разными площадками и не потребует никаких особых требований к базам данных, которые распознаются Zabbix. Пользователи могут свободно выбирать использовать собственное решение Zabbix HA или же стороннее решение HA, в зависимости от того, какое решение наилучшим образом подходит под требования высокой доступности в их среде.
Решение состоит из нескольких экземпляров zabbix_server или нод. Каждая нода:
Только одна нода может быть активной (рабочей) в один момент времени. На резервной ноде работает только один процесс — HA manager. Резервная нода не выполняет сбор данных, обработку или какие-либо другие обычные действия сервера; она не слушает порты; имеет минимальное количество подключений к базе данных.
Как активные, так и резервные ноды выполняют обновление времени своего последнего доступа каждые 5 секунд. Каждая резервная нода наблюдает за временем последнего доступа активной ноды. Если время последнего доступа активной ноды превышает «задержку при аварийном переключении» в секундах, резервная нода переключает себя в в режим активной ноды и назначает состояние «недоступна» ранее активной ноде.
Активная нода отслеживает свое собственное подключение к базе данных — если подключение потеряно более чем на задержка при аварийном переключении-5
секунд, нода должна остановить всю обработку и переключиться в резервный режим. Активная нода также отслеживает состояния резервных нод — если время последнего доступа резервной ноды превышает «задержку при аварийном переключении» в секундах, резервной ноде присваивается состояние «недоступная».
Ноды разрабытывались таким образом, чтобы быть совместимыми между минорными версиями Zabbix.