In einer Bereitstellung der VMware Cloud Director-Appliance mit Datenbank-HA-Konfiguration kann der postgres-Benutzer keine Verbindung zu seinen gleichrangigen Datenbankknoten über SSH herstellen.
Problem
Wenn zwischen den Datenbankknoten ein SSH-Problem besteht, zeigt VMware Cloud Director die localClusterHealth
als SSH_PROBLEM an. Sie müssen dieses kritische Problem schnellstmöglich beheben.
Sie können die localClusterHealth
mithilfe der Verwaltungsbenutzeroberfläche der VMware Cloud Director-Appliance anzeigen oder die /nodes-API der VMware Cloud Director-Appliance ausführen. Weitere Informationen finden Sie in der VMware Cloud Director-Appliance-API-Dokumentation.
Wenn Sie die /nodes-API auf einem Peer-Knoten des Knotens mit dem SSH-Problem ausführen, gibt die /nodes
-API Informationen mit dem Hinweis zurück, dass die localClusterHealth
auf SSH_PROBLEM und das localClusterFailover
auf UNBESTIMMT lautet. Der Failover-Modus lautet UNBESTIMMT, da der Knoten, auf dem Sie die /nodes
-API ausführen, keine Verbindung zu einem der zugehörigen Peer-Knoten über SSH herstellen kann. In den "details"
im "failover"
-Ausgabeteil des Antworttexts für den Knoten mit dem SSH-Problem wird Folgendes angezeigt: ssh fehlgeschlagen. Befehl: ssh unreachable_standby_host_IP /usr/bin/grep failover=manual /opt/vmware/vpostgres/10/etc/repmgr.conf.
GET https://primary_host_IP:5480/api/1.0.0/nodes
ausführen, gibt die
/nodes
-API möglicherweise die folgenden Informationen zurück.
{ "localClusterFailover": "INDETERMINATE", "localClusterHealth": "SSH_PROBLEM", "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=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_name): 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" }, { "connectionString": "host=unreachable_standby_host_IP user=repmgr dbname=repmgr connect_timeout=2", "failover": { "details": "ssh failed. command: ssh unreachable_standby_host_IP /usr/bin/grep failover=manual /opt/vmware/vpostgres/10/etc/repmgr.conf", "mode": "UNKNOWN", "repmgrd": { "details": "On node unreachable_standby_node_ID (unreachable_standby_host_name): repmgrd = not running", "status": "NOT RUNNING" } }, "id": unreachable_standby_node_ID, "location": "default", "name": "unreachable_standby_host_name", "nodeHealth": "HEALTHY", "nodeRole": "STANDBY", "role": "standby", "status": "running", "upstream": "primary_host_name" } ], "warnings": [] }
Wenn Sie GET https://unreachable_standby_host_IP:5480/api/1.0.0/nodes
ausführen, weil der Knoten nicht vertrauenswürdig ist, sind die Daten zu localClusterFailover
und localClusterState
unter Umständen nicht korrekt. Die /nodes-API gibt Warnmeldungen mit dem Hinweis zurück, dass unreachable_standby_host_name keine Verbindung zu den zugehörigen Peer-Knoten herstellen kann.
/nodes
-API gibt möglicherweise die folgenden Informationen zurück.
{ "localClusterFailover": "MANUAL", "localClusterHealth": "SSH_PROBLEM", "localClusterState": [ { "connectionString": "host=primary_host_IP user=repmgr dbname=repmgr connect_timeout=2", "failover": { "details": "ssh failed. command: ssh primary_host_IP /usr/bin/grep failover=manual /opt/vmware/vpostgres/10/etc/repmgr.conf", "mode": "UNKNOWN", "repmgrd": { "details": "On node primary_node_ID (primary_host_name): repmgrd = n/a", "status": "UNKNOWN" } }, "id": primary_node_ID, "location": "default", "name": "primary_host_name", "nodeHealth": "UNHEALTHY", "nodeRole": "PRIMARY", "role": "primary", "status": "? running", "upstream": "" }, { "connectionString": "host=running_standby_host_IP user=repmgr dbname=repmgr connect_timeout=2", "failover": { "details": "ssh failed. command: ssh running_standby_host_IP /usr/bin/grep failover=manual /opt/vmware/vpostgres/10/etc/repmgr.conf", "mode": "UNKNOWN", "repmgrd": { "details": "On node running_standby_node_ID (running_standby_host_name): repmgrd = n/a", "status": "UNKNOWN" } }, "id": running_standby_node_ID, "location": "default", "name": "running_standby_host_name", "nodeHealth": "UNHEALTHY", "nodeRole": "STANDBY", "role": "standby", "status": "? running", "upstream": "primary_host_name" }, { "connectionString": "host=unreachable_standby_host_IP user=repmgr dbname=repmgr connect_timeout=2", "failover": { "details": "failover = manual", "mode": "MANUAL", "repmgrd": { "details": "On node unreachable_standby_node_ID (unreachable_standby_host_name): repmgrd = not applicable", "status": "NOT APPLICABLE" } }, "id": unreachable_standby_node_ID, "location": "default", "name": "unreachable_standby_host_name", "nodeHealth": "HEALTHY", "nodeRole": "STANDBY", "role": "standby", "status": "running", "upstream": "? primary_host_name" } ], "warnings": [ "unable to connect to node \"primary_host_name\" (ID: primary_node_ID)", "unable to connect to node \"running_standby_host_name\" (ID: running_standby_node_ID)", "unable to connect to node \"unreachable_standby_host_name\" (ID: unreachable_standby_node_ID)'s upstream node \"primary_host_name\" (ID: primary_node_ID)", "unable to determine if node \"unreachable_standby_host_name\" (ID: unreachable_standby_node_ID) is attached to its upstream node \"primary_host_name\" (ID: primary_node_ID)" ] }
Ursache
VMware Cloud Director speichert die SSH-Zertifikate des postgres-Benutzers im Speicher des gemeinsam genutzten NFS-Übertragungsservers. Alle Datenbankknoten müssen über Zugriff auf den gemeinsam genutzten Speicher des Übertragungsservers verfügen. Wenn ein Datenbankknoten nicht mehr vertrauenswürdig ist, weil die SSH-Zertifikate des postgres-Benutzers entweder nicht mehr gültig oder nicht mehr zugänglich sind, kann dieser Knoten keine Befehle auf den zugehörigen Peer-Knoten mithilfe eines SSH-Clients ausführen. Die VMware Cloud Director-Appliance muss diese Funktion aufweisen, um im HA-Modus ordnungsgemäß ausgeführt werden zu können.