Настройка VRRP

Введение

VRRP (Virtual Router Redundancy Protocol) — протокол, позволяющий объединить несколько физических маршрутизаторов (в нашем случае — агентов балансировки) в один виртуальный маршрутизатор с общим VIP-адресом. В любой момент времени активен только один агент (MASTER), который обрабатывает трафик, приходящий на VIP. Остальные агенты (BACKUP) находятся в режиме ожидания и берут на себя нагрузку только при отказе MASTER.

Когда выбирать VRRP, а когда BGP

КритерийVRRPBGP
СетьТолько в пределах одного L2-сегмента (одна подсеть, коммутаторы)Работает через L3, подходит для геораспределённых кластеров
Облачные средыТребует unicast-режима (multicast часто заблокирован)Не требует multicast, работает через BGP-пиры
FailoverБыстрый (секунды, можно настроить < 1 сек с VRRPv3)Зависит от таймеров BGP (обычно несколько секунд)
Активность нодActive-Passive или Active-Active (через несколько блоков)Active-Active с балансировкой трафика
Сложность настройкиНизкая (конфигурация через UI)Высокая (требует настройки BGP-соседей)

Ограничения VRRP:

  • Работает только в пределах одного L2-сегмента (нельзя разносить агенты в разные дата-центры).
  • В облачных средах обычно требуется режим Unicast, так как multicast часто заблокирован.

Режимы работы VRRP

Active-Passive (один блок VRRP)

Один набор VIP-адресов, один MASTER, остальные — BACKUP. Весь трафик идёт через MASTER, при его отказе один из BACKUP становится MASTER.

Active-Active (несколько блоков VRRP в одной конфигурации)

В рамках одной конфигурации балансировки можно добавить несколько независимых блоков VRRP (в интерфейсе они называются «Группа 1», «Группа 2» и т.д.). Каждый блок имеет свой набор VIP и свои приоритеты агентов. Например:

  • Блок 1: VIP 10.0.0.99/24 — MASTER на агенте 1, BACKUP на агенте 2.
  • Блок 2: VIP 10.0.0.100/24 — MASTER на агенте 2, BACKUP на агенте 1.

В нормальном режиме нагрузка распределяется между двумя агентами. При отказе одного агента его VIP переходят на оставшийся.

Unicast vs Multicast

РежимОписаниеКогда использовать
Multicast (по умолчанию)VRRP-пакеты отправляются на групповой адрес 224.0.0.18 (VRRPv2) или ff02::12 (VRRPv3).В классических L2-сетях, где multicast разрешён и работает надёжно.
UnicastКаждый агент явно указывает IP-адреса соседей, VRRP-пакеты идут только на них.В облачных средах, где multicast заблокирован, или при использовании VRRP через VPN.

VRRPv2 vs VRRPv3

ХарактеристикаVRRPv2VRRPv3
IPv6НетДа
Дробный advert_intervalНет (только целые секунды)Да (от 0.01 сек)
Минимальный интервал анонсов1 секунда0.01 секунды
АутентификацияПоддерживается (текст, MD5)Отсутствует
⚠️

Для использования VRRPv3 с дробным интервалом анонсов и unicast-режимом требуется keepalived версии 2.2.0 или новее. Установка keepalived описана в разделе Подготовка серверов.

Предварительные требования

Перед настройкой VRRP убедитесь, что выполнены следующие шаги. Без них создать работающую конфигурацию балансировки с VRRP будет невозможно.

  1. Создан SLB-кластер (тип «SLB-кластер» или «NLB-кластер»). Если кластера ещё нет, следуйте инструкции Создание кластера балансировки (через интерфейс системы вы получите команду для развёртывания).
  2. В кластере присутствуют как минимум два агента (модуля балансировки), на которых будет работать VRRP. Агенты должны быть развёрнуты и подключены к кластеру.
  3. Добавлены клиентские серверы и группы серверов (бэкенды), на которые будет направляться трафик. Это обязательное требование — позже при создании конфигурации балансировки вам нужно будет выбрать группу серверов. Инструкции:
  4. (Рекомендуется) Настроены мониторы для проверки доступности серверов. Мониторы подключаются к группе серверов и позволяют балансировщику исключать неработоспособные бэкенды. Инструкция: Добавление монитора.
  5. Добавлены виртуальные IP-адреса (VIP) в разделе Сеть → Добавление IP/VIP (инструкция). Это необходимо для того, чтобы балансировщик мог привязать VIP к сетевым интерфейсам. В настройках VRRP вы будете вводить те же адреса вручную (см. ниже).
⚠️

Важно: Группа серверов должна быть создана до создания конфигурации балансировки. В противном случае при выборе группы в конфигурации вы увидите пустой список.

Создание конфигурации балансировки с VRRP

  1. Перейдите в раздел Главная → Кластеры балансировки → выберите нужный SLB-кластер.
  2. Откройте вкладку Конфигурации балансировки и нажмите Добавить конфигурацию балансировки.
  3. На вкладке L4/L7 найдите секцию «Отказоустойчивость (HA)»:
    • Включите ползунок (переключатель), чтобы активировать настройки отказоустойчивости.
    • В поле «Тип» выберите VRRP.
    • При необходимости выберите Режим обнаружения соседей (Multicast или Unicast). В большинстве случаев оставляйте Multicast, если сеть его поддерживает.
    • Опция «Автоанонс VIP (RHI) при доступности сервисов» — обычно не требуется для VRRP, если вы не используете одновременно BGP для распространения маршрутов за пределы L2-сегмента.
  4. В этой же секции нажмите Добавить, чтобы создать блок параметров VRRP (в интерфейсе он будет называться «Группа 1»).
    • Заполните Интервал анонсов (сек) — как часто MASTER отправляет VRRP-пакеты. Для VRRPv2 указывайте целое число (≥1), для VRRPv3 можно дробное (например, 0.5).
    • Заполните Задержка восстановления (сек) — время в секундах, которое ранее отказавший MASTER выжидает перед возвратом себе роли (предотвращает «качание»).
    • В блоке VIP-адреса нажмите Добавить и введите виртуальный IP-адрес с маской (например, 192.168.1.100/24). Добавьте все VIP, которые должны обслуживаться этим блоком VRRP. Важно: эти адреса должны совпадать с адресами, которые вы ранее создали в разделе «Добавление IP/VIP» (см. предварительные требования).
    • В блоке Приоритет агентов (отображается в виде таблицы) для каждого агента укажите:
      • Агент (выбирается из списка агентов кластера)
      • Приоритет (от 1 до 255, чем выше, тем больше шансов стать MASTER)
      • Поля Целевое состояние и Текущее состояние заполняются автоматически после применения конфигурации.
    • При необходимости добавьте ещё один блок (для Active-Active) — снова нажмите Добавить и повторите настройку с другим набором VIP и приоритетов.
  5. Заполните остальные вкладки конфигурации балансировки согласно вашим потребностям. Обратите особое внимание на вкладку Сервисы:
    • В секции «Группы серверов» выберите созданную ранее группу серверов. Если группа не выбрана, конфигурация не сможет балансировать трафик.
    • При необходимости добавьте несколько групп с разными приоритетами (для резервирования).
  6. Нажмите Сохранить.

После сохранения система сгенерирует конфигурацию keepalived на агентах и назначит MASTER согласно указанным приоритетам.

Настройка мониторов для групп серверов (рекомендовано)

Чтобы балансировщик автоматически исключал из обработки неработоспособные бэкенды, необходимо подключить мониторы к группе серверов.

ℹ️

Без мониторов балансировщик будет направлять трафик на все серверы группы, даже если они недоступны, что приведёт к ошибкам для клиентов.

  1. Перейдите в раздел Главная → Кластеры балансировки → выберите кластер → Клиентские серверы → вкладка Группы серверов.
  2. Создайте или отредактируйте группу, которая будет использоваться в конфигурации балансировки.
  3. В секции «Проверка здоровья» нажмите Управление мониторами и добавьте нужные мониторы (например, HTTP, ICMP, TCP). Если мониторов ещё нет, создайте их по инструкции Добавление монитора.
  4. В секции «Условия переключения группы» задайте порог (количество или процент доступных серверов), при котором группа считается работоспособной.
  5. Сохраните группу.

После этого балансировщик будет направлять трафик только на здоровые серверы.

Мониторинг VRRP-статуса

Через веб-интерфейс

  • В разделе кластера → Агенты в столбце «Состояние» отображается статус каждого агента (MASTER, BACKUP, FAULT).
  • В конфигурации балансировки на вкладке L4/L7 в секции VRRP также можно увидеть текущий статус агентов.

Через API

Для получения детальной информации о VRRP-настройках предусмотрен API-метод (только чтение):

Запрос:

GET /api/v1/clusters/{clusterId}/services/{serviceId}/vrrp_status

Ответ содержит для каждого VRRP-блока:

  • vrid — Virtual Router ID
  • vips — список VIP-адресов
  • master_agent_uuid — UUID текущего MASTER (пусто, если MASTER отсутствует)
  • agents — статусы агентов: daemon_status (running/stopped/unknown), status (MASTER/BACKUP/FAULT), priority, error (если есть), updated_at

Этот API удобно использовать для интеграции с системами мониторинга.

Ограничения и рекомендации

  • Версия keepalived — строго не ниже 2.2.0. Более старые версии не поддерживают дробные интервалы, unicast и корректную работу nopreempt.
  • Синхронизация времени — на всех агентах должна быть настроена NTP, иначе возможны ложные переключения.
  • Не используйте VRRP для гео-распределения — протокол чувствителен к задержкам и работает только в одном широковещательном домене.
  • В облачных средах всегда выбирайте Unicast и явно перечисляйте IP-адреса агентов.
  • Группы серверов и мониторы должны быть созданы заранее, иначе вы не сможете завершить настройку конфигурации балансировки.

Удаление VRRP-конфигурации

Чтобы полностью отключить VRRP для конфигурации балансировки:

  1. Отредактируйте конфигурацию балансировки.
  2. На вкладке L4/L7 в секции «Отказоустойчивость (HA)» выключите ползунок.
  3. Сохраните конфигурацию.

Система удалит соответствующие настройки VRRP из конфигурации keepalived на агентах. VIP-адреса, привязанные к этой конфигурации, останутся, но перестанут управляться VRRP. При необходимости удалите их вручную в разделе Сеть → IP/VIP.