Esta página descreve como configurar uma configuração de alta disponibilidade para o AlloyDB Omni. Esta página aborda apenas a criação de uma nova instância do AlloyDB Omni em uma configuração de alta disponibilidade. Ele não aborda a conversão de instâncias atuais para alta disponibilidade.
Antes de começar
Se você ainda não tiver um, crie um Google Cloud projeto.
Verifique se o faturamento está ativado no projeto.
Abra o Cloud Shell no console do Google Cloud.
No console do Google Cloud, clone o repositório de origem a seguir.
git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
Instalação
Neste guia, implantamos um cluster Patroni de três nós com o AlloyDB Omni e um cluster de três nós etcd como a loja de configuração. Na parte frontal do cluster, usamos o HAProxy em um grupo de instâncias gerenciadas para o endereço IP flutuante, para que o failover seja transparente para os clientes.
A configuração inicial é mostrada no diagrama abaixo:
Figura 1. Configuração em que o HAProxy gerencia a conexão entre clientes e o nó principal.
Se ocorrer uma interrupção, a configuração muda para o diagrama a seguir:
Figura 2. Atualização da configuração em que o nó principal com falha é substituído pelo em espera.
Se o número de clientes que se conectam ao banco de dados se tornar um problema e você tiver problemas de desempenho devido ao grande número de conexões simultâneas do banco de dados, recomendamos adicionar o agrupamento de conexões do lado do aplicativo. Se não for possível fazer isso, adicione o agrupamento de conexões do lado do banco de dados usando uma ferramenta como o PgBouncer.
Implantação
No Cloud Shell, depois de clonar o repositório de soluções do Cloud, navegue até o diretório terraform.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
Crie e edite um arquivo
terraform.tfvars
. No arquivo, defina valores para as variáveis abaixo.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"
As descrições de cada variável podem ser encontradas no GitHub no arquivo de configuração de variáveis.
Execute o script do Terraform para criar todos os recursos.
terraform init && terraform apply
Esse script cria e configura o seguinte:
Três nós para o cluster etcd
Três nós para seu cluster do Patroni
Um nó para o HAProxy
Como configurar o Patroni para ser síncrono
Para fazer com que o Patroni use apenas a replicação síncrona no cluster de três nós,
adicione itens de configuração como synchronous_mode
, synchronous_node_count
,
synchronous_commit
e synchronous_standby_names
na seção de inicialização
nos arquivos de configuração do Patroni. A configuração do Patroni é definida no
modelo de script de inicialização
e no arquivo /alloydb/config/patroni.yml
nos nós do Patroni. Para usar
a replicação síncrona, a configuração de inicialização do Patroni precisa ser
esta:
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
está ativado, o Patroni usa a replicação síncrona
entre a réplica principal e as outras. O parâmetro
synchronous_node_count
é usado pelo Patroni para gerenciar o número de réplicas
em espera síncronas. O Patroni gerencia o número preciso de réplicas de standby
síncronas com base no parâmetro synchronous_node_count
e ajusta o estado no
armazenamento de configuração e no synchronous_standby_names
conforme os membros entram
e saem. Para mais informações sobre a replicação síncrona, consulte a seção
Modos de replicação
na documentação do Patroni.