En esta página, se describe cómo configurar una configuración de alta disponibilidad para AlloyDB Omni. En esta página, solo se explica cómo crear una instancia nueva de AlloyDB Omni en una configuración de alta disponibilidad. No se trata de 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 tener habilitada la facturación para tu proyecto.
Abre Cloud Shell en la consola de Google Cloud.
En la consola de Google Cloud, 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 el almacén de configuración. En el frente 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 esta configuración 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 el grupo de conexiones del lado de la aplicación. Si no puedes hacerlo, puedes agregar un grupo de conexiones del lado de la base de datos con una herramienta como PgBouncer.
Implementación
En Cloud Shell y después de clonar el repositorio de Cloud Solutions, navega al directorio 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"
Las descripciones de cada variable se pueden encontrar en GitHub en el archivo de configuración de las variables.
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
Cómo configurar 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
en 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 se activa synchronous_mode
, Patroni usa la replicación síncrona entre su principal y las otras réplicas. Patroni usa el parámetro synchronous_node_count
para administrar la cantidad de réplicas de reserva síncronas. Patroni administra la cantidad precisa de réplicas de reserva 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 salen. 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.