VMware Cloud Director gestisce la replica streaming sincrona tra i nodi. Se un nodo di standby diventa irraggiungibile, è necessario determinare la causa e risolvere il problema.
Problema
L'interfaccia utente di gestione dell'appliance VMware Cloud Director mostra l'integrità del cluster come DEGRADED e lo stato di uno dei nodi di standby è ? irraggiungibile.
L'API /nodes
restituisce l'informazione che localClusterHealth
ha stato DEGRADED, il nodo status
è ? irraggiungibile e nodeHealth
è UNHEALTHY.
/nodes
potrebbe restituire le informazioni seguenti per il nodo.
{ "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
Per garantire l'integrità dei dati, il database PostgreSQL utilizza WAL (Write-Ahead Logging). Il nodo primario invia WAL in streaming costantemente ai nodi di standby attivi per scopi di replica e ripristino. I nodi di standby elaborano WAL quando ricevono i relativi dati. Se un nodo di standby è irraggiungibile, smette di ricevere WAL e non può essere un candidato per la promozione a nuovo nodo primario.
Soluzione
- Verificare che la macchina virtuale del nodo di standby irraggiungibile sia in esecuzione.
- Verificare che la connessione di rete al nodo di standby sia funzionante.
- Verificare che non vi siano problemi del protocollo SSH che potrebbero impedire al nodo di standby di comunicare con gli altri nodi.
- Verificare che il servizio vpostgres nel nodo di standby sia in esecuzione.