Crea una configurazione ad alta disponibilità

Seleziona una versione della documentazione:

Questa pagina descrive come configurare una configurazione ad alta affidabilità per AlloyDB Omni. Questa pagina illustra solo la creazione di una nuova istanza AlloyDB Omni in una configurazione ad alta affidabilità. Non riguarda la conversione di istanze esistenti in istanze ad alta affidabilità.

Prima di iniziare

  1. Leggi Alta affidabilità e resilienza dei dati.

  2. Se non ne hai già uno, crea un progetto Google Cloud .

  3. Assicurati che la fatturazione sia abilitata per il progetto.

  4. Apri Cloud Shell nella console Google Cloud .

  5. Nella console Google Cloud , clona il seguente repository di codice sorgente.

    git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
    

Installazione

In questa guida, eseguiamo il deployment di un cluster Patroni a tre nodi con AlloyDB Omni e di un cluster etcd a tre nodi come archivio di configurazione. Nella parte anteriore del cluster, utilizziamo HAProxy in un gruppo di istanze gestite per l'indirizzo IP mobile, in modo che il failover sia trasparente per i client.

La configurazione iniziale per questa configurazione è mostrata nel seguente diagramma:

Configurazione in cui HAProxy gestisce la connessione tra i client e il nodo principale

Figura 1. Configurazione in cui HAProxy gestisce la connessione tra i client e il nodo principale.

Se si verifica un'interruzione, la configurazione cambia come mostrato nel seguente diagramma:

Configurazione aggiornata in cui il nodo principale con errori viene sostituito dal nodo di riserva

Figura 2. Configurazione aggiornata in cui il nodo principale con errori viene sostituito dal nodo di riserva.

Se il numero di client che si connettono al database diventa un problema e riscontri problemi di prestazioni a causa dell'elevato numero di connessioni simultanee al database, ti consigliamo di aggiungere il pooling delle connessioni lato applicazione. Se non puoi farlo, puoi aggiungere il pool di connessioni lato database utilizzando uno strumento come PgBouncer.

Deployment

  1. In Cloud Shell, dopo aver clonato il repository Cloud Solutions, vai alla directory terraform.

    cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
    
  2. Crea e modifica un file terraform.tfvars. Nel file, imposta i valori per le seguenti variabili.

    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"
    

    Le descrizioni di ogni variabile sono disponibili su GitHub nel file di configurazione delle variabili.

  3. Esegui lo script Terraform per creare tutte le risorse.

    terraform init && terraform apply
    

    Questo script crea e configura quanto segue:

    • Tre nodi per il cluster etcd

    • Tre nodi per il cluster Patroni

    • Un nodo per HAProxy

Configurazione di Patroni per la sincronizzazione

Per fare in modo che Patroni utilizzi solo la replica sincrona nel cluster a tre nodi, aggiungi elementi di configurazione come synchronous_mode, synchronous_node_count, synchronous_commit e synchronous_standby_names nella sezione bootstrap dei file di configurazione di Patroni. La configurazione di Patroni è definita nel template di script di avvio e nel file /alloydb/config/patroni.yml sui nodi Patroni. Per utilizzare la replica sincrona, la configurazione di bootstrap di Patroni deve essere la seguente:

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: '*'

Quando synchronous_mode è attivato, Patroni utilizza la replica sincrona tra l'istanza principale e le altre repliche. Il parametro synchronous_node_count viene utilizzato da Patroni per gestire il numero di repliche in standby sincrone. Patroni gestisce un numero preciso di repliche in standby sincrone in base al parametro synchronous_node_count e regola lo stato nell'archivio di configurazione e in synchronous_standby_names man mano che i membri si uniscono e se ne vanno. Per saperne di più sulla replica sincrona, consulta la sezione Modalità di replica nella documentazione di Patroni.

Passaggi successivi