2026-08-16 21:43:02 +03:00
|
|
|
#!/bin/bash
|
|
|
|
|
# Генерация конфигурации демона hcd из topology.env — единственного источника
|
|
|
|
|
# правды по адресам стенда. Пока пул задан статически; на следующем шаге его
|
|
|
|
|
# место займёт модель Load_Balancer -> Listener -> Pool -> Member в OVSDB.
|
2026-08-19 12:33:48 +03:00
|
|
|
#
|
|
|
|
|
# MAC членов пула здесь не фигурирует (шаг 5): hcd резолвит его сам через
|
|
|
|
|
# neigh-таблицу ядра (hc/neigh.go) на интерфейсе "iface" и заливает в таблицу
|
|
|
|
|
# "adj_table" по указанному "ofport". См. docs/STEP5_SUMMARY.md.
|
2026-08-16 21:43:02 +03:00
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
LB_DIR=/opt/lb
|
|
|
|
|
# shellcheck disable=SC1091
|
|
|
|
|
source "$LB_DIR/topology.env"
|
|
|
|
|
|
|
|
|
|
OUT=${1:-/var/run/openvswitch/hc.json}
|
|
|
|
|
|
|
|
|
|
cat > "$OUT" <<EOF
|
|
|
|
|
{
|
|
|
|
|
"bridge": "$BR",
|
|
|
|
|
"of_version": "$OF",
|
|
|
|
|
"pool_id": $POOL_ID,
|
|
|
|
|
"slots": $SLOTS,
|
|
|
|
|
"slot_table": 11,
|
|
|
|
|
"dnat_table": 12,
|
2026-08-19 12:33:48 +03:00
|
|
|
"adj_table": 21,
|
2026-08-16 21:43:02 +03:00
|
|
|
"probe": "$HC_PROBE",
|
|
|
|
|
"http_path": "$HC_HTTP_PATH",
|
|
|
|
|
"interval": "$HC_INTERVAL",
|
|
|
|
|
"timeout": "$HC_TIMEOUT",
|
|
|
|
|
"rise": $HC_RISE,
|
|
|
|
|
"fall": $HC_FALL,
|
|
|
|
|
"api": "$HC_API",
|
|
|
|
|
"apply_script": "$LB_DIR/apply.sh",
|
|
|
|
|
"members": [
|
|
|
|
|
{
|
|
|
|
|
"id": 1,
|
|
|
|
|
"name": "be1",
|
|
|
|
|
"address": "$BE1_IP",
|
|
|
|
|
"port": $BE1_PORT,
|
|
|
|
|
"weight": 1,
|
2026-08-19 12:33:48 +03:00
|
|
|
"source": "$HC2_IP",
|
|
|
|
|
"iface": "$HC2_IFNAME",
|
|
|
|
|
"ofport": $BE1_OFPORT
|
2026-08-16 21:43:02 +03:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 2,
|
|
|
|
|
"name": "be2",
|
|
|
|
|
"address": "$BE2_IP",
|
|
|
|
|
"port": $BE2_PORT,
|
|
|
|
|
"weight": 1,
|
2026-08-19 12:33:48 +03:00
|
|
|
"source": "$HC3_IP",
|
|
|
|
|
"iface": "$HC3_IFNAME",
|
|
|
|
|
"ofport": $BE2_OFPORT
|
2026-08-16 21:43:02 +03:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 3,
|
|
|
|
|
"name": "be3",
|
|
|
|
|
"address": "$BE3_IP",
|
|
|
|
|
"port": $BE3_PORT,
|
|
|
|
|
"weight": 1,
|
2026-08-19 12:33:48 +03:00
|
|
|
"source": "$HC2_IP",
|
|
|
|
|
"iface": "$HC2_IFNAME",
|
|
|
|
|
"ofport": $BE3_OFPORT
|
2026-08-16 21:43:02 +03:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 4,
|
|
|
|
|
"name": "be4",
|
|
|
|
|
"address": "$BE4_IP",
|
|
|
|
|
"port": $BE4_PORT,
|
|
|
|
|
"weight": 1,
|
2026-08-19 12:33:48 +03:00
|
|
|
"source": "$HC3_IP",
|
|
|
|
|
"iface": "$HC3_IFNAME",
|
|
|
|
|
"ofport": $BE4_OFPORT
|
2026-08-16 21:43:02 +03:00
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
echo "$OUT"
|