Конфигурация VIP при помощи Keepalived на ВМ в облаке AituCloud

Предварительные условия:
  • В облаке развернуто минимум две ВМ (backend01, backend02).

  • У вас есть сеть и подсеть в OpenStack, где будет размещён VIP.

  • На сетевых портах ВМ необходимо разрешить allowed address pairs.


Шаг 1. Создание порта для VIP

Создайте порт с фиксированным IP в нужной подсети (VIP-адрес):

openstack port create --network <имя-сети> \ --fixed-ip subnet=<имя-подсети>,ip-address=<VIP-адрес> \ vrrp-port

Пример:

openstack port create --network net-public \ --fixed-ip subnet=subnet-public,ip-address=10.0.0.252 \ vrrp-port-100

Шаг 2. Разрешение allowed address pairs

Чтобы ВМ принимали трафик по VIP, нужно разрешить его на их сетевых портах.

  1. Найдите ID порта ВМ:

openstack port list --server backend01
  1. Добавьте allowed address pairs:

openstack port set --allowed-address ip-address=<VIP-адрес> <ID-порта>

Повторите для всех ВМ, участвующих в VRRP.


Шаг 3. Установка keepalived

На каждой ВМ установите пакет:

Debian/Ubuntu:

sudo apt update && sudo apt install -y keepalived

RHEL/CentOS/AlmaLinux/Fedora:

sudo dnf install -y keepalived

Шаг 4. Конфигурация keepalived
backend01 (MASTER)

Файл /etc/keepalived/keepalived.conf:

global_defs { router_id BACKEND01 } vrrp_instance VI_1 { state MASTER interface <имя-интерфейса>     # например, eth0 virtual_router_id <VRID>        # например, 252 priority 120 advert_int 1 authentication { auth_type PASS auth_pass mysecret } virtual_ipaddress { <VIP-адрес>/<маска>          # например, 10.0.0.252/24 } }

backend01 (BACKUP)

Файл /etc/keepalived/keepalived.conf:

global_defs {
router_id BACKEND02 } vrrp_instance VI_1 { state BACKUP interface <имя-интерфейса>     # например, eth0 virtual_router_id <VRID>        # например, 252 priority 100 advert_int 1 authentication { auth_type PASS auth_pass mysecret } virtual_ipaddress { <VIP-адрес>/<маска>          # например, 10.0.0.252/24 } }

Шаг 5. Запуск и проверка

Запустите сервис:

sudo systemctl enable --now keepalived

Проверьте статус:

systemctl status keepalived

Убедитесь, что VIP привязан к MASTER:

ip a show dev eth0

Шаг 6. Тестирование отказоустойчивости
  1. С внешней машины выполните:

ping 10.0.0.252
  1. Остановите keepalived на MASTER:

sudo systemctl stop keepalived
  1. Убедитесь, что VIP перешёл на BACKUP.

  2. Запустите сервис обратно:

sudo systemctl start keepalived

VIP снова вернётся на MASTER.