Ir para o conteúdo

Resolução de problemas do patroni

Info

Todo o procedimento deve ser realizado como root. Para elevar os seus privilégios a root, pode utilizar o comando su -.

Atenção

Para seguir este procedimento, é necessário ter realizado as configurações adicionais para patronictl.

O patroni é um orquestrador de alta disponibilidade para PostgreSQL. Automatiza a gestão de um cluster PostgreSQL, assegurando a eleição do líder, a comutação por falha (failover) e a sincronização dos nós em caso de incidente.

No cluster PostgreSQL do CyberElements Bastion, o patroni apoia-se no etcd para armazenar e partilhar o estado do cluster. Monitoriza continuamente o estado das instâncias PostgreSQL e garante que apenas um nó é designado líder num dado momento.

Se o nó líder falhar, o patroni orquestra automaticamente uma eleição através do armazenamento de configuração distribuído etcd, a fim de promover um novo líder e manter o serviço disponível.

Por conseguinte, o patroni depende do etcd e não pode funcionar corretamente se o etcd não estiver a funcionar.

Logs

Todo o procedimento se baseia nos logs do serviço patroni, que obtém com o comando abaixo:

1
journalctl -u patroni

Sugestão

Para acompanhar os logs em tempo real, adicione a opção -f ao comando:

1
journalctl -fu patroni

Info

Os logs do patroni também estão disponíveis em /var/log/syslog.

Explicação dos logs de erro

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

Quando o etcd não está a funcionar ou não está acessível, o patroni pode escrever os seguintes erros:

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 de um dos nós do cluster PostgreSQL.

Neste caso, é necessário resolver os problemas do etcd.