feat(cluster): Replikations-Reconcile + Backend-Down nur auf VIP-Master — v1.3.7
- fix(scheduler): backend.down-Check läuft nur noch wenn dieser Node den VIP hält (nodeHoldsVIP). Ein keepalived-BACKUP-Node hat KEINE VLAN-IP → erreicht die Backend-Subnetze nicht → sah bisher ALLE Backends L4-down und feuerte Dauer-Fehlalarme (Hauptquelle des alert_events-Spams). Master sieht die echten States. - feat(ctl): `cluster-reconcile-replication` — bringt Publication/Grants/ Subscription idempotent in den Soll-Zustand (Publisher: fehlende Shared- Tables ADD, node-lokale DROP, GRANT SELECT für Replikator; Subscriber: neue Tabellen leeren + REFRESH). Läuft im postinst nach migrate. - fix(packaging): postinst re-added network_interfaces/ip_addresses bei JEDEM Upgrade in die Publication (alter fester Block) → ersetzt durch den Reconcile. DAS war die Wiederkehr-Ursache. - fix(replication): waf_alerts → localOnlyTables (Event-Daten, node-lokal wie alert_events). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -780,24 +780,20 @@ VIPCMD
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ALTER PUBLICATION erfordert den PG-Superuser (edgeguard ist nicht
|
||||
# Owner der Publication). Idempotent — No-Op auf Secondary-Nodes
|
||||
# (wo die Publication nicht existiert) und wenn die Tabellen schon
|
||||
# drin sind.
|
||||
sudo -u postgres psql edgeguard <<'EOSQL' 2>/dev/null || true
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM pg_publication WHERE pubname = 'edgeguard_shared') THEN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_publication_tables
|
||||
WHERE pubname = 'edgeguard_shared' AND tablename = 'network_interfaces'
|
||||
) THEN
|
||||
ALTER PUBLICATION edgeguard_shared ADD TABLE network_interfaces, ip_addresses;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
$$;
|
||||
EOSQL
|
||||
# ── Replikation reconcilen (Publication / Grants / Subscription) ──
|
||||
# Ersetzt die frühere feste ADD-TABLE-Logik (die network_interfaces/
|
||||
# ip_addresses bei JEDEM Upgrade fälschlich wieder in die Publication
|
||||
# zog — beide sind node-lokal). edgeguard-ctl erkennt die Rolle selbst
|
||||
# und bringt idempotent den Soll-Zustand:
|
||||
# Publisher : fehlende Shared-Tables ADD, node-lokale (localOnlyTables)
|
||||
# DROP, GRANT SELECT für den Replikations-User (deckt per
|
||||
# Migration neu hinzugekommene Tabellen ab — sonst hängt
|
||||
# deren tablesync in 'd').
|
||||
# Subscriber: neue Tabellen leeren + REFRESH PUBLICATION.
|
||||
# Standalone: No-Op.
|
||||
# Läuft als root → buildPsqlCmd nutzt `sudo -u postgres psql` (Superuser).
|
||||
# Best-effort: ein Reconcile-Fehler darf das Upgrade nie abbrechen.
|
||||
/usr/bin/edgeguard-ctl cluster-reconcile-replication 2>&1 || true
|
||||
|
||||
# ── CrowdSec IDS installation ─────────────────────────────────────────
|
||||
# Install CrowdSec if not present. We use the official CrowdSec APT repo.
|
||||
|
||||
Reference in New Issue
Block a user