Wenn ich einen HA-Cluster mit EtcD HAProxy KeepaliveD PostgreSQL Patroni auf nur drei Knoten aufbaue, sodass alle Programme auf allen Knoten laufen, dann belegt PostgreSQL den Port 5432 und HAProxy den Port 5433 und HAProxy prüft Patroni, um zu entscheiden, wer Master ist. Und KeepaliveD prüft HAProxy, um zu entscheiden, wo die VIP hochgefahren werden soll. Aber wozu brauche ich HAProxy? KeepaliveD kann doch direkt Patroni prüfen und dann dort, wo der Leader ist, die VIP hochfahren. # patronictl -c /etc/patroni/config.yml list + Cluster: pgcluster (7637598528541987072) -------+----+-----------+ | Member | Host | Role | State | TL | Lag in MB | +--------------+--------------+---------+---------+----+-----------+ | pg-knoten-01 | pg-knoten-01 | Leader | running | 2 | | | pg-knoten-02 | pg-knoten-02 | Replica | stopped | | unknown | | pg-knoten-03 | pg-knoten-03 | Replica | stopped | | unknown | +--------------+--------------+---------+---------+----+-----------+ HAProxy hat zusätzliche Funktionen, die KeepaliveD nicht bieten kann: Verwaltet TCP‑Sessions Erkennt: PostgreSQL‑Health Patroni‑State Kann: Verbindungen sauber abbrechen oder weiterleiten Failover kontrollierter durchführen Write‑Traffic NUR zum Leader schicken Read‑Traffic auf Replicas verteilen