Hochverfügbarkeitseinrichtung erstellen

Wählen Sie eine Dokumentationsversion aus:

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

Hinweise

  1. Lesen Sie den Abschnitt Hochverfügbarkeit und Datenresilienz.

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

  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 Konsole 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 mit AlloyDB Omni und 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 das Failover für Clients transparent ist.

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

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

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

Bei einem Ausfall ändert sich die Konfiguration wie im folgenden Diagramm dargestellt:

Aktualisierte Konfiguration, in der der ausgefallene primäre Knoten durch den Stand-by-Knoten ersetzt wird

Abbildung 2. Aktualisierte Konfiguration, in der der ausgefallene primäre Knoten durch den Stand-by-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, auf Anwendungsseite Connection Pooling hinzuzufügen. Wenn das nicht möglich ist, können Sie mit einem Tool wie PgBouncer Verbindungs-Pooling auf Datenbankseite hinzufügen.

Bereitstellung

  1. Wechseln Sie in Cloud Shell nach dem Klonen des Cloud Solutions-Repositorys zum Terraform-Verzeichnis.

    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-Skript aus, um alle Ressourcen zu erstellen.

    terraform init && terraform apply
    

    Mit diesem Skript werden die folgenden Elemente erstellt und konfiguriert:

    • Drei Knoten für Ihren etcd-Cluster

    • Drei Knoten für Ihren Patroni-Cluster

    • Ein Knoten für HAProxy

Patroni für die synchrone Replikation konfigurieren

Damit Patroni in Ihrem Cluster mit drei Knoten nur die synchrone Replikation verwendet, fügen Sie in den Patroni-Konfigurationsdateien im Bootstrap-Abschnitt Konfigurationselemente wie synchronous_mode, synchronous_node_count, synchronous_commit und synchronous_standby_names hinzu. Die Patroni-Konfiguration wird in der Startup-Skriptvorlage und in der Datei /alloydb/config/patroni.yml 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 Knoten und den anderen Replikaten. Der Parameter synchronous_node_count wird von Patroni verwendet, um die Anzahl der synchronen Standby-Replikate zu verwalten. Patroni verwaltet die genaue Anzahl synchroner Standby-Replikate basierend auf dem Parameter synchronous_node_count und passt den Status im Konfigurationsspeicher und in synchronous_standby_names an, wenn Mitglieder hinzukommen und entfernt werden. Weitere Informationen zur synchronen Replikation finden Sie im Abschnitt Replication modes (Replikationsmodi) in der Patroni-Dokumentation.

Nächste Schritte