Sto ancora avvolgendo la mia mente su Kubernetes e su come dovrebbe funzionare. Attualmente sto cercando di capire come modellare qualcosa come un cluster PostgreSQL con replica streaming, ridimensionamento e failover/failback automatici (pgpool-II
, repmgr
, scegli il tuo veleno).Come modellare un cluster di failover PostgreSQL con Docker/Kubernetes?
Il mio problema principale con l'approccio è la duplice natura di un'istanza PostgreSQL, dal punto di vista della configurazione: è un master o uno standby freddo/caldo/hot. Se aumentassi il numero di repliche, mi aspetterei che venissero tutte in standbys, quindi immagino di creare un controller di replica postgresql-standby
separatamente da un pod postgresql-master
. Tuttavia, mi aspetto anche che uno di questi standbys diventi un master nel caso in cui il master attuale non sia attivo, quindi è un comune controller di replica postgresql
dopo tutto.
L'unica idea che ho avuto finora è di mettere la configurazione della replica su un volume esterno e gestire lo stato e le modifiche di stato al di fuori dei contenitori.
(in caso di PostgreSQL configurazione sarebbe probabilmente già essere su un volume all'interno del suo data
directory, che di per sé è ovviamente qualcosa che vorrei in un volume, ma non è questo il punto)
È che l'approccio corretto, o c'è un altro modo più pulito?
Potrei aiutare a guardare Kelsey Hightower's [talk] (https://youtu.be/9W-ngbpBSMM) ... – errordeveloper
@errordeveloper: divertente, come viene speso il 40% del tempo demo per far funzionare Kubernetes - - rappresenta anche la mia esperienza. Il file tl; dr del video è: PostgreSQL non è costruito per essere ridimensionato in orizzontale senza sforzo di riconfigurazione, quindi dovrebbe essere un pod e non un controller di replica. –
Questo è vero, anche se può essere ottimizzato con immagini VM pre-cotta e poche altre scorciatoie. – errordeveloper