1 Висока доступність

Огляд

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

Zabbix пропонує власне рішення високої доступності, яке легко налаштувати і яке не потребує попереднього досвіду роботи з HA. Це вбудоване рішення може бути корисним як додатковий рівень захисту від програмних або апаратних збоїв сервера Zabbix або для зменшення часу простою під час технічного обслуговування.

У режимі високої доступності Zabbix, кілька Zabbix серверів працюють як вузли кластеру. Поки один Zabbix сервер у кластері активний, інші знаходяться в режимі очікування і готові взяти на себе роботу, в разі потреби.

Перехід на Zabbix HA не є незворотнім. Ви можете повернутися до режиму самостійної роботи в будь-який момент.

Дивіться також: Деталі реалізації

Увімкнення високої доступності

Запуск Zabbix сервера як вузла кластера

У конфігурації сервера необхідно вказати два параметри, щоб запустити Zabbix сервер як вузол кластера:

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

Це унікальний ідентифікатор вузла (наприклад, zabbix-node-01), за допомогою якого можна звертатися до сервера у конфігураціях агента та проксі. Якщо ви не вкажете HANodeName, то сервер буде запущено в автономному режимі.

  • Для кожного вузла необхідно вказати параметр NodeAddress.

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

Перезапустіть всі Zabbix сервери, після внесення змін до конфігураційних файлів. Тепер вони будуть запущені як вузли кластера. Новий статус серверів можна побачити в розділі ЗвітиІнформація про систему а також за допомогою команди:

zabbix_server -R ha_status

Ця команда виведе поточний стан кластера високої доступності в log-файл Zabbix сервера (і в стандартний потік виводу):

Підготовка web-інтерфейсу

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

Web-інтерфейс Zabbix автоматично визначить активний вузол, зчитавши налаштування з таблиці вузлів у базі даних Zabbix. Адреса активного вузла буде використана як адреса Zabbix сервера.

Конфігурація проксі

Вузли (сервери) кластера HA повинні бути вказані в конфігурації пасивного або активного Zabbix проксі.

Для пасивного проксі імена вузлів кластеру мають бути вказані в параметрі Server і розділені комою.

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

Для активного проксі імена вузлів кластеру мають бути вказані в параметрі Server і розділені крапкою з комою.

Server=zabbix-node-01;zabbix-node-02
Конфігурація агента

Вузли (сервери) HA кластера мають бути вказані в конфігурації Zabbix агента або Zabbix агента 2.

Щоб увімкнути пасивні перевірки, імена вузлів мають бути вказані в параметрі Server і розділені комою.

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

Щоб увімкнути активні перевірки, імена вузлів мають бути вказані в параметрі ServerActive. Зверніть увагу, що для активних перевірок, вузли одного кластеру повинні бути відокремлені від інших Zabbix серверів комою, а самі вузли повинні бути розділені крапкою з комою, наприклад:

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=target - видалити вузол HA, що ідентифікується за його <target> - номер вузла в списку (номер може бути отримано з результату запуску ha_status), наприклад:
zabbix_server -R ha_remove_node=2

Зверніть увагу, що активні/резервні вузли не можна видалити.

  • ha_set_failover_delay=delay - встановлює затримку перемикання на інший ресурс (від 10 секунд до 15 хвилин; підтримуються суфікси часу, наприклад. 10s, 1m)

Статус вузла можна відстежувати:

  • у ЗвітиІнформація про систему
  • у віджеті інформаційної панелі Інформація про систему
  • за допомогою опції контролю виконяння ha_status (див вище).

Для виявлення нод можна використовувати внутрішній елемент даних zabbix[cluster,discovery,nodes], оскільки він повертає JSON дані з інформацією про ноди високої доступності.

Вимкнення кластера високої доступності

Щоб вимкнути кластер високої доступності:

  • зробіть резервні копії конфігураційних файлів
  • зупиніть резервні вузли
  • видаліть параметр HANodeName з активного основного сервера
  • перезапустіть основний сервер (він запуститься в автономному режимі)

Оновлення кластера високої доступності

Щоб застосувати мажорне оновлення для вузлів кластеру високої доступності:

  • зупиніть всі ноди кластеру;
  • створіть повну резервну копію бази даних;
  • якщо база даних використовує реплікацію, переконайтеся, що всі вузли синхронізовані та не мають проблем. Не виконуйте оновлення, якщо реплікація порушена.
  • виберіть один вузол, який виконуватиме оновлення бази даних, змініть його конфігурацію на автономний режим, закоментувавши HANodeName і оновіть його;
  • переконайтеся, що оновлення бази даних повністю завершено (Інформація про систему має показувати, що Zabbix сервер працює);
  • перезапустити вузол в режимі HA;
  • оновіть і запустіть решту вузлів (переводити їх у автономний режим не потрібно, оскільки база даних вже оновлена на цьому етапі).

При мінорному оновленні достатньо оновити перший вузол, переконатися, що він оновився і працює, а потім почати оновлення на наступному вузлі.

Деталі реалізації

Кластер високої доступності (HA) - це опціональне рішення, яке підтримується Zabbix сервером. Власне рішення HA розроблено таким, щоб бути простим у використанні. Воно буде працювати між різними сайтами і не має специфічних вимог до баз даних, які розпізнає Zabbix. Користувачі можуть вільно використовувати власне рішення Zabbix HA або сторонні рішення HA, в залежності від того, що найкраще відповідає вимогам високої доступності в їхньому середовищі.

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

  • налаштовується окремо
  • використовує ту саму базу даних
  • може мати декілька режимів: активний, очікування, недоступний, зупинений

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

Як активні, так і резервні вузли оновлюють час свого останнього доступу кожні 5 секунд. Кожен резервний вузол відстежує час останнього доступу активного вузла. Якщо час останнього доступу активного вузла перевищує "затримку перемикання на інший ресурс", резервний вузол стає активним і присвоює статус "недоступний" попередньому активному вузлу.

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

Вузли розроблені таким чином, щоб бути сумісними між мінорними версіями Zabbix.