En esta página se describe cómo configurar la alta disponibilidad en AlloyDB Omni. En esta página solo se explica cómo crear una instancia de AlloyDB Omni con una configuración de alta disponibilidad. No se explica cómo convertir instancias en alta disponibilidad.
Antes de empezar
Consulta la sección Alta disponibilidad y resiliencia de los datos.
Si aún no tienes uno, crea un Google Cloud proyecto.
Asegúrate de que la facturación esté habilitada en el proyecto.
Abre Cloud Shell en la Google Cloud consola.
En la consola de Google Cloud , clona el siguiente repositorio de origen.
git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
Instalación
En esta guía, desplegamos 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 la parte frontal del clúster, usamos HAProxy en un grupo de instancias gestionado para la dirección IP flotante, de forma 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:
Imagen 1. Configuración en la que HAProxy gestiona la conexión entre los clientes y el nodo principal.
Si se produce una interrupción, la configuración cambia al siguiente diagrama:
Imagen 2. Se ha actualizado la configuración en la que el nodo principal con errores se sustituye por el nodo de reserva.
Si el número de clientes que se conectan a la base de datos se convierte en un problema y tienes problemas de rendimiento debido al gran número de conexiones simultáneas a la base de datos, te recomendamos que añadas un grupo de conexiones del lado de la aplicación. Si no puedes hacerlo, puedes añadir un grupo 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 Cloud Solutions, ve al directorio terraform.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
Crea y edita un archivo
terraform.tfvars
. En el archivo, asigna valores a 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 consultar las descripciones de cada variable en GitHub, en el archivo de configuración de 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 el clúster de etcd
Tres nodos para tu clúster de Patroni
Un nodo para HAProxy
Configurar Patroni para que sea síncrono
Para que Patroni solo use la replicación síncrona en tu clúster de tres nodos, añade 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 tener el siguiente aspecto:
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 réplica principal y las demás. Patroni usa el parámetro synchronous_node_count
para gestionar el número de réplicas de espera síncronas. Patroni gestiona el número exacto de réplicas de espera síncronas en función del 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 abandonan. Para obtener más información sobre la réplica síncrona, consulta la sección Modos de réplica de la documentación de Patroni.