Hochverfügbarkeitseinrichtung erstellen

Auf dieser Seite wird beschrieben, wie Sie eine Hochverfügbarkeitskonfiguration für AlloyDB Omni einrichten. Auf dieser Seite wird nur das Erstellen einer neuen AlloyDB Omni-Instanz in einer Hochverfügbarkeitskonfiguration behandelt. Die Umwandlung bestehender Instanzen in Hochverfügbarkeit wird nicht behandelt.

Hinweise

  1. Lesen Sie den Hilfeartikel Hochverfügbarkeit und Datenausfallsicherheit.

  2. Wenn Sie noch kein Projekt haben, erstellen Sie ein Google Cloud .

  3. Die Abrechnung für Ihr Projekt muss aktiviert sein.

  4. Öffnen Sie Cloud Shell in der Google Cloud Console.

  5. Klonen Sie in der Google Cloud Console das folgende Quell-Repository.

    git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
    

Installation

In dieser Anleitung stellen wir einen Patroni-Cluster mit drei Knoten und AlloyDB Omni sowie einen etcd-Cluster mit drei Knoten als Konfigurationsspeicher bereit. Vor dem Cluster verwenden wir HAProxy in einer verwalteten Instanzgruppe für die Floating-IP-Adresse, damit der Failover für die Kunden transparent ist.

Die Erstkonfiguration für diese Einrichtung ist im folgenden Diagramm dargestellt:

Konfiguration, bei der HAProxy die Verbindung zwischen Clients und dem primären Knoten verwaltet

Abbildung 1. Konfiguration, bei der HAProxy die Verbindung zwischen den Clients und dem primären Knoten verwaltet.

Bei einem Ausfall ändert sich die Konfiguration in das folgende Diagramm:

Aktualisierte Konfiguration, bei der der ausgefallene primäre Knoten durch den Standby-Knoten ersetzt wird

Abbildung 2. Aktualisierte Konfiguration, bei der der ausgefallene primäre Knoten durch den Standby-Knoten ersetzt wird.

Wenn die Anzahl der Clients, die eine Verbindung zur Datenbank herstellen, zu einem Problem wird und Sie aufgrund der hohen Anzahl gleichzeitiger Datenbankverbindungen Leistungsprobleme haben, empfehlen wir Ihnen, ein anwendungsseitiges Verbindungs-Pooling hinzuzufügen. Wenn das nicht möglich ist, können Sie mit einem Tool wie PgBouncer ein datenbankseitiges Verbindungs-Pooling hinzufügen.

Bereitstellung

  1. Nachdem Sie das Cloud Solutions-Repository geklont haben, rufen Sie in Cloud Shell das Verzeichnis „terraform“ auf.

    cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
    
  2. Erstellen und bearbeiten Sie eine terraform.tfvars-Datei. Legen Sie in der Datei Werte für die folgenden Variablen fest.

    project_id                   = "PROJECT_ID"
    region                       = "REGION"
    zones                        = "ZONES"
    node_count                   = 3
    cluster_name                 = "CLUSTER_NAME"
    replication_user_password    = "REPLICATION_USER_PASSWORD"
    postgres_super_user_password = "PG_SUPER_USER_PASSWORD"
    

    Beschreibungen der einzelnen Variablen finden Sie auf GitHub in der Konfigurationsdatei für Variablen.

  3. Führen Sie das Terraform-Script aus, um alle Ressourcen zu erstellen.

    terraform init && terraform apply
    

    Dieses Script erstellt und konfiguriert Folgendes:

    • Drei Knoten für Ihren etcd-Cluster

    • Drei Knoten für Ihren Patroni-Cluster

    • Ein Knoten für HAProxy

Patroni synchron konfigurieren

Wenn Patroni nur die synchrone Replikation in Ihrem Cluster mit drei Knoten verwenden soll, fügen Sie in den Patroni-Konfigurationsdateien im Abschnitt „bootstrap“ Konfigurationselemente wie synchronous_mode, synchronous_node_count, synchronous_commit und synchronous_standby_names hinzu. Die Patroni-Konfiguration wird in der Startskriptvorlage und in der /alloydb/config/patroni.yml-Datei auf den Patroni-Knoten definiert. Wenn Sie die synchrone Replikation verwenden möchten, sollte Ihre Patroni-Bootstrap-Konfiguration so aussehen:

bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    synchronous_mode: true
    synchronous_node_count: 2
    postgresql:
      use_pg_rewind: true
      use_slots: true
      parameters:
        hot_standby: "on"
        wal_keep_segments: 20
        max_wal_senders: 8
        max_replication_slots: 8
        synchronous_commit: remote_apply
        synchronous_standby_names: '*'

Wenn synchronous_mode aktiviert ist, verwendet Patroni die synchrone Replikation zwischen dem primären und den anderen Replicas. Der Parameter synchronous_node_count wird von Patroni verwendet, um die Anzahl der synchronen Standby-Replikate zu verwalten. Patroni verwaltet die genaue Anzahl der synchronen Standby-Replikate basierend auf dem Parameter synchronous_node_count und passt den Status im Konfigurationsspeicher und in synchronous_standby_names an, wenn Mitglieder beitreten oder verlassen. Weitere Informationen zur synchronen Replikation finden Sie in der Patroni-Dokumentation im Abschnitt Replikationsmodi.

Nächste Schritte