Установка и настройка Keepalived
Keepalived — программный пакет с открытым исходным кодом, который обеспечивает высокую доступность (HA) и отказоустойчивость для систем на базе Linux. Он используется для:
-
управления виртуальными IP-адресами (VIP);
-
обеспечения бесперебойной доступности сервисов в сценариях, где могут произойти сбои системы или приложения.
В этом разделе описано, как установить и настроить Keepalived для операционных систем: РЕД ОС, Astra Linux, Debian, Alt Linux и OpenSuse.
1. Установка Keepalived на серверах
Перед установкой проверьте, что Keepalived установлен на серверах:
-
основном;
-
резервном.
Его можно установить с помощью менеджера пакетов системы для:
- РЕД ОС
sudo dnf install keepalived
- Astra Linux
sudo apt install keepalived
- Debian
sudo apt install keepalived
- Alt Linux
sudo apt-get install keepalived
- OpenSUSE
sudo zypper install keepalived
2. Настройка Keepalived на основном сервере
-
Отредактируйте файл конфигурации Keepalived, который по умолчанию находится по адресу
/etc/keepalived/keepalived.conf, на основном сервере с помощью команды ниже:sudo nano /etc/keepalived/keepalived.conf -
Добавьте следующую конфигурацию в файл:
vrrp_instance VI_1 { state MASTER interface %Имя_сетевого_интерфейса% virtual_router_id %Уникальный_идентификатор_роутера_VRRP% priority %Приоритет_основного_сервера% advert_int %Интервал_обновления_состояния_сервера% authentication { auth_type PASS auth_pass %Пароль% } virtual_ipaddress { %Виртуальный_IP-адрес% } }Где:
-
%Имя_сетевого_интерфейса% — имя сетевого интерфейса, например «eth0».
-
%Уникальный_идентификатор_роутера_VRRP% — уникальный идентификатор роутера VRRP, например «51». Он должен совпадать на серверах.
-
%Приоритет_основного_сервера% — приоритет основного сервера, например «100». Он должен быть выше, чем на резервном.
-
%Интервал_обновления_состояния_сервера% — интервал обновления состояния сервера, например «1».
-
%Пароль% — пароль, например «password123». Он должен быть одинаковым на серверах.
-
%Виртуальный_IP-адрес% — VIP для службы, например «192.168.1.100».
-
-
Сохраните и закройте файл.
-
Чтобы применить изменения, перезапустите Keepalived с помощью команд:
sudo systemctl restart keepalived sudo systemctl enable keepalived
3. Настройка Keepalived на резервном сервере
-
Отредактируйте файл конфигурации Keepalived, который по умолчанию находится по адресу
/etc/keepalived/keepalived.conf, на резервном сервере с помощью команды ниже:sudo nano /etc/keepalived/keepalived.conf -
Добавьте следующую конфигурацию в файл:
vrrp_instance VI_1 { state BACKUP interface %Имя_сетевого_интерфейса% virtual_router_id %Уникальный_идентификатор_роутера_VRRP% priority %Приоритет_резервного_сервера% advert_int %Интервал_обновления_состояния_сервера% authentication { auth_type PASS auth_pass %Пароль% } virtual_ipaddress { %Виртуальный_IP-адрес% } }Где:
-
%Имя_сетевого_интерфейса% — имя сетевого интерфейса, например «eth0».
-
%Уникальный_идентификатор_роутера_VRRP% — уникальный идентификатор роутера VRRP, например «51». Он должен совпадать на серверах.
-
%Приоритет_резервного_сервера% — приоритет резервного сервера, например «90». Он должен быть ниже, чем на основном.
-
%Интервал_обновления_состояния_сервера% — интервал обновления состояния сервера, например «1».
-
%Пароль% — пароль, например «password123». Он должен быть одинаковым на серверах.
-
%Виртуальный_IP-адрес% — VIP для службы, например «192.168.1.100».
-
-
Сохраните и закройте файл.
-
Чтобы применить изменения, перезапустите Keepalived с помощью команд:
sudo systemctl restart keepalived
sudo systemctl enable keepalived
4. Проверка работоспособности
-
Проверьте, что Keepalived работает на серверах с помощью команды:
sudo systemctl status keepalived -
Проверьте, какой из серверов обрабатывает VIP.
ip a | grep %Виртуальный_IP-адрес%На основном сервере этот IP-адрес должен быть привязан к сетевому интерфейсу.
-
Для тестирования отказоустойчивости отключите сетевой интерфейс на основном сервере с помощью команды:
sudo ifdown %Имя_сетевого_интерфейса% -
После отключения основного сервера VIP должен автоматически перейти на резервный сервер. Это можно проверить с помощью команды:
ip a | grep %Виртуальный_IP-адрес% -
Восстановите работу интерфейса на основном сервере:
sudo ifup %Имя_сетевого_интерфейса%