Ich bin immer noch mit dem Kopf um Kubernetes und wie das funktionieren soll. Derzeit habe ich Probleme zu verstehen, wie man etwas wie einen PostgreSQL-Cluster mit Streaming-Replikation, Skalierung und automatischem Failover/Failback modellieren kann (pgpool-II
, repmgr
, wähle dein Gift).Wie modelliere ich einen PostgreSQL-Failover-Cluster mit Docker/Kubernetes?
Mein Hauptproblem mit dem Ansatz ist die Dual-Natur einer PostgreSQL-Instanz, Konfiguration - es ist entweder ein Master-oder ein Kalt/Warm/Hot-Standby. Wenn ich die Anzahl der Replikate erhöhe, würde ich erwarten, dass sie alle als Standbys erscheinen, also würde ich mir vorstellen, einen postgresql-standby
Replikationscontroller separat von einem postgresql-master
Pod zu erstellen. Allerdings würde ich auch erwarten, dass einer dieser Bereitschaftskandidaten ein Master wird, falls der aktuelle Master down ist, also ist es ein üblicher Replikations-Controller, postgresql
.
Die einzige Idee, die ich bisher hatte, ist, die Replikationskonfiguration auf ein externes Volume zu legen und die Status- und Statusänderungen außerhalb der Container zu verwalten.
(im Fall von PostgreSQL würde die Konfiguration wahrscheinlich bereits auf einem Datenträger innerhalb seines data
Verzeichnis, das sich offensichtlich etwas, das ich auf einem Volume wollen würde, aber das ist nebensächlich)
Ist das der richtige Zugang, oder gibt es einen anderen sauberen Weg?
ich könnte helfen, Kelsey Hightowers [Rede] (https://youtu.be/9W-ngbpBSMM) ... – errordeveloper
@errordeveloper zu sehen: lustig, wie 40% der Demo-Zeit verbringt auf immer Kubernetes zu arbeiten - - repräsentiert auch meine Erfahrung. Das tl; dr aus dem Video ist: PostgreSQL ist nicht dafür ausgelegt, horizontal skaliert zu werden, ohne dass es erneut konfiguriert werden muss. Es sollte also ein Pod und kein Replikations-Controller sein. –
Das ist richtig, obwohl mit vorgebackenen VM-Images und wenigen anderen Verknüpfungen optimiert werden kann. – errordeveloper