fix(keepalived): notify_master ermittelt PG-Rolle über Publication statt Datei — v1.3.10

keepalived-master.sh loggte beim VIP-Übernehmen "PG-Rolle ist noch 'standby'",
weil es /var/lib/edgeguard/pg_role las — die schreibt nur `promote`, ein via
cluster-init-replication eingerichteter Primary hat sie nie → falsches Label.
Jetzt zuverlässig über pg_publication (nur der Primary trägt edgeguard_shared,
Konvention wie cluster_repair.go): Primary → "bereits PG-Primary (kein promote
nötig)", sonst → "standby, edgeguard-ctl promote". Rein kosmetisch/Logging.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-07-31 19:06:05 +02:00
parent 18ee243a44
commit 09e6e0c4f7
2 changed files with 15 additions and 3 deletions

View File

@@ -1 +1 @@
1.3.9 1.3.10

View File

@@ -4,8 +4,20 @@
# KEIN Auto-Promote — Split-Brain-Schutz durch manuelle Promotion. # KEIN Auto-Promote — Split-Brain-Schutz durch manuelle Promotion.
# Admin muss "edgeguard-ctl promote" ausführen wenn PG-Failover gewünscht. # Admin muss "edgeguard-ctl promote" ausführen wenn PG-Failover gewünscht.
logger -t keepalived -p daemon.warning \ # PG-Rolle ZUVERLÄSSIG über die Publication ermitteln — nicht über die evtl.
"MASTER: VIP übernommen — PG-Rolle ist noch '$(cat /var/lib/edgeguard/pg_role 2>/dev/null || echo standby)'. Für PG-Failover: edgeguard-ctl promote" # veraltete/fehlende Datei /var/lib/edgeguard/pg_role (die schrieb nur `promote`;
# ein via cluster-init-replication eingerichteter Primary hat sie nie → Log sagte
# fälschlich "standby"). Nur der Primary trägt die Publication edgeguard_shared
# (Konvention, vgl. cluster_repair.go). Best-effort: bei psql-Fehler neutral.
if sudo -u postgres psql -d edgeguard -tAc \
"SELECT EXISTS(SELECT 1 FROM pg_publication WHERE pubname='edgeguard_shared')" \
2>/dev/null | grep -q '^t$'; then
logger -t keepalived -p daemon.warning \
"MASTER: VIP übernommen — dieser Node ist bereits PG-Primary (kein promote nötig)."
else
logger -t keepalived -p daemon.warning \
"MASTER: VIP übernommen — PG-Rolle ist 'standby'. Für PG-Failover: edgeguard-ctl promote"
fi
# ── Upstream-ARP/Routing für die Failover-VIP(s) aktualisieren ── # ── Upstream-ARP/Routing für die Failover-VIP(s) aktualisieren ──
# Manche Hoster lernen die neue MAC einer Failover-IP NICHT zuverlässig über # Manche Hoster lernen die neue MAC einer Failover-IP NICHT zuverlässig über