Crea una configuración de alta disponibilidad

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

  1. Lee Alta disponibilidad y resiliencia de los datos.

  2. Si aún no tienes uno, crea un Google Cloud proyecto.

  3. Asegúrate de tener habilitada la facturación para tu proyecto.

  4. Abre Cloud Shell en la consola de Google Cloud.

  5. 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:

Configuración en la que HAProxy administra la conexión entre los clientes y el nodo principal

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:

Configuración actualizada en la que el nodo en espera reemplaza al nodo principal con fallas

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

  1. 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
    
  2. 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.

  3. 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.

¿Qué sigue?