Questa pagina descrive come configurare una configurazione ad alta disponibilità per AlloyDB Omni. Questa pagina tratta solo la creazione di una nuova istanza AlloyDB Omni in una configurazione ad alta disponibilità. Non copre la conversione delle istanze esistenti in alta disponibilità.
Prima di iniziare
Leggi la sezione Alta disponibilità e resilienza dei dati.
Se non ne hai già uno, crea un Google Cloud progetto.
Assicurati che la fatturazione sia attivata per il tuo progetto.
Apri Cloud Shell nella console Google Cloud .
Nella console Google Cloud , clona il seguente repository di origine.
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:
Figura 1. Configurazione in cui HAProxy gestisce la connessione tra i client e il nodo primario.
Se si verifica un'interruzione, la configurazione cambia nel seguente diagramma:
Figura 2. Configurazione aggiornata in cui il nodo primario non riuscito 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 di connessioni lato applicazione. Se non riesci a farlo, puoi aggiungere il pool di connessioni lato database utilizzando uno strumento come PgBouncer.
Deployment
In Cloud Shell, dopo aver clonato il repository Cloud Solutions, vai alla directory terraform.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
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.
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 di bootstrap
nei file di configurazione di Patroni. La configurazione di Patroni è definita nel
modello 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 dovrebbe avere il seguente
aspetto:
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 il nodo primario e le altre repliche. Il parametro
synchronous_node_count
viene utilizzato da Patroni per gestire il numero di repliche
standby sincrone. Patroni gestisce il numero esatto di repliche di 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 entrano ed escono. Per saperne di più sulla replica sincrona, consulta la sezione
Modalità di replica
nella documentazione di Patroni.