Vai al contenuto

Risoluzione dei problemi di patroni

Info

L'intera procedura deve essere eseguita come root. Per elevare i propri privilegi a root, è possibile utilizzare il comando su -.

Attenzione

Per seguire questa procedura, è necessario aver effettuato le configurazioni aggiuntive per patronictl.

patroni è un orchestratore di alta disponibilità per PostgreSQL. Automatizza la gestione di un cluster PostgreSQL occupandosi dell'elezione del leader, del failover e della sincronizzazione dei nodi in caso di incidente.

Nel cluster PostgreSQL di CyberElements Bastion, patroni si basa su etcd per archiviare e condividere lo stato del cluster. Monitora costantemente lo stato delle istanze PostgreSQL e si assicura che un solo nodo sia designato leader in un dato momento.

Se il nodo leader si guasta, patroni orchestra automaticamente un'elezione tramite l'archivio di configurazione distribuito etcd, al fine di promuovere un nuovo leader e mantenere la disponibilità del servizio.

patroni dipende quindi da etcd e non può funzionare correttamente se etcd non funziona.

Log

L'intera procedura si basa sui log del servizio patroni, che si ottengono con il comando seguente:

1
journalctl -u patroni

Suggerimento

Per seguire i log in tempo reale, aggiungere l'opzione -f al comando:

1
journalctl -fu patroni

Info

I log di patroni sono disponibili anche in /var/log/syslog.

Spiegazione dei log di errore

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

Quando etcd non funziona o non è raggiungibile, patroni può scrivere gli errori seguenti:

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>

Nome di uno dei nodi del cluster PostgreSQL.

In questo caso, è necessario risolvere i problemi di etcd.