Разделение управления и рабочего трафика

Разделение управления и рабочего трафика

Введение

На машине модуля балансировки живут два разных потока:

  • управление — установщик, доставка конфигураций, управление службой, SSH;
  • рабочий трафик — балансировка, GSLB, проверки доступности серверов, анонсы маршрутов.

Разводить их по разным адресам и интерфейсам полезно по двум причинам. Отказ или перегрузка рабочей сети не должны лишать администратора управления машиной. И наоборот: сеть управления не должна быть достижима со стороны клиентов балансировщика.

Способ разделения выбирается один раз на всю установку и называется сетевым пресетом. Пресет задаётся в мастере установки на шаге Серверы либо параметром network_preset в файле конфигурации.

Пресеты

Одна сеть (combined)Две сети (separated)Две сети + VRF (isolated)
Адреса на машинеодин: управление и рабочий трафик по одному адресудва: адрес управления и Data IPдва: адрес управления и Data IP
Порты агента и SSHтак, как настроено в самой ОС — установщик барьер не ставитновые подключения на SSH и служебные порты агента принимаются только со стороны управлениятак же, как в «двух сетях»
Маршрутизацияодна таблица на всёодна таблица: сети разделены фильтром, а не маршрутамиdata-интерфейс переносится в отдельный VRF — у рабочего трафика своя таблица маршрутизации
Что подготовить заранееничего сверх адреса управлениявторой интерфейс с уже поднятым адресомто же плюс ядро 5.15 и новее
Если Data IP не заполнитьполе не используетсямашина поднимется как «одна сеть»: трафик пойдёт по адресу управления, барьер портов при этом ставитсяустановка не начнётся

Рекомендуемый вариант — две сети: он даёт разделение без требований к версии ядра.

⚠️

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

Что делает установщик

Барьер портов

В пресетах separated и isolated на каждой машине агента создаётся таблица nftables a5_baseline. Она разрешает новые подключения на SSH и служебные порты агента только с интерфейса управления и с петлевого интерфейса, а остальные считает и отбрасывает. Уже установленные соединения не затрагиваются.

Под барьер попадают порты 22, 50051 (gRPC агента), 50050 (HTTP агента) и 50090 (метрики агента). Если порты агента переопределены, барьер использует их значения.

⚠️

Важно: барьер закрывает и SSH. После установки новые подключения к машине принимаются только со стороны управления. Если вы ходите на машину с другой стороны, перечислите нужные интерфейсы в параметре baseline_fw_extra_interfaces до установки.

Барьер реализуется службой 5a-baseline-fw с файлом правил /etc/5a/5a-baseline.nft.

Барьер можно не ставить — параметр baseline_fw_enabled: false. В пресете combined он не ставится никогда.

Отдельная таблица маршрутизации

В пресете isolated установщик дополнительно создаёт на машине VRF vrf-data с таблицей маршрутизации 5050 и подчиняет ему data-интерфейс. С этого момента рабочий трафик маршрутизируется отдельно от управления: разделение держится маршрутизацией, а не только пакетным фильтром.

Имя vrf-data и номер таблицы 5050 зарезервированы: VRF-профиль с таким именем или номером создать нельзя.

Перед настройкой установщик проверяет, что задан data_interface, что он существует на машине, что на нём не настроен адрес управления и что версия ядра не ниже 5.15. Любая непройденная проверка останавливает установку с указанием причины.

VRF создаёт служба 5a-data-vrf.

Совместимость с вашей автоматизацией

Все службы, которые ставит установщик, имеют префикс 5a-. Их список на машине:

systemctl list-units '5a-*'

На машинах с ролью сетевого агента и на всех машинах пресета isolated установщик дополнительно кладёт файл /etc/systemd/networkd.conf.d/50-5a.conf: он запрещает systemd-networkd удалять маршруты и правила, созданные агентом.

⚠️

Эти службы и файлы правятся только через установщик: ручные изменения будут перезаписаны при следующем запуске. Если на машинах работает ваша система управления конфигурацией, исключите их из-под её контроля — в первую очередь каталог /etc/systemd/networkd.conf.d/, куда пишут и другие средства.

Параметры конфигурации

Параметры задаются в файле конфигурации — общие для всех агентов в секции vars группы 5a-agent, индивидуальные у конкретного хоста.

  • network_preset — пресет: combined, separated (по умолчанию) или isolated. Задаётся один на всю установку.
  • management_address — адрес управления машиной. Если не задан, берётся ansible_host.
  • management_interface — интерфейс управления. Если не задан, определяется по адресу управления; задавать явно нужно, только когда автоматическое определение ошибается.
  • data_ip — адрес рабочего трафика. Если не задан, используется адрес управления.
  • data_interface — интерфейс рабочего трафика. Обязателен для пресета isolated.
  • baseline_fw_enabled — ставить ли барьер портов. По умолчанию true.
  • baseline_fw_extra_interfaces — список интерфейсов, с которых барьер дополнительно пропускает подключения.
  • data_vrf — имя VRF рабочего трафика для пресета isolated. По умолчанию vrf-data; менять стоит, только если устройство с таким именем на машине уже занято.
children:
  5a-agent:
    vars:
      network_preset: isolated
    hosts:
      node1:
        ansible_host: 172.27.1.20
        data_ip: 10.10.10.11
        data_interface: eth1
        run_slb: true
        run_net: true
        slb_cluster_id: "slb-cluster-1"

Проверка после установки

Режим, в котором поднялась машина, возвращает список сетевых агентов кластера:

GET /api/v1/clusters/{clusterId}/network_agents

В ответе по каждому агенту есть поля network_mode (combined, separated, isolated либо unknown), data_vrf и kernel_version. Если ожидался isolated, а пришёл separated, значит машина поднялась без отдельной таблицы маршрутизации — проверьте data_interface и версию ядра.

Устройство vrf-data и подчинённый ему интерфейс видны и в интерфейсе системы, на вкладке Сеть → <сетевой агент> → Интерфейсы.

Смена пресета

Пресет один на всю установку. Чтобы его сменить, измените network_preset и повторно запустите установщик для агентов:

./install.sh agent /home/johndoe/.ssh/id_rsa

Установщик снимает то, что ставил сам: свои службы, VRF рабочего трафика с освобождением data-интерфейса и таблицу барьера. Адреса, интерфейсы и всё, что настроено вне установщика, остаётся без изменений.

⚠️

Смену пресета планируйте как работы с перерывом обслуживания: она затрагивает адресацию и маршрутизацию всех машин установки. Проверьте после неё, что VRF-профили, сегменты которых опирались на data-интерфейс, по-прежнему настроены верно.

Дополнительные материалы