patroni trikčių šalinimas¶
Informacija
Visą procedūrą reikia atlikti kaip root. Norėdami padidinti savo teises iki root, galite naudoti komandą su -.
Perspėjimas
Norėdami atlikti šią procedūrą, turite būti atlikę papildomas patronictl konfigūracijas.
patroni – tai PostgreSQL didelio pasiekiamumo orkestratorius. Jis automatizuoja PostgreSQL klasterio valdymą: įvykus incidentui, atlieka lyderio rinkimus, perjungimą po gedimo ir mazgų sinchronizavimą.
CyberElements Bastion PostgreSQL klasteryje patroni remiasi etcd, kad saugotų ir bendrintų klasterio būseną. Jis nuolat stebi PostgreSQL egzempliorių būseną ir užtikrina, kad bet kuriuo metu lyderiu būtų paskirtas tik vienas mazgas.
Jei lyderio mazgas sugenda, patroni per paskirstytąją konfigūracijos saugyklą etcd automatiškai organizuoja rinkimus, kad paaukštintų naują lyderį ir išlaikytų paslaugos pasiekiamumą.
Todėl patroni priklauso nuo etcd ir negali tinkamai veikti, jei etcd neveikia.
Mazgo desinchronizacija¶
PostgreSQL klasterio mazgas kartais gali tapti nesinchronizuotas. Tai matyti komandos patronictl -c /etc/patroni/config.yml topology išvestyje:
1 2 3 4 5 6 7 | |
Stulpelyje TL mazgas PSQL_1 nebėra tame pačiame TL kaip kiti. Kad klasteris veiktų, visi mazgai turi būti tame pačiame TL: skirtumas rodo, kad vienas iš mazgų yra nesinchronizuotas.
Tokiu atveju nesinchronizuotame mazge paleiskite šią komandą:
1 | |
Čia <MEMBER_PATRONI> – nesinchronizuoto mazgo pavadinimas, rodomas topologijos stulpelyje Member.
Jei nesinchronizuoti keli mazgai, iš naujo sinchronizuokite visus, kurie nėra aukščiausiame TL.
Perspėjimas
Jei nesinchronizuotas mazgas yra Leader mazgas, gali būti prarasta duomenų. Taip niekada neturėtų nutikti: Leader mazgas visada turėtų būti aukščiausiame TL.
Pavyzdys
Aukščiau pateiktoje komandos patronictl -c /etc/patroni/config.yml topology išvestyje mazgas PSQL_1 yra nesinchronizuotas. Norėdami jį iš naujo sinchronizuoti, naudokite šią komandą:
1 | |
Logs¶
Visa procedūra remiasi paslaugos patroni žurnalais, kuriuos gaunate toliau pateikta komanda:
1 | |
Patarimas
Norėdami stebėti žurnalus realiuoju laiku, pridėkite prie komandos parinktį -f:
1 | |
Informacija
patroni žurnalai taip pat pasiekiami faile /var/log/syslog.
Klaidų žurnalų paaiškinimai¶
ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379)
Kai etcd neveikia arba yra nepasiekiama, patroni gali įrašyti šias klaidas:
1 2 3 4 5 6 7 8 | |
<PSQL_NODE_NAME>-
Vieno iš PostgreSQL klasterio mazgų pavadinimas.
Tokiu atveju turite atlikti etcd trikčių šalinimą.