Odpravljanje težav s patroni¶
Informacije
Celoten postopek je treba izvesti kot root. Za dvig privilegijev na raven root lahko uporabite ukaz su -.
Opozorilo
Za izvedbo tega postopka morate predhodno izvesti dodatne konfiguracije za patronictl.
patroni je orkestrator visoke razpoložljivosti za PostgreSQL. Samodejno upravlja gručo PostgreSQL, saj ob incidentu skrbi za izbiro vodje, preklop ob napaki in sinhronizacijo vozlišč.
V gruči PostgreSQL za CyberElements Bastion se patroni zanaša na etcd za shranjevanje in deljenje stanja gruče. Neprekinjeno nadzoruje stanje instanc PostgreSQL in zagotavlja, da je v vsakem trenutku za vodjo določeno samo eno vozlišče.
Če vodilno vozlišče odpove, patroni prek porazdeljene shrambe konfiguracije etcd samodejno izvede izbiro, da določi novega vodjo in ohrani razpoložljivost storitve.
patroni je torej odvisen od etcd in ne more pravilno delovati, če etcd ne deluje.
Desinhronizacija vozlišča¶
Vozlišče gruče PostgreSQL lahko včasih izgubi sinhronizacijo. To je vidno v izpisu ukaza patronictl -c /etc/patroni/config.yml topology:
1 2 3 4 5 6 7 | |
V stolpcu TL vozlišče PSQL_1 nima več enake vrednosti TL kot ostala. Za delovanje gruče morajo imeti vsa vozlišča enako vrednost TL: razlika pomeni, da eno od vozlišč ni sinhronizirano.
V tem primeru na nesinhroniziranem vozlišču zaženite naslednji ukaz:
1 | |
Pri tem je <MEMBER_PATRONI> ime nesinhroniziranega vozlišča, kot je prikazano v stolpcu Member topologije.
Če več vozlišč ni sinhroniziranih, znova sinhronizirajte vsa, ki nimajo najvišje vrednosti TL.
Opozorilo
Če je nesinhronizirano vozlišče Leader, lahko pride do izgube podatkov. To se ne bi smelo nikoli zgoditi: vozlišče Leader naj bi imelo najvišjo vrednost TL.
Primer
V zgornjem izpisu ukaza patronictl -c /etc/patroni/config.yml topology vozlišče PSQL_1 ni sinhronizirano. Za ponovno sinhronizacijo uporabite naslednji ukaz:
1 | |
Logs¶
Celoten postopek temelji na dnevnikih storitve patroni, ki jih dobite s spodnjim ukazom:
1 | |
Nasvet
Če želite dnevnike spremljati sproti, ukazu dodajte možnost -f:
1 | |
Informacije
Dnevniki patroni so na voljo tudi v /var/log/syslog.
Razlaga dnevnikov napak¶
ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379)
Ko etcd ne deluje ali ni dosegljiv, lahko patroni zapiše naslednje napake:
1 2 3 4 5 6 7 8 | |
<PSQL_NODE_NAME>-
Ime enega od vozlišč gruče PostgreSQL.
V tem primeru morate odpraviti težave z etcd.