Добавить в корзинуПозвонить
Найти в Дзене

Установка и настройка keepalived на примере MultiFactor Ldap Adapter

Есть два сервера с операционной системой Ubuntu 20.04.4 LTS. Но обоих серверах развёрнут LDAP proxy сервер на базе Multifactor. По сути это обычные LDAPS сервера, которые неплохо было бы объединить в один отказоустойчивый кластер Master— Slave с плавающим виртуальным IP-адресом. Сделаем это с помощью keepalived. keepalived — это open source программное обеспечение (написано на C), предназначенное для обеспечения функций высокой надежности (high availabilitty) и балансировки нагрузки (load-balancing) в кластерах Linux. За первую функцию отвечает реализация протокола VRRP, а вторая основывается на модуле ядра IPVS. VRRP (Virtual Router Redundancy Protocol) — сетевой протокол, предназначенный для увеличения доступности маршрутизаторов, выполняющих роль шлюза по умолчанию. Это достигается путём объединения группы маршрутизаторов в один виртуальный маршрутизатор и назначения им общего IP-адреса, который и будет использоваться как шлюз по умолчанию для компьютеров в сети. IPVS (IP Virtual Se
Оглавление

Есть два сервера с операционной системой Ubuntu 20.04.4 LTS. Но обоих серверах развёрнут LDAP proxy сервер на базе Multifactor. По сути это обычные LDAPS сервера, которые неплохо было бы объединить в один отказоустойчивый кластер Master— Slave с плавающим виртуальным IP-адресом. Сделаем это с помощью keepalived.

keepalived — это open source программное обеспечение (написано на C), предназначенное для обеспечения функций высокой надежности (high availabilitty) и балансировки нагрузки (load-balancing) в кластерах Linux. За первую функцию отвечает реализация протокола VRRP, а вторая основывается на модуле ядра IPVS.
VRRP (Virtual Router Redundancy Protocol) — сетевой протокол, предназначенный для увеличения доступности маршрутизаторов, выполняющих роль шлюза по умолчанию. Это достигается путём объединения группы маршрутизаторов в один виртуальный маршрутизатор и назначения им общего IP-адреса, который и будет использоваться как шлюз по умолчанию для компьютеров в сети.
IPVS (IP Virtual Server) — модуль ядра Linux, реализующий балансировку нагрузки транспортного уровня, обычно называемую коммутацией уровня 4. L4-маршрутизатор.

Установка keepalived

В популярных ОС keepalived имеется в официальных репозиториях. Deb:

apt update
apt install keepalived

Rpm:

yum install keepalived

Настройка кластера

  • На первом сервере настроен IP адрес: 10.12.49.150
  • На первом сервере настроен IP адрес: 10.12.49.151

Выделяем новый IP адрес, который будет использоваться в качестве виртуального: 10.12.49.155.

Настраиваем конфигурационный файл /etc/keepalived/keepalived.conf на первом сервере:

cd /etc/keepalived
vim keepalived.conf

Содержимое:

vrrp_script chk_service {
script "/opt/multifactor-ldap.check.sh"
interval 3
weight 100
user mfa
}

vrrp_instance VI_mf_ldap {
interface ens160
state MASTER
priority 100
virtual_router_id 172
advert_int 1
unicast_src_ip 10.12.49.150
unicast_peer {
10.12.49.151
}
virtual_ipaddress {
10.12.49.155
}
track_script {
chk_service
}
}

Настраиваем конфигурационный файл /etc/keepalived/keepalived.conf на втором сервере:

cd /etc/keepalived
vim keepalived.conf

Содержимое:

vrrp_script chk_service {
script "/opt/multifactor-ldap.check.sh"
interval 3
weight 100
user mfa
}

vrrp_instance VI_mf_ldap {
interface ens160
state BACKUP
priority 50
virtual_router_id 172
advert_int 1
unicast_src_ip 10.12.49.151
unicast_peer {
10.12.49.152
}
virtual_ipaddress {
10.12.49.155
}
track_script {
chk_service
}
}

Давайте посмотрим, что у нас тут есть.

  • vrrp_script — скрипт проверки сервиса,
    chk_service — имя функции
    script — скрипт может быть любым, он должен вернуть код ответа 0 если MultiFactor Ldap Adapter работает нормально, или любой другой ответ если не работает
    interval — периодичность запуска скрипта проверки в секундах
    weight — значение, на которое будет уменьшен приоритет сервера, в случае перехода в состояние FAULT
    user — пользователь, под которым запускается скрипт, в данном случае mfa — пользователь MultiFactor Ldap Adapter
  • vrrp_instance — экземпляр сервиса, назовём VI_mf_ldap
    interface — имя сетевого интерфейса
    state — начальное состояние при запуске. На главном MASTER, на втором BACKUP
    priority — приоритет выбора главного сервера
    virtual_router_id — уникальный идентификатор VRRP экземпляра, должен быть одинаковым на всех серверах экземпляра VRRP
    advert_int — периодичность оповещения мастером других нод время в секундах, если за данное время мастер не успеет отправить широковещательный сигнал, начнутся выборы другого мастера на основе priority
    unicast_src_ip — адрес источник VRRP пакетов
    unicast_peer — адреса получатели VRRP пакетов
    virtual_ipaddress — блок виртуальных IP адресов, которые будут активны на мастере, должны совпадать на всех серверах экземпляра VRRP
    track_script — мониторинг с использованием скрипта, который должен возвращать 0 если проверка завершилась успешно
Есть примеры с использованием опции authentication. Она устарела и была удалена из VRRPv2 в спецификации RFC3768 в 2004 году. Рекомендуется избегать использования этой опции.

Создадим скрипт /opt/multifactor-ldap.check.sh, он должен вернуть код ответа 0, если сервис MultiFactor Ldap Adapter работает нормально.

#!/bin/bash
systemctl is-active multifactor-ldap > /dev/null 2>&1

Дадим права на него пользователю mfa:

chown mfa: /opt/multifactor-ldap.check.sh
chmod 700 /opt/multifactor-ldap.check.sh

Запуск кластера

На мастере:

systemctl enable keepalived
systemctl start keepalived
systemctl status keepalived
ip a
-2

Мы увидели второй виртуальный IP адрес 10.12.49.155.

На бэкапе:

systemctl enable keepalived
systemctl start keepalived
systemctl status keepalived
ip a
-3

Проверяем на бэкапе работу VRRP:

Ловим VRRP пакеты с помощью tcpdump

tcpdump -i ens160 vrrp
-4

Для проверки остановим на мастере службу multifactor-ldap.

systemctl stop multifactor-ldap
-5

И виртуальный IP переехал на вторую ноду.

Источник:

Установка и настройка keepalived на примере MultiFactor Ldap Adapter | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу. Пишите комментарии, задавайте вопросы, подписывайтесь.