Featured image of post Настройка Keepalived для Opensearch

Настройка Keepalived для Opensearch

Пример пошаговой настройки Keepalived в Linux

Телега, где собираю единомышленников
Можно задать вопрос или просто пообщаться
Присоединяйся Telegram

Что такое 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-110.0.1.1
os-node-210.0.1.2
os-node-310.0.1.3

Выделенный IP под VIP: 10.0.1.10/24

На Node-1: Устанавливаем программу:

1
apt install keepalived -y

Далее правим файл:

1
nano /etc/keepalived/keepalived.conf

Конфигурация:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vrrp_script chk_opensearch {
    script "nc -zv os-node-1 9200"
    interval 3
    timeout 4
    weight 2
    rise 2
    fall 2
}
vrrp_instance VI_1 {
    state MASTER
    interface ens160
    priority 103
    virtual_router_id 53
    advert_int        1
    unicast_src_ip 10.0.1.1
    unicast_peer {
      10.0.1.2
          10.0.1.3
    }
    virtual_ipaddress {
        10.0.1.10/24
    }
    track_script {
        chk_opensearch
    }
}
ПараметрОписание
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.3IP соседей
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)

Запускаем:

1
2
systemctl enable --now keepalived
systemctl status keepalived

На Node-2:

1
apt install keepalived -y

Далее правим конфигурацию:

1
nano /etc/keepalived/keepalived.conf

Конфигурация:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vrrp_script chk_opensearch {
    script "nc -zv os-node-2 9200"
    interval 3
    timeout 4
    weight 2
    rise 2
    fall 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    priority 102
    virtual_router_id 53
    advert_int        1
    unicast_src_ip 10.0.1.3
    unicast_peer {
      10.0.1.1
          10.0.1.3
    }
    virtual_ipaddress {
        10.0.1.10/24
    }
    track_script {
        chk_opensearch
    }
}

Запускаем:

1
2
systemctl enable --now keepalived
systemctl status keepalived

На Node-3:

1
apt install keepalived -y

Далее правим конфигурацию:

1
nano /etc/keepalived/keepalived.conf

Конфигурация:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vrrp_script chk_opensearch {
    script "nc -zv os-node-3 9200"
    interval 3
    timeout 4
    weight 2
    rise 2
    fall 2
}
vrrp_instance VI_1 {
    state MASTER
    interface ens160
    priority 101
    virtual_router_id 53
    advert_int        1
    unicast_src_ip 10.0.1.3
    unicast_peer {
      10.0.1.2
          10.0.1.1
    }
    virtual_ipaddress {
        10.0.1.10/24
    }
    track_script {
        chk_opensearch
    }
}

Запускаем службу и проверяем статус:

1
2
systemctl enable --now keepalived
systemctl status keepalived

Также на всех хостах Opensearch нужно заменить адрес в конфигурации:

1
nano /usr/share/opensearch/config/opensearch.yml

На 0.0.0.0

1
network.host: "0.0.0.0"

Перезапуск сервиса

1
systemctl restart opensearch

Установка и настройка выполнена.

Информацию можно использовать в свободном доступе, с указанием ссылки на сайт
Telegram GitHub YouTube