VMware Cloud Director は、ノード間でストリーミング レプリケーションの同期を維持します。スタンバイ ノードがアクセス不能になった場合は、原因を特定して問題を解決する必要があります。

問題

VMware Cloud Director アプライアンス管理ユーザー インターフェイスにクラスタの健全性が DEGRADED と表示され、いずれかのスタンバイ ノードのステータスが unreachable になっています。

/nodes API は、localClusterHealthDEGRADED に、ノードの statusunreachable に、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) を使用します。プライマリ ノードは、レプリケーションおよびリカバリを行うために、WAL をアクティブなスタンバイ ノードに継続的にストリーミングします。WAL を受信したスタンバイ ノードは、WAL を処理します。スタンバイ ノードに到達できない場合、スタンバイ ノードは WAL の受信を停止し、新しいプライマリになるプロモーションの候補から外れます。

解決方法

  • 到達不能なスタンバイ ノードの仮想マシンが実行されていることを確認します。
  • スタンバイ ノードへのネットワーク接続が機能していることを確認します。
  • スタンバイ ノードと他のノード間の通信を妨げる可能性がある SSH の問題がないことを確認します。
  • スタンバイ ノードで vpostgres サービスが実行されていることを確認します。

次のタスク

ネットワークまたは SSH に問題がないことを確認するには、 データベース高可用性クラスタの接続ステータスの確認を参照してください。