Aqbeż għall-kontenut

Soluzzjoni tal-problemi ta’ patroni

Informazzjoni

Il-proċedura kollha għandha titwettaq bħala root. Biex tgħolli l-privileġġi tiegħek għal root, tista’ tuża l-kmand su -.

Twissija

Biex issegwi din il-proċedura, trid tkun wettaqt il-konfigurazzjonijiet addizzjonali għal patronictl.

patroni huwa orkestratur ta’ disponibbiltà għolja għal PostgreSQL. Jawtomatizza l-ġestjoni ta’ cluster PostgreSQL billi jieħu ħsieb l-elezzjoni tan-nodu leader, il-failover u s-sinkronizzazzjoni tan-nodi meta jseħħ inċident.

Fil-cluster PostgreSQL ta’ CyberElements Bastion, patroni jiddependi fuq etcd biex jaħżen u jaqsam l-istat tal-cluster. Jissorvelja kontinwament l-istat tal-istanzi PostgreSQL u jiżgura li nodu wieħed biss ikun magħżul bħala leader fi kwalunkwe ħin partikolari.

Jekk in-nodu leader ifalli, patroni jorkestra awtomatikament elezzjoni permezz tal-maħżen tal-konfigurazzjoni distribwit etcd, biex jippromwovi leader ġdid u jżomm is-servizz disponibbli.

Għalhekk patroni jiddependi fuq etcd, u ma jistax jaħdem sew jekk etcd ma jkunx qed jaħdem.

Diżinkronizzazzjoni ta’ nodu

Nodu tal-cluster PostgreSQL xi drabi jista’ joħroġ mis-sinkronizzazzjoni. Dan jidher fir-riżultat tal-kmand patronictl -c /etc/patroni/config.yml topology:

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

Fil-kolonna TL, in-nodu PSQL_1 m’għadux fuq l-istess TL bħall-oħrajn. Biex il-cluster jaħdem, in-nodi kollha għandhom ikunu fuq l-istess TL: differenza tindika li wieħed min-nodi mhuwiex sinkronizzat.

F’dan il-każ, ħaddem il-kmand li ġej fuq in-nodu li mhuwiex sinkronizzat:

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

Fejn <MEMBER_PATRONI> huwa l-isem tan-nodu li mhuwiex sinkronizzat, kif jidher fil-kolonna Member tat-topoloġija.

Jekk diversi nodi mhumiex sinkronizzati, erġa’ ssinkronizza dawk kollha li mhumiex fuq l-ogħla TL.

Twissija

Jekk in-nodu li mhuwiex sinkronizzat huwa n-nodu Leader, tista’ tintilef id-data. Dan qatt m’għandu jiġri: in-nodu Leader mistenni jkun fuq l-ogħla TL.

Eżempju

Fir-riżultat tal-kmand patronictl -c /etc/patroni/config.yml topology ta’ hawn fuq, in-nodu PSQL_1 mhuwiex sinkronizzat. Biex terġa’ tissinkronizzah, uża l-kmand li ġej:

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

Logs

Il-proċedura kollha hija bbażata fuq ir-reġistri tas-servizz patroni, li tiksbu bil-kmand ta’ hawn taħt:

1
journalctl -u patroni

Parir

Biex issegwi r-reġistri f’ħin reali, żid l-għażla -f mal-kmand:

1
journalctl -fu patroni

Informazzjoni

Ir-reġistri ta’ patroni huma disponibbli wkoll fil-fajl /var/log/syslog.

Spjegazzjoni tar-reġistri tal-iżbalji

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

Meta etcd ma jkunx qed jaħdem jew ma jkunx jista’ jintlaħaq, patroni jista’ jikteb l-iżbalji li ġejjin:

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>

Isem wieħed min-nodi tal-cluster PostgreSQL.

F’dan il-każ, għandek issolvi l-problemi ta’ etcd.