patroni problēmu novēršana¶
Informācija
Visa procedūra jāveic kā root. Lai paaugstinātu savas privilēģijas līdz root, varat izmantot komandu su -.
Brīdinājums
Lai veiktu šo procedūru, iepriekš ir jāveic patronictl papildu konfigurācijas.
patroni ir augstas pieejamības orķestrētājs sistēmai PostgreSQL. Tas automatizē PostgreSQL klastera pārvaldību, incidenta gadījumā veicot līdera ievēlēšanu, kļūmjpārlēci un mezglu sinhronizāciju.
CyberElements Bastion PostgreSQL klasterī patroni izmanto etcd, lai glabātu un koplietotu klastera stāvokli. Tas nepārtraukti uzrauga PostgreSQL instanču stāvokli un nodrošina, ka jebkurā brīdī par līderi ir norīkots tikai viens mezgls.
Ja līdera mezglam rodas kļūme, patroni, izmantojot izkliedēto konfigurācijas glabātuvi etcd, automātiski organizē vēlēšanas, lai paaugstinātu jaunu līderi un saglabātu pakalpojuma pieejamību.
Tāpēc patroni ir atkarīgs no etcd un nevar pareizi darboties, ja etcd nedarbojas.
Mezgla desinhronizācija¶
PostgreSQL klastera mezgls dažkārt var zaudēt sinhronizāciju. Tas ir redzams komandas patronictl -c /etc/patroni/config.yml topology izvadē:
1 2 3 4 5 6 7 | |
Kolonnā TL mezgls PSQL_1 vairs nav tajā pašā TL kā pārējie. Lai klasteris darbotos, visiem mezgliem jābūt tajā pašā TL: atšķirība norāda, ka kāds no mezgliem nav sinhronizēts.
Šādā gadījumā nesinhronizētajā mezglā izpildiet šo komandu:
1 | |
Kur <MEMBER_PATRONI> ir nesinhronizētā mezgla nosaukums, kā parādīts topoloģijas kolonnā Member.
Ja nav sinhronizēti vairāki mezgli, atkārtoti sinhronizējiet visus tos, kas nav augstākajā TL.
Brīdinājums
Ja nesinhronizētais mezgls ir Leader mezgls, dati var tikt zaudēti. Tam nekad nevajadzētu notikt: Leader mezglam vienmēr jābūt augstākajā TL.
Piemērs
Iepriekš redzamajā komandas patronictl -c /etc/patroni/config.yml topology izvadē mezgls PSQL_1 nav sinhronizēts. Lai to atkārtoti sinhronizētu, izmantojiet šo komandu:
1 | |
Logs¶
Visa procedūra balstās uz pakalpojuma patroni žurnāliem, kurus iegūstat ar tālāk norādīto komandu:
1 | |
Padoms
Lai sekotu žurnāliem reāllaikā, pievienojiet komandai opciju -f:
1 | |
Informācija
patroni žurnāli ir pieejami arī failā /var/log/syslog.
Kļūdu žurnālu skaidrojumi¶
ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379)
Ja etcd nedarbojas vai nav sasniedzams, patroni var ierakstīt šādas kļūdas:
1 2 3 4 5 6 7 8 | |
<PSQL_NODE_NAME>-
Viena PostgreSQL klastera mezgla nosaukums.
Šādā gadījumā ir jāveic etcd problēmu novēršana.