En esta página, se describe cómo configurar la alta disponibilidad para AlloyDB Omni. En esta página, solo se explica cómo crear una instancia de AlloyDB Omni nueva en una configuración de alta disponibilidad. No abarca la conversión de instancias existentes a alta disponibilidad.
Antes de comenzar
Si aún no tienes uno, crea un Google Cloud proyecto.
Asegúrate de que la facturación esté habilitada para tu proyecto.
Abre Cloud Shell en la Google Cloud consola.
En la Google Cloud consola, clona el siguiente repositorio de código fuente.
git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
Instalación
En esta guía, implementamos un clúster de Patroni de tres nodos con AlloyDB Omni y un clúster de etcd de tres nodos como almacén de configuración. En el frontend del clúster, usamos HAProxy en un grupo de instancias administrado para la dirección IP flotante, de modo que la conmutación por error sea transparente para los clientes.
La configuración inicial de este ajuste se muestra en el siguiente diagrama:
Figura 1. Configuración en la que HAProxy administra la conexión entre los clientes y el nodo principal.
Si se produce una interrupción, la configuración cambia al siguiente diagrama:
Figura 2. Configuración actualizada en la que el nodo principal con errores se reemplaza por el nodo en espera.
Si la cantidad de clientes que se conectan a la base de datos se convierte en un problema y tienes problemas de rendimiento debido a la gran cantidad de conexiones simultáneas a la base de datos, te recomendamos que agregues un grupo de conexiones del lado de la aplicación. Si no puedes hacerlo, puedes agregar la agrupación de conexiones del lado de la base de datos con una herramienta como PgBouncer.
Implementación
En Cloud Shell, después de clonar el repositorio de Cloud Solutions, navega al directorio de Terraform.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
Crea y edita un archivo
terraform.tfvars
. En el archivo, establece valores para las siguientes variables.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"
Puedes encontrar las descripciones de cada variable en el archivo de configuración de variables en GitHub.
Ejecuta la secuencia de comandos de Terraform para crear todos los recursos.
terraform init && terraform apply
Esta secuencia de comandos crea y configura lo siguiente:
Tres nodos para tu clúster de etcd
Tres nodos para tu clúster de Patroni
Un nodo para HAProxy
Configura Patroni para que sea síncrono
Para que Patroni use solo la replicación síncrona en tu clúster de tres nodos, agrega elementos de configuración como synchronous_mode
, synchronous_node_count
, synchronous_commit
y synchronous_standby_names
en la sección de arranque de tus archivos de configuración de Patroni. La configuración de Patroni se define en la plantilla de secuencia de comandos de inicio y en el archivo /alloydb/config/patroni.yml
de los nodos de Patroni. Para usar la replicación síncrona, la configuración de arranque de Patroni debe verse de la siguiente manera:
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: '*'
Cuando synchronous_mode
está activado, Patroni usa la replicación síncrona entre su instancia principal y las otras réplicas. Patroni usa el parámetro synchronous_node_count
para administrar la cantidad de réplicas en espera síncronas. Patroni administra la cantidad precisa de réplicas en espera síncronas según el parámetro synchronous_node_count
y ajusta el estado en el almacén de configuración y en synchronous_standby_names
a medida que los miembros se unen y se van. Para obtener más información sobre la replicación síncrona, consulta la sección Modos de replicación en la documentación de Patroni.