VMware Cloud Director는 노드 간의 동기식 스트리밍 복제를 유지 관리합니다. 대기 노드에 연결할 수 없는 상태가 되면 원인을 파악하고 문제를 해결해야 합니다.

문제

VMware Cloud Director 장치 관리 UI에 클러스터 상태가 DEGRADED으로 표시되고 대기 노드 중 하나의 상태가 연결할 수 없음입니다.

/nodes API는 localClusterHealthDEGRADED이고 노드 status 연결할 수 없음이며 nodeHealthUNHEALTHY이라는 정보를 반환합니다.

예를 들어 /nodes API가 노드에 대해 다음 정보를 반환할 수 있습니다.
{
    "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"
    ]
}

원인

데이터 무결성을 보장하기 위해 PostgreSQL 데이터베이스는 WAL(Write-Ahead Logging)을 사용합니다. 기본 노드는 복제 및 복구 목적으로 WAL을 활성 대기 노드로 지속적으로 스트리밍합니다. 대기 노드는 WAL을 수신할 때 처리합니다. 대기 노드에 연결할 수 없는 경우 WAL 수신을 중지하며, 새로운 기본 노드로 승격할 후보가 될 수 없습니다.

해결책

  • 연결할 수 없는 대기 노드의 가상 시스템이 실행되고 있는지 확인합니다.
  • 대기 노드에 대한 네트워크 연결이 작동하는지 확인합니다.
  • 대기 노드가 다른 노드와 통신하지 못하게 할 수 있는 SSH 문제가 없는지 확인합니다.
  • 대기 노드의 vpostgres 서비스가 실행 중인지 확인합니다.

다음에 수행할 작업

네트워크 또는 SSH 문제가 없는지 확인하려면 데이터베이스 고가용성 클러스터에서 연결 상태 확인 항목을 참조하십시오.