O VMware Cloud Director mantém a replicação síncrona de streaming entre os nós. Se um nó em espera ficar inacessível, você deverá determinar a causa e resolver o problema.
Problema
A UI de gerenciamento de dispositivo do VMware Cloud Director mostra a integridade do cluster como DEGRADED, e o status de um dos nós em espera é inacessível.
A API /nodes
retorna informações de que localClusterHealth
está DEGRADED, o status
do nó é ? inacessível e nodeHealth
é UNHEALTHY.
/nodes
pode retornar as seguintes informações para o nó.
{ "localClusterFailover": "MANUAL", "localClusterHealth": "DEGRADED", "localClusterState": [ { "connectionString": "host=primary_host_IP user=repmgr dbname=repmgr connect_timeout=2", "failover": { "details": "failover = manual", "mode": "MANUAL", "repmgrd": { "details": "On node primary_node_ID (primary_host_name): repmgrd = not applicable", "status": "NOT APPLICABLE" } }, "id": primary_node_ID, "location": "default", "name": "primary_host_name", "nodeHealth": "HEALTHY", "nodeRole": "PRIMARY", "role": "primary", "status": "* running", "upstream": "" }, { "connectionString": "host=unreachable_standby_host_IP user=repmgr dbname=repmgr connect_timeout=2", "failover": { "details": "failover state unknown - unable to ssh to failed or unreachable node", "mode": "UNKNOWN", "repmgrd": { "details": "On node unreachable_standby_node_ID (unreachable_standby_host_name): repmgrd = n/a", "status": "UNKNOWN" } }, "id": unreachable_standby_node_ID, "location": "default", "name": "unreachable_standby_host_name", "nodeHealth": "UNHEALTHY", "nodeRole": "STANDBY", "role": "standby", "status": "? unreachable", "upstream": "primary_host_name" }, { "connectionString": "host=running_standby_host_IP user=repmgr dbname=repmgr connect_timeout=2", "failover": { "details": "failover = manual", "mode": "MANUAL", "repmgrd": { "details": "On node running_standby_node_ID (running_standby_host_IP): repmgrd = not applicable", "status": "NOT APPLICABLE" } }, "id": running_standby_node_ID, "location": "default", "name": "running_standby_host_name", "nodeHealth": "HEALTHY", "nodeRole": "STANDBY", "role": "standby", "status": "running", "upstream": "primary_host_name" } ], "warnings": [ "unable to connect to node \"unreachable_standby_host_name\" (ID: unreachable_standby_node_ID)", "node \"unreachable_standby_host_name\" (ID: unreachable_standby_node_ID) is registered as an active standby but is unreachable" ] }
Causa
Para garantir a integridade dos dados, o banco de dados PostgreSQL usa o WAL (Write-Ahead Logging). O nó primário transmite o WAL constantemente aos nós ativos em espera para fins de replicação e recuperação. Os nós em espera processam o WAL quando o recebem. Se um nó em espera estiver inacessível, ele deixará de receber o WAL e não poderá ser um candidato para se tornar um novo nó primário.
Solução
- Verifique se a máquina virtual do nó em espera inacessível está em execução.
- Verifique se a conexão de rede com o nó em espera está funcionando.
- Verifique se não há problemas de SSH que possam impedir que o nó em espera se comunique com os outros nós.
- Verifique se o serviço vpostgres no nó em espera está em execução.