Cette page explique comment configurer une configuration de haute disponibilité pour AlloyDB Omni. Cette page ne concerne que la création d'une instance AlloyDB Omni dans une configuration haute disponibilité. Il ne couvre pas la conversion des instances existantes en haute disponibilité.
Avant de commencer
Consultez la section Haute disponibilité et résilience des données.
Si vous n'en avez pas encore, créez un Google Cloud projet.
Assurez-vous que la facturation est activée pour votre projet.
Ouvrez Cloud Shell dans la console Google Cloud.
Dans la console Google Cloud, clonez le dépôt source suivant.
git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
Installation
Dans ce guide, nous déployons un cluster Patroni à trois nœuds avec AlloyDB Omni et un cluster etcd à trois nœuds comme magasin de configuration. À l'avant du cluster, nous utilisons HAProxy dans un groupe d'instances géré pour l'adresse IP flottante afin que le basculement soit transparent pour les clients.
La configuration initiale de cette configuration est illustrée dans le schéma suivant:
Figure 1 : Configuration dans laquelle HAProxy gère la connexion entre les clients et le nœud principal.
En cas d'indisponibilité, la configuration passe au schéma suivant:
Figure 2. Mise à jour de la configuration où le nœud principal défaillant est remplacé par le nœud de secours.
Si le nombre de clients qui se connectent à la base de données devient un problème et que vous rencontrez des problèmes de performances en raison du grand nombre de connexions simultanées à la base de données, nous vous recommandons d'ajouter un pool de connexions côté application. Si vous ne pouvez pas le faire, vous pouvez ajouter un regroupement de connexions côté base de données à l'aide d'un outil tel que PgBouncer.
Déploiement
Dans Cloud Shell, après avoir cloné le dépôt Cloud Solutions, accédez au répertoire terraform.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
Créez et modifiez un fichier
terraform.tfvars
. Dans le fichier, définissez les valeurs des variables suivantes.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"
Vous trouverez les descriptions de chaque variable sur GitHub dans le fichier de configuration des variables.
Exécutez le script Terraform pour créer toutes les ressources.
terraform init && terraform apply
Ce script crée et configure les éléments suivants:
Trois nœuds pour votre cluster etcd
Trois nœuds pour votre cluster Patroni
Un nœud pour HAProxy
Configurer Patroni pour qu'il soit synchrone
Pour que Patroni n'utilise que la réplication synchrone dans votre cluster à trois nœuds, ajoutez des éléments de configuration tels que synchronous_mode
, synchronous_node_count
, synchronous_commit
et synchronous_standby_names
dans la section de démarrage de vos fichiers de configuration Patroni. La configuration Patroni est définie dans le modèle de script de démarrage et dans le fichier /alloydb/config/patroni.yml
sur les nœuds Patroni. Pour utiliser la réplication synchrone, votre configuration d'amorçage Patroni doit se présenter comme suit:
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: '*'
Lorsque synchronous_mode
est activé, Patroni utilise la réplication synchrone entre l'instance principale et les autres instances dupliquées. Le paramètre synchronous_node_count
est utilisé par Patroni pour gérer le nombre de réplicas de secours synchrones. Patroni gère un nombre précis de réplicas de veille synchrones en fonction du paramètre synchronous_node_count
et ajuste l'état dans le magasin de configuration et dans synchronous_standby_names
lorsque des membres rejoignent et quittent le cluster. Pour en savoir plus sur la réplication synchrone, consultez la section Modes de réplication dans la documentation de Patroni.