Files

113 lines
5.1 KiB
Bash
Raw Permalink Normal View History

# Единственный источник правды по адресам стенда шага 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
# --- сеть 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-трафика сегмента.
#
# BE*_MAC (шаг 5): это уже не источник правды для OpenFlow, а «заводской» MAC,
# который attach-segment.sh назначает интерфейсу ВМ — эмуляция того, что в
# реальности прошито в NIC сервера. В таблицу 21 этот MAC не подставляется:
# его заново резолвит hcd через обычный ARP на hcif-порту (hc/neigh.go) и
# заливает в датапас сам. pipeline.sh эти переменные больше не читает.
P2_IFNAME=p2
P2_OFPORT=2
P2_MAC=02:42:0a:14:00:01
P2_NET=10.20.0.0/24
P2_DOCKER_GW=10.20.0.254
LB_P2_IP=10.20.0.1
BE1_IP=10.20.0.2
BE1_MAC=02:42:0a:14:00:02
BE1_PORT=8080
BE1_OFPORT=10
BE1_ID=0x1
BE3_IP=10.20.0.3
BE3_MAC=02:42:0a:14:00:03
BE3_PORT=8080
BE3_OFPORT=11
BE3_ID=0x3
# Клиент внутри сегмента — та самая ВМ, что живёт рядом с бэкендами.
# В его ОС не настраивается ничего, кроме адреса: VIP находится в его подсети.
CLI2_IP=10.20.0.10
CLI2_MAC=02:42:0a:14:00:0a
CLI2_OFPORT=12
# Уникальный адрес узла в сегменте — источник 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
# --- сеть 3: приватный сегмент 10.30.0.0/24 ----------------------------------
P3_IFNAME=p3
P3_OFPORT=3
P3_MAC=02:42:0a:1e:00:01
P3_NET=10.30.0.0/24
P3_DOCKER_GW=10.30.0.254
LB_P3_IP=10.30.0.1
BE2_IP=10.30.0.2
BE2_MAC=02:42:0a:1e:00:02
BE2_PORT=8080
BE2_OFPORT=20
BE2_ID=0x2
BE4_IP=10.30.0.3
BE4_MAC=02:42:0a:1e:00:03
BE4_PORT=8080
BE4_OFPORT=21
BE4_ID=0x4
CLI3_IP=10.30.0.10
CLI3_MAC=02:42:0a:1e:00:0a
CLI3_OFPORT=22
HC3_IFNAME=hcif-p3
HC3_OFPORT=5
HC3_MAC=02:42:0a:1e:00:fd
HC3_IP=10.30.0.253
# --- приватные листенеры (шаг 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
# --- пул и таблица слотов ----------------------------------------------------
# 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