2026-08-16 21:43:02 +03:00
|
|
|
# Единственный источник правды по адресам стенда шага 1.
|
|
|
|
|
# Используется entrypoint.sh (сборка моста) и pipeline.sh (генерация OpenFlow).
|
|
|
|
|
# Значения здесь должны совпадать с docker-compose.yml.
|
|
|
|
|
|
|
|
|
|
BR=br-lb
|
|
|
|
|
OF=OpenFlow15
|
|
|
|
|
CT_ZONE=1
|
|
|
|
|
|
|
|
|
|
# --- сеть 1: публичный сегмент (macvlan поверх enp3s0, реальный L2 LAN) -------
|
|
|
|
|
# IP-адреса ниже существуют ТОЛЬКО в OpenFlow-правилах: ARP-респондер отвечает
|
|
|
|
|
# на них MAC-адресом PUB_MAC. На интерфейсе адрес не настраивается.
|
|
|
|
|
PUB_IFNAME=pub0
|
|
|
|
|
PUB_OFPORT=1
|
|
|
|
|
PUB_MAC=02:42:c0:a8:05:14
|
|
|
|
|
PUB_NET=192.168.5.0/24
|
|
|
|
|
LB_PUB_IP=192.168.5.20
|
|
|
|
|
VIP=192.168.5.21
|
|
|
|
|
VIP_PORT=80
|
|
|
|
|
|
2026-08-17 16:59:16 +03:00
|
|
|
# --- сеть 2: приватный сегмент 10.20.0.0/24 ----------------------------------
|
|
|
|
|
# С шага 3 сегмент коммутирует сам br-lb: каждая ВМ сегмента подключена
|
|
|
|
|
# отдельным портом (см. scripts/attach-segment.sh). Порт p2 остался аплинком к
|
|
|
|
|
# docker-бриджу: через него идёт egress бэкендов на шлюз .254 (профиль A).
|
|
|
|
|
#
|
|
|
|
|
# Адрес шлюза LB_P2_IP и VIP приватного листенера P2_VIP отвечают одним MAC
|
|
|
|
|
# (P2_MAC) — по нему пайплайн отличает L3-трафик к маршрутизатору от
|
|
|
|
|
# L2-трафика сегмента.
|
2026-08-19 12:33:48 +03:00
|
|
|
#
|
|
|
|
|
# BE*_MAC (шаг 5): это уже не источник правды для OpenFlow, а «заводской» MAC,
|
|
|
|
|
# который attach-segment.sh назначает интерфейсу ВМ — эмуляция того, что в
|
|
|
|
|
# реальности прошито в NIC сервера. В таблицу 21 этот MAC не подставляется:
|
|
|
|
|
# его заново резолвит hcd через обычный ARP на hcif-порту (hc/neigh.go) и
|
|
|
|
|
# заливает в датапас сам. pipeline.sh эти переменные больше не читает.
|
2026-08-16 21:43:02 +03:00
|
|
|
P2_IFNAME=p2
|
|
|
|
|
P2_OFPORT=2
|
|
|
|
|
P2_MAC=02:42:0a:14:00:01
|
|
|
|
|
P2_NET=10.20.0.0/24
|
2026-08-17 16:59:16 +03:00
|
|
|
P2_DOCKER_GW=10.20.0.254
|
2026-08-16 21:43:02 +03:00
|
|
|
LB_P2_IP=10.20.0.1
|
|
|
|
|
BE1_IP=10.20.0.2
|
|
|
|
|
BE1_MAC=02:42:0a:14:00:02
|
|
|
|
|
BE1_PORT=8080
|
2026-08-17 16:59:16 +03:00
|
|
|
BE1_OFPORT=10
|
|
|
|
|
BE1_ID=0x1
|
2026-08-16 21:43:02 +03:00
|
|
|
BE3_IP=10.20.0.3
|
|
|
|
|
BE3_MAC=02:42:0a:14:00:03
|
|
|
|
|
BE3_PORT=8080
|
2026-08-17 16:59:16 +03:00
|
|
|
BE3_OFPORT=11
|
|
|
|
|
BE3_ID=0x3
|
|
|
|
|
# Клиент внутри сегмента — та самая ВМ, что живёт рядом с бэкендами.
|
|
|
|
|
# В его ОС не настраивается ничего, кроме адреса: VIP находится в его подсети.
|
|
|
|
|
CLI2_IP=10.20.0.10
|
|
|
|
|
CLI2_MAC=02:42:0a:14:00:0a
|
|
|
|
|
CLI2_OFPORT=12
|
2026-08-16 21:43:02 +03:00
|
|
|
# Уникальный адрес узла в сегменте — источник health-проб (§7.1 дизайна v1).
|
|
|
|
|
# Живёт на internal-порту OVS: это единственный адрес, который узел держит в
|
|
|
|
|
# ядре, весь остальной форвардинг идёт мимо стека.
|
|
|
|
|
HC2_IFNAME=hcif-p2
|
|
|
|
|
HC2_OFPORT=4
|
|
|
|
|
HC2_MAC=02:42:0a:14:00:fd
|
|
|
|
|
HC2_IP=10.20.0.253
|
|
|
|
|
|
2026-08-17 16:59:16 +03:00
|
|
|
# --- сеть 3: приватный сегмент 10.30.0.0/24 ----------------------------------
|
2026-08-16 21:43:02 +03:00
|
|
|
P3_IFNAME=p3
|
|
|
|
|
P3_OFPORT=3
|
|
|
|
|
P3_MAC=02:42:0a:1e:00:01
|
|
|
|
|
P3_NET=10.30.0.0/24
|
2026-08-17 16:59:16 +03:00
|
|
|
P3_DOCKER_GW=10.30.0.254
|
2026-08-16 21:43:02 +03:00
|
|
|
LB_P3_IP=10.30.0.1
|
|
|
|
|
BE2_IP=10.30.0.2
|
|
|
|
|
BE2_MAC=02:42:0a:1e:00:02
|
|
|
|
|
BE2_PORT=8080
|
2026-08-17 16:59:16 +03:00
|
|
|
BE2_OFPORT=20
|
|
|
|
|
BE2_ID=0x2
|
2026-08-16 21:43:02 +03:00
|
|
|
BE4_IP=10.30.0.3
|
|
|
|
|
BE4_MAC=02:42:0a:1e:00:03
|
|
|
|
|
BE4_PORT=8080
|
2026-08-17 16:59:16 +03:00
|
|
|
BE4_OFPORT=21
|
|
|
|
|
BE4_ID=0x4
|
|
|
|
|
CLI3_IP=10.30.0.10
|
|
|
|
|
CLI3_MAC=02:42:0a:1e:00:0a
|
|
|
|
|
CLI3_OFPORT=22
|
2026-08-16 21:43:02 +03:00
|
|
|
HC3_IFNAME=hcif-p3
|
|
|
|
|
HC3_OFPORT=5
|
|
|
|
|
HC3_MAC=02:42:0a:1e:00:fd
|
|
|
|
|
HC3_IP=10.30.0.253
|
|
|
|
|
|
2026-08-17 16:59:16 +03:00
|
|
|
# --- приватные листенеры (шаг 3) ---------------------------------------------
|
|
|
|
|
# VIP берётся из подсети сегмента: клиенту не нужны ни маршруты, ни настройки —
|
|
|
|
|
# адрес находится в его собственной сети, ARP-респондер OVS отвечает за него.
|
|
|
|
|
#
|
|
|
|
|
# PRIV_LISTENERS перечисляет сегменты, где листенер поднят. Пустое значение
|
|
|
|
|
# выключает приватные листенеры целиком, "p2" — включает один сегмент,
|
|
|
|
|
# "p2 p3" — оба. Пул и таблица слотов общие с публичным листенером.
|
|
|
|
|
PRIV_LISTENERS="p2 p3"
|
|
|
|
|
PRIV_VIP_PORT=80
|
|
|
|
|
P2_VIP=10.20.0.100
|
|
|
|
|
P3_VIP=10.30.0.100
|
|
|
|
|
|
2026-08-16 21:43:02 +03:00
|
|
|
# --- пул и таблица слотов ----------------------------------------------------
|
|
|
|
|
# POOL_ID служит basis хэша multipath: разные пулы дают независимые раскладки.
|
|
|
|
|
POOL_ID=1
|
|
|
|
|
# Слотов на пул (§5.1 дизайна v1). Определяет гранулярность весов.
|
|
|
|
|
SLOTS=1024
|
|
|
|
|
|
|
|
|
|
# --- health-check ------------------------------------------------------------
|
|
|
|
|
HC_PROBE=http # http | tcp
|
|
|
|
|
HC_HTTP_PATH=/healthz
|
|
|
|
|
HC_INTERVAL=2s
|
|
|
|
|
HC_TIMEOUT=1s
|
|
|
|
|
HC_RISE=2 # успехов подряд для перевода в up
|
|
|
|
|
HC_FALL=3 # неудач подряд для перевода в down
|
|
|
|
|
HC_API=127.0.0.1:9111
|