Pāriet uz saturu

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
+ Cluster: 15-cleanroomvault5 ------+---------+---------+----+-----------+
| Member           | Host           | Role    | State   | TL | Lag in MB |
+------------------+----------------+---------+---------+----+-----------+
| PSQL_3           | psql_3         | Leader  | running | 3  |           |
| + PSQL_1         | psql_1         | Replica | running | 2  |       230 |
| + PSQL_2         | psql_2         | Replica | running | 3  |         0 |
+------------------+----------------+---------+---------+----+-----------+

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
patronictl -c /etc/patroni/config.yml reinit 15-cleanroomvault5 <MEMBER_PATRONI>

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
patronictl -c /etc/patroni/config.yml reinit 15-cleanroomvault5 PSQL_1

Logs

Visa procedūra balstās uz pakalpojuma patroni žurnāliem, kurus iegūstat ar tālāk norādīto komandu:

1
journalctl -u patroni

Padoms

Lai sekotu žurnāliem reāllaikā, pievienojiet komandai opciju -f:

1
journalctl -fu patroni

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
patroni[1812916]: 2026-04-17 15:23:51,431 INFO: Retrying on https://<PSQL_NODE_NAME>:2379
patroni[1812916]: 2026-04-17 15:23:51,434 ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379): Max retries exceeded with url: /v3/lease/keepalive (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f8924a49fd0>: Failed to establish a new connection: [Errno 111] Connection refused'))")
patroni[1812916]: 2026-04-17 15:23:51,434 INFO: Reconnection allowed, looking for another server.
patroni[1812916]: 2026-04-17 15:23:51,434 INFO: Retrying on https://<PSQL_NODE_NAME>:2379
patroni[1812916]: 2026-04-17 15:23:51,438 ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379): Max retries exceeded with url: /v3/lease/keepalive (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f8924a48c50>: Failed to establish a new connection: [Errno 111] Connection refused'))")
patroni[1812916]: 2026-04-17 15:23:51,438 INFO: Reconnection allowed, looking for another server.
patroni[1812916]: 2026-04-17 15:23:53,940 ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: ReadTimeoutError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379): Read timed out. (read timeout=2.0772262712319693)")
patroni[1812916]: 2026-04-17 15:23:53,940 INFO: Reconnection allowed, looking for another server.
<PSQL_NODE_NAME>

Viena PostgreSQL klastera mezgla nosaukums.

Šādā gadījumā ir jāveic etcd problēmu novēršana.