Aller au contenu

Dépannage de patroni

Info

L'ensemble de la procédure est à suivre en tant que root. Pour élever ses privilèges en root, il est possible d'utiliser la commande su -.

Attention

Pour suivre cette procédure, il est nécessaire d'avoir effectué les configurations supplémentaires pour patronictl.

patroni est un orchestrateur de haute disponibilité pour PostgreSQL. Il automatise la gestion d'un cluster PostgreSQL en assurant l'élection du leader, la bascule (failover) et la synchronisation des nœuds en cas d'incident.

Dans le cluster PostgreSQL de CyberElements Bastion, patroni s'appuie sur etcd pour stocker et partager l'état du cluster. Il surveille en continu l'état des instances PostgreSQL et s'assure qu'un seul nœud est désigné leader à un instant donné.

En cas de défaillance du nœud leader, patroni orchestre automatiquement une élection au moyen du magasin de configuration distribué etcd, afin de promouvoir un nouveau leader et de maintenir la disponibilité du service.

patroni dépend donc de etcd, et ne peut pas fonctionner correctement si etcd n'est pas fonctionnel.

Logs

L'ensemble de cette procédure s'appuie sur les logs du service patroni, que l'on obtient avec la commande ci-dessous :

1
journalctl -u patroni

Astuce

Pour consulter les logs en direct, ajoutez l'option -f à la commande :

1
journalctl -fu patroni

Info

Les logs de patroni sont aussi disponibles dans /var/log/syslog.

Explication des logs d'erreur

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

Lorsque etcd n'est pas fonctionnel ou pas joignable, patroni peut écrire les erreurs suivantes :

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>

Nom de l'un des nœuds du cluster PostgreSQL.

Il est nécessaire dans ce cas de dépanner etcd.