Postgresql ha multi node cluster

Moin, ich habe im Internet ein wenig recherchiert und (die links hänge ich ans Ende der frage)

Wie genau ist der Richtige Weg ein Multi Node Cluster aufzusetzen

Mein bisheriger Ansatz mit repmgr, wenn ich es aber richtig verstanden habe, kann ich aber mit dem Setup zukünftig Probleme bekommen (bei größeren Updates)

Mein Ziel

  • HA Multi Node (zum Testen mit 3 Nodes)
  • Updates/Upgrades ohne Downtime
  • VIP sollte der Aktive Node down sein oder bei Updates auf einen anderen Node schwenken

https://stormatics.tech/blogs/setting-up-a-high-availability-3-node-postgresql-cluster-with-patroni-on-ubuntu-24-04?unapproved=1712&moderation-hash=21cff1c3f3a2c52593926aa09de3d4ef#comment-1712

https://medium.com/@fekete.jozsef.joe/create-a-highly-available-postgresql-cluster-in-linux-using-repmgr-and-keepalived-9d72aa9ef42f

https://media.ccc.de/v/clt25-359-postgresql-enterprise-features

Patroni ist wohl die beste existierende Lösung.

Danke, ja das werde ich mir dann mal anschauen

  • postgresql
  • Patroni
  • etcd
  • haproxy
  • keepalived für die VIP

ist der Weg so richtig oder habt ihr es anders im Einsatz?

Also nach dem ich mir noch ein paar Gedanken gemacht habe ist mein aktueller Ansatz

Lieber vip-manager als keepalived.

Braucht man dann überhaupt einen HAProxy?

moin, danke für deine Rückmeldung, wie genau würde dein setup/empfehlung genau aussehen?
ich komme aus der administrations schiene und habe dort viel mit haproxy gemacht, und die meisten sachen die ich recherchiert habe hatten es mit haproxy umgesetzt

Wichtig:
VIP = ip über der mein cluster erreichbar ist, die schwenkt bei ausfall
x nodes = ich möchte das auch bei updates oder Ausfall der betrieb nach an die 100% ist
mein Gedanke war halt bei einem multi node cluster kann ich einen in wartung setzen und dann Update.
das ganze will ich dann 3 x aufsetzen
1 x testing cluster
1 x dev cluster
1 x produktiv
die sollen alle gleich sein damit man Änderungen (neue Versionen usw) erst in testing, danach in dev und erst wen von da ein ok kommt es in produktiv umsetzt

Vielleicht verstehe ich ja irgendetwas falsch, aber wenn der VIP-Manager die IP-Adresse immer so setzt, daß sie auf den aktuellen Primary zeigt, wozu brauche ich dann einen Load-Balancer? Das ist doch etwas, was man braucht, wenn man zwischen mehreren gleichberechtigten Systemen Last verteilen möchte. Und ein Standby-Server ist ja nicht gleichberechtigt, weil man dort nicht schreiben kann.

Aber es kann schon sein, daß ich da etwas übersehe.

Danke, wie ist den euer cluster aufgesetzt?
nach meiner Recherche

  • 3 node cluster (1 Primary, mindestens 2 Standbys, für redundante synchrone Replikation)
  • Patroni (soll der standard sein) alternativ pg_auto_failover
  • etcd mit auf allen nodes
  • VIP-Manager / Keepalived bin mir nicht sicher was die bessere Variante ist

Ich habe keinen Cluster. Ich arbeite bei einer Firma, die Leuten beim Setup hilft und Support sowie “remote DBA” Dienste anbietet.

So etwas muß man einfach gut testen. Dann wird sich auch zeigen, daß VIP-Manager die bessere Lösung ist (behaupte ich einmal).

Zusatzhinweise:

  • etcd braucht eine Platte mit kurzer Latenz - selbst wenn die Datenbank unter Last ist
  • die drei Nodes müssen zeitlich synchronisiert werden
  • synchrone Replikation funktioniert nur dann leidlich, wenn zwischen den Nodes nur sehr wenig Netzwerklatenz herrscht

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.