Настройка VRRP
Введение
VRRP (Virtual Router Redundancy Protocol) — протокол, позволяющий объединить несколько физических маршрутизаторов (в нашем случае — агентов балансировки) в один виртуальный маршрутизатор с общим VIP-адресом. В любой момент времени активен только один агент (MASTER), который обрабатывает трафик, приходящий на VIP. Остальные агенты (BACKUP) находятся в режиме ожидания и берут на себя нагрузку только при отказе MASTER.
Когда выбирать VRRP, а когда BGP
| Критерий | VRRP | BGP |
|---|---|---|
| Сеть | Только в пределах одного 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
| Характеристика | VRRPv2 | VRRPv3 |
|---|---|---|
| IPv6 | Нет | Да |
| Дробный advert_interval | Нет (только целые секунды) | Да (от 0.01 сек) |
| Минимальный интервал анонсов | 1 секунда | 0.01 секунды |
| Аутентификация | Поддерживается (текст, MD5) | Отсутствует |
Для использования VRRPv3 с дробным интервалом анонсов и unicast-режимом требуется keepalived версии 2.2.0 или новее. Установка keepalived описана в разделе Подготовка серверов.
Предварительные требования
Перед настройкой VRRP убедитесь, что выполнены следующие шаги. Без них создать работающую конфигурацию балансировки с VRRP будет невозможно.
- Создан SLB-кластер (тип «SLB-кластер» или «NLB-кластер»). Если кластера ещё нет, следуйте инструкции Создание кластера балансировки (через интерфейс системы вы получите команду для развёртывания).
- В кластере присутствуют как минимум два агента (модуля балансировки), на которых будет работать VRRP. Агенты должны быть развёрнуты и подключены к кластеру.
- Добавлены клиентские серверы и группы серверов (бэкенды), на которые будет направляться трафик. Это обязательное требование — позже при создании конфигурации балансировки вам нужно будет выбрать группу серверов. Инструкции:
- (Рекомендуется) Настроены мониторы для проверки доступности серверов. Мониторы подключаются к группе серверов и позволяют балансировщику исключать неработоспособные бэкенды. Инструкция: Добавление монитора.
- Добавлены виртуальные IP-адреса (VIP) в разделе Сеть → Добавление IP/VIP (инструкция). Это необходимо для того, чтобы балансировщик мог привязать VIP к сетевым интерфейсам. В настройках VRRP вы будете вводить те же адреса вручную (см. ниже).
Важно: Группа серверов должна быть создана до создания конфигурации балансировки. В противном случае при выборе группы в конфигурации вы увидите пустой список.
Создание конфигурации балансировки с VRRP
- Перейдите в раздел Главная → Кластеры балансировки → выберите нужный SLB-кластер.
- Откройте вкладку Конфигурации балансировки и нажмите Добавить конфигурацию балансировки.
- На вкладке L4/L7 найдите секцию «Отказоустойчивость (HA)»:
- Включите ползунок (переключатель), чтобы активировать настройки отказоустойчивости.
- В поле «Тип» выберите VRRP.
- При необходимости выберите Режим обнаружения соседей (Multicast или Unicast). В большинстве случаев оставляйте Multicast, если сеть его поддерживает.
- Опция «Автоанонс VIP (RHI) при доступности сервисов» — обычно не требуется для VRRP, если вы не используете одновременно BGP для распространения маршрутов за пределы L2-сегмента.
- В этой же секции нажмите Добавить, чтобы создать блок параметров 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 и приоритетов.
- Заполните Интервал анонсов (сек) — как часто MASTER отправляет VRRP-пакеты. Для VRRPv2 указывайте целое число (≥1), для VRRPv3 можно дробное (например,
- Заполните остальные вкладки конфигурации балансировки согласно вашим потребностям. Обратите особое внимание на вкладку Сервисы:
- В секции «Группы серверов» выберите созданную ранее группу серверов. Если группа не выбрана, конфигурация не сможет балансировать трафик.
- При необходимости добавьте несколько групп с разными приоритетами (для резервирования).
- Нажмите Сохранить.
После сохранения система сгенерирует конфигурацию keepalived на агентах и назначит MASTER согласно указанным приоритетам.
Настройка мониторов для групп серверов (рекомендовано)
Чтобы балансировщик автоматически исключал из обработки неработоспособные бэкенды, необходимо подключить мониторы к группе серверов.
Без мониторов балансировщик будет направлять трафик на все серверы группы, даже если они недоступны, что приведёт к ошибкам для клиентов.
- Перейдите в раздел Главная → Кластеры балансировки → выберите кластер → Клиентские серверы → вкладка Группы серверов.
- Создайте или отредактируйте группу, которая будет использоваться в конфигурации балансировки.
- В секции «Проверка здоровья» нажмите Управление мониторами и добавьте нужные мониторы (например, HTTP, ICMP, TCP). Если мониторов ещё нет, создайте их по инструкции Добавление монитора.
- В секции «Условия переключения группы» задайте порог (количество или процент доступных серверов), при котором группа считается работоспособной.
- Сохраните группу.
После этого балансировщик будет направлять трафик только на здоровые серверы.
Мониторинг VRRP-статуса
Через веб-интерфейс
- В разделе кластера → Агенты в столбце «Состояние» отображается статус каждого агента (MASTER, BACKUP, FAULT).
- В конфигурации балансировки на вкладке L4/L7 в секции VRRP также можно увидеть текущий статус агентов.
Через API
Для получения детальной информации о VRRP-настройках предусмотрен API-метод (только чтение):
Запрос:
GET /api/v1/clusters/{clusterId}/services/{serviceId}/vrrp_statusОтвет содержит для каждого VRRP-блока:
vrid— Virtual Router IDvips— список 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 для конфигурации балансировки:
- Отредактируйте конфигурацию балансировки.
- На вкладке L4/L7 в секции «Отказоустойчивость (HA)» выключите ползунок.
- Сохраните конфигурацию.
Система удалит соответствующие настройки VRRP из конфигурации keepalived на агентах. VIP-адреса, привязанные к этой конфигурации, останутся, но перестанут управляться VRRP. При необходимости удалите их вручную в разделе Сеть → IP/VIP.