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
Lesen Sie den Abschnitt Hochverfügbarkeit und Datenresilienz.
Falls Sie noch kein Projekt haben, erstellen Sie ein Google Cloud Projekt.
Die Abrechnung für Ihr Projekt muss aktiviert sein.
Öffnen Sie Cloud Shell in der Google Cloud Console.
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:
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:
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
Wechseln Sie in Cloud Shell nach dem Klonen des Cloud Solutions-Repositorys zum Terraform-Verzeichnis.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
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.
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.