Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

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

Обзор

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

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

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

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

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

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

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

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

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

Это уникальный идентификатор ноды, по которому на этот сервер будут ссылаться в конфигурациях агентов и прокси (например, 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=2

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

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

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

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

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

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

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

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

Upgrading HA cluster

To perform a major version upgrade for the HA nodes:

  • stop all nodes;
  • create a full database backup;
  • if the database uses replication make sure that all nodes are in sync and have no issues. Do not upgrade if replication is broken.
  • select a single node that will perform database upgrade, change its configuration to standalone mode by commenting out HANodeName and upgrade it;
  • make sure that database upgrade is fully completed (System information should display that Zabbix server is running);
  • restart the node in HA mode;
  • upgrade and start the rest of nodes (it is not required to change them to standalone mode as the database is already upgraded at this point).

In a minor version upgrade it is sufficient to upgrade the first node, make sure it has upgraded and running, and then start upgrade on the next node.

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

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

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

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

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

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

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

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