Висока доступність (HA) зазвичай потрібна в критичних інфраструктурах, які практично не можуть дозволити собі простоїв. Тож, для будь-якого сервісу, який може вийти з ладу, має бути передбачена можливість переключення на інший ресурс, у разі відмови поточного сервісу.
Zabbix пропонує власне рішення високої доступності, яке легко налаштувати і яке не потребує попереднього досвіду роботи з HA. Це вбудоване рішення може бути корисним як додатковий рівень захисту від програмних або апаратних збоїв сервера Zabbix або для зменшення часу простою під час технічного обслуговування.
У режимі високої доступності Zabbix, кілька Zabbix серверів працюють як вузли кластеру. Поки один Zabbix сервер у кластері активний, інші знаходяться в режимі очікування і готові взяти на себе роботу, в разі потреби.
Перехід на Zabbix HA не є незворотнім. Ви можете повернутися до режиму самостійної роботи в будь-який момент.
Дивіться також: Деталі реалізації
У конфігурації сервера необхідно вказати два параметри, щоб запустити Zabbix сервер як вузол кластера:
Це унікальний ідентифікатор вузла (наприклад, zabbix-node-01
), за допомогою якого можна звертатися до сервера у конфігураціях агента та проксі. Якщо ви не вкажете HANodeName, то сервер буде запущено в автономному режимі.
Параметр NodeAddress (адреса:порт) використовуватиметься web-інтерфейсом Zabbix для підключення до активної ноди. NodeAddress має відповідати IP-адресі або FQDN імені відповідного Zabbix сервера.
Перезапустіть всі Zabbix сервери, після внесення змін до конфігураційних файлів. Тепер вони будуть запущені як вузли кластера. Новий статус серверів можна побачити в розділі Звіти → Інформація про систему а також за допомогою команди:
zabbix_server -R ha_status
Ця команда виведе поточний стан кластера високої доступності в log-файл Zabbix сервера (і в стандартний потік виводу):
Переконайтеся, що в конфігураційному файлі 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)Статус вузла можна відстежувати:
Для виявлення нод можна використовувати внутрішній елемент даних zabbix[cluster,discovery,nodes], оскільки він повертає JSON дані з інформацією про ноди високої доступності.
Щоб вимкнути кластер високої доступності:
Щоб застосувати мажорне оновлення для вузлів кластеру високої доступності:
При мінорному оновленні достатньо оновити перший вузол, переконатися, що він оновився і працює, а потім почати оновлення на наступному вузлі.
Кластер високої доступності (HA) - це опціональне рішення, яке підтримується Zabbix сервером. Власне рішення HA розроблено таким, щоб бути простим у використанні. Воно буде працювати між різними сайтами і не має специфічних вимог до баз даних, які розпізнає Zabbix. Користувачі можуть вільно використовувати власне рішення Zabbix HA або сторонні рішення HA, в залежності від того, що найкраще відповідає вимогам високої доступності в їхньому середовищі.
Рішення складається з кількох екземплярів zabbix_server або вузлів. Кожен вузол:
Одночасно активним (працюючим) може бути лише один вузол. На резервному вузлі виконується лише один процес - HA manager. Резервний вузол не виконує збір, обробку даних або іншу звичайну серверну діяльність; він не прослуховує порти; він має мінімум підключень до баз даних.
Як активні, так і резервні вузли оновлюють час свого останнього доступу кожні 5 секунд. Кожен резервний вузол відстежує час останнього доступу активного вузла. Якщо час останнього доступу активного вузла перевищує "затримку перемикання на інший ресурс", резервний вузол стає активним і присвоює статус "недоступний" попередньому активному вузлу.
Активний вузол відстежує власне з'єднання з базою даних - якщо воно втрачається більш ніж на "затримку перемикання на інший ресурс - 5" секунд, він повинен зупинити всю подальшу роботу і перейти в режим очікування. Активний вузол також відстежує стан резервних вузлів - якщо час останнього доступу резервного вузла перевищує "затримку перемикання на інший ресурс" секунд, резервному вузлу присвоюється статус "недоступний".
Вузли розроблені таким чином, щоб бути сумісними між мінорними версіями Zabbix.