Телега, где собираю единомышленников
Можно задать вопрос или просто пообщаться
Присоединяйся
Что такое Keepalived?
Keepalived применяется для обеспечения отказоустойчивости сервисов. С его помощью несколько серверов могут совместно использовать один виртуальный IP-адрес, который «переезжает» между ними при сбое.
Механизм основан на протоколе VRRP: один сервер считается основным, остальные — резервными. Если основной узел выходит из строя, резервный автоматически принимает виртуальный IP и продолжает обслуживание запросов. Для пользователей и клиентов это выглядит как непрерывная работа сервиса.

Выполняем пошаговую установку keepalived в Ubuntu 24.04.
Это необходимо для настройки кластера Opensearch на плавающий VIP - virtual ip адрес.
Схема такая:
- OpenSearch-кластер: 3 ноды живут как жили (9300/9200).
- Программа keepalived: поднимает один VIP на одной из нод.
- Клиенты ходят на VIP:9200, а VIP переедет на другую машину, если текущий сервер выйдет из строя.
| Имя ноды | IP ноды |
|---|---|
| os-node-1 | 10.0.1.1 |
| os-node-2 | 10.0.1.2 |
| os-node-3 | 10.0.1.3 |
Выделенный IP под VIP: 10.0.1.10/24
На Node-1: Устанавливаем программу:
| |
Далее правим файл:
| |
Конфигурация:
| |
| Параметр | Описание |
|---|---|
| vrrp_script chk_opensearch | Это health-check, который влияет на выбор MASTER. |
| script “nc -zv t-os-1 9200” | выполняется команда, keepalived смотрит код возврата (0 = ок, не 0 = плохо). |
| interval 3 | запуск каждые 3 секунды |
| timeout 4 | если команда дольше 4 сек, то считается провалом |
| rise 2 | нужно 2 успешных проверки подряд, чтобы снова считать “ок” |
| fall 2 | нужно 2 провала подряд, чтобы считать “плохо” |
| weight 2 | изменяет приоритет VRRP, когда скрипт ок/не ок |
| vrrp_instance VI_1 | кто держит VIP |
| state MASTER | начальная роль на этом узле. На остальных должно быть BACKUP |
| interface ens160 | интерфейс, на котором будет VIP |
| priority 103 | приоритет (больше = чаще станет MASTER) |
| virtual_router_id 53 | идентификатор VRRP-группы |
| advert_int 1 | частота объявлений (в секундах) |
| unicast_src_ip 10.0.1.1 | локальный IP этого узла |
| unicast_peer 10.0.1.2 10.0.1.3 | IP соседей |
| virtual_ipaddress 10.0.1.10/24 | сам VIP |
| track_script { chk_elasticdb } | привязка health-check к инстансу |
Замени имя os-node-1 на имя своего сервераinterface также замени на свой.
Адреса unicast_src_ip текущий ip адрес.unicast_peer другие нодыvirtual_ipaddress свободный общий ip (VIP)
Запускаем:
| |
На Node-2:
| |
Далее правим конфигурацию:
| |
Конфигурация:
| |
Запускаем:
| |
На Node-3:
| |
Далее правим конфигурацию:
| |
Конфигурация:
| |
Запускаем службу и проверяем статус:
| |
Также на всех хостах Opensearch нужно заменить адрес в конфигурации:
| |
На 0.0.0.0
| |
Перезапуск сервиса
| |
Установка и настройка выполнена.
