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.

Ad esempio, l'API /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.

Operazioni successive

Per verificare che non vi siano problemi di rete o di SSH, vedere Verifica dello stato di connettività di un cluster a disponibilità elevata del database.