Kihagyás

A patroni hibaelhárítása

Információ

A teljes eljárást root felhasználóként kell végrehajtani. A jogosultságai root szintre emeléséhez használhatja a su - parancsot.

Figyelmeztetés

Az eljárás követéséhez el kell végeznie a patronictl kiegészítő konfigurációit.

A patroni a PostgreSQL magas rendelkezésre állását biztosító vezénylő eszköz. Automatizálja a PostgreSQL-fürt kezelését azzal, hogy incidens esetén gondoskodik a vezető csomópont megválasztásáról, a feladatátvételről és a csomópontok szinkronizálásáról.

A CyberElements Bastion PostgreSQL-fürtjében a patroni az etcd szolgáltatásra támaszkodik a fürt állapotának tárolásához és megosztásához. Folyamatosan figyeli a PostgreSQL-példányok állapotát, és gondoskodik arról, hogy egyszerre mindig csak egy csomópont legyen vezetőként kijelölve.

Ha a vezető csomópont meghibásodik, a patroni az etcd elosztott konfigurációs tárolón keresztül automatikusan választást vezényel le, hogy új vezetőt léptessen elő, és fenntartsa a szolgáltatás rendelkezésre állását.

A patroni ezért függ az etcd szolgáltatástól, és nem tud megfelelően működni, ha az etcd nem működik.

Csomópont szinkronizációjának elvesztése

A PostgreSQL-fürt egyik csomópontja időnként kieshet a szinkronból. Ez a patronictl -c /etc/patroni/config.yml topology parancs kimenetében látható:

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 |
+------------------+----------------+---------+---------+----+-----------+

A TL oszlopban a PSQL_1 csomópont már nem ugyanazon a TL értéken van, mint a többi. A fürt működéséhez minden csomópontnak ugyanazon a TL értéken kell lennie: az eltérés azt jelzi, hogy az egyik csomópont kiesett a szinkronból.

Ebben az esetben futtassa a következő parancsot a szinkronból kiesett csomóponton:

1
patronictl -c /etc/patroni/config.yml reinit 15-cleanroomvault5 <MEMBER_PATRONI>

Itt a <MEMBER_PATRONI> a szinkronból kiesett csomópont neve, ahogyan a topológia Member oszlopában látható.

Ha több csomópont is kiesett a szinkronból, szinkronizálja újra mindazokat, amelyek nem a legmagasabb TL értéken vannak.

Figyelmeztetés

Ha a szinkronból kiesett csomópont a Leader csomópont, adatvesztés történhet. Ennek soha nem szabadna előfordulnia: a Leader csomópontnak elvileg mindig a legmagasabb TL értéken kell lennie.

Példa

A patronictl -c /etc/patroni/config.yml topology parancs fenti kimenetében a PSQL_1 csomópont kiesett a szinkronból. Az újraszinkronizálásához használja a következő parancsot:

1
patronictl -c /etc/patroni/config.yml reinit 15-cleanroomvault5 PSQL_1

Logs

A teljes eljárás a patroni szolgáltatás naplóin alapul, amelyeket az alábbi paranccsal kérhet le:

1
journalctl -u patroni

Tipp

A naplók valós idejű követéséhez adja hozzá a parancshoz a -f kapcsolót:

1
journalctl -fu patroni

Információ

A patroni naplói a /var/log/syslog fájlban is elérhetők.

Hibanaplók magyarázata

ERROR: Request to server https://<PSQL_NODE_NAME>:2379 failed: MaxRetryError("HTTPSConnectionPool(host='<PSQL_NODE_NAME>', port=2379)

Ha az etcd nem működik vagy nem érhető el, a patroni a következő hibákat írhatja:

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>

A PostgreSQL-fürt egyik csomópontjának neve.

Ebben az esetben el kell végeznie az etcd hibaelhárítását.