Load-Balancer konfigurieren

Wählen Sie eine Dokumentationsversion aus:

Sie können einen Load-Balancer für AlloyDB Omni mit dem RPM-Orchestrator konfigurieren.

Beschränkungen

Es gelten folgende Einschränkungen:

  • Der Endpunkt ist auf den ReadWrite-Endpunkt beschränkt. Readonly-Endpunkte werden in Zukunft unterstützt.

Hinweis

Prüfen Sie vor dem Konfigurieren des Load-Balancers, ob Sie die folgenden Anforderungen erfüllen:

  • Wenn Sie Load-Balancer-Knoten definieren möchten, fügen Sie in der Bereitstellungsspezifikationsdatei eine load_balancer_nodes-Gruppe ein, die die Hostnamen oder IP-Adressen Ihrer dedizierten Load-Balancer-VMs enthält:

    alloydbomni:
      vars:
        ...
      children:
        load_balancer_nodes:
          hosts:
            lb-node-1:
            lb-node-2:
    
  • Konfigurieren Sie die Firewall so, dass der folgende eingehende Traffic zugelassen wird:

    • Auf dedizierten Load-Balancer-VMs:

      • Port 5432 (TCP): für HAProxy-Datenbanktraffic.

      • Port 6432 (TCP): für PgBouncer-Verbindungspooling-Traffic, falls zutreffend.

      • VRRP-Protokoll: für die keepalived-Leader-Auswahl und Systemdiagnosen.

    • Auf Datenbankknoten:

      • Port 8086 (HTTP): für Load-Balancer-Systemdiagnosen.
  • Wenn Sie die Google Cloud Umgebung verwenden, legen Sie ENVIRONMENT_TYPE auf gcp fest. Anschließend müssen Sie Ihr gcloud CLI-Konto authentifizieren, indem Sie gcloud auth login als root-Nutzer ausführen. Außerdem muss das authentifizierte Konto die folgenden Berechtigungen haben:

    • compute.instances.get
    • compute.instances.list
    • compute.instances.updateNetworkInterface

Load-Balancer konfigurieren

Der RPM-Orchestrator verwendet HAProxy, um Traffic zu verteilen, und Keepalived, um mit einer virtuellen IP (VIP) Hochverfügbarkeit zu gewährleisten.

Ressourcenspezifikation aktualisieren

Fügen Sie in der DBCluster-Spezifikationsdatei dbLoadBalancerOptions hinzu, damit der Cluster-Manager und der Orchestrator wissen, wie die Load-Balancer-Endpunkte verwaltet werden.

DBCluster:
  metadata:
    name: DBCLUSTER_NAME
  spec:
    primarySpec:
      # ... other primary settings ...
      dbLoadBalancerOptions:
        ENVIRONMENT_TYPE::
          loadBalancerIP: "VIRTUAL_IP"
          loadBalancerType: "internal"
          loadBalancerInterface: "VIRTUAL_IP_INTERFACE"

Ersetzen Sie Folgendes:

  • ENVIRONMENT_TYPE: bestimmt die Umgebung, in der der Cluster eingerichtet wird: onprem oder gcp.

  • DBCLUSTER_NAME: der Name Ihres AlloyDB Omni-Datenbankclusters, z. B. my-db-cluster.

  • VIRTUAL_IP: statische IP-Adresse, die für die Floating-VIP verwendet wird. Datenbankclientanwendungen verwenden die hier definierte IP-Adresse. Damit Keepalived Gratuitous Address Resolution Protocols (GARPs) erfolgreich übertragen kann, muss diese IP-Adresse die folgenden Bedingungen erfüllen: Sie muss verfügbar sein, darf keine Loopback-Adresse sein und muss im Fall von On-Premise-Bereitstellungen zum selben Subnetz wie die primären Knotenschnittstellen gehören.

  • VIRTUAL_IP_INTERFACE: Netzwerkschnittstelle, auf der VIRTUAL_IP konfiguriert ist. Der Standardwert ist eth0.

Konfiguration anwenden

Wenden Sie die Konfigurationsänderungen über die Orchestrator-Oberfläche Ihrer Wahl an.

Ansible

Führen Sie das Bootstrap-Playbook mit Ihren Inventar- und Ressourcenspezifikationsdateien aus:

ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \
      -e resource_spec="DBCLUSTER_SPECIFICATION"

Ersetzen Sie die folgenden Variablen:

  • DBCLUSTER_PLAYBOOK: Pfad zum Playbook, das Sie für Ihren Datenbankcluster unter Cluster erstellen erstellt haben.

  • DEPLOYMENT_SPECIFICATION: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.

  • DBCLUSTER_SPECIFICATION: Pfad zu Ihren Clusterspezifikationen.

alloydbctl

Wenden Sie die Ressourcen- und Bereitstellungsspezifikationen an:

alloydbctl apply -d "DEPLOYMENT_SPECIFICATION" -r "DBCLUSTER_SPECIFICATION"

Ersetzen Sie die folgenden Variablen:

  • DEPLOYMENT_SPECIFICATION: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.

  • DBCLUSTER_SPECIFICATION: Pfad zu Ihren Clusterspezifikationen.

Load-Balancer überprüfen

Nachdem der RPM-Orchestrator die Einrichtung abgeschlossen hat, prüfen Sie, ob Sie über die VIP eine Verbindung zum Datenbankcluster herstellen können:

psql -h VIRTUAL_IP -U postgres

Ersetzen Sie VIRTUAL_IP durch die IP-Adresse, die Sie im Feld loadBalancerIP konfiguriert haben.

Der Load-Balancer leitet Ihre Verbindung automatisch zum aktuellen primären Knoten weiter.