Crie uma configuração de alta disponibilidade

Selecione uma versão da documentação:

Esta página descreve como configurar uma configuração de alta disponibilidade para o AlloyDB Omni. Esta página apenas aborda a criação de uma nova instância do AlloyDB Omni numa configuração de alta disponibilidade. Não abrange a conversão de instâncias existentes em alta disponibilidade.

Antes de começar

  1. Leia o artigo Alta disponibilidade e resiliência dos dados.

  2. Se ainda não tiver um, crie um Google Cloud projeto.

  3. Certifique-se de que a faturação está ativada para o seu projeto.

  4. Abra o Cloud Shell na Google Cloud consola.

  5. Na Google Cloud consola, clone o seguinte repositório de origem.

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

Instalação

Neste guia, implementamos um cluster Patroni de três nós com o AlloyDB Omni e um cluster etcd de três nós como o arquivo de configuração. Na parte frontal do cluster, usamos o HAProxy num grupo de instâncias gerido para o endereço IP flutuante, para que a comutação por falha seja transparente para os clientes.

A configuração inicial desta configuração é apresentada no diagrama seguinte:

Configuração em que o HAProxy gere a ligação entre os clientes e o nó principal

Figura 1. Configuração em que o HAProxy gere a ligação entre os clientes e o nó principal.

Se ocorrer uma indisponibilidade, a configuração muda para o seguinte diagrama:

Configuração atualizada em que o nó principal com falhas é substituído pelo nó de reserva

Figura 2. Configuração atualizada em que o nó principal com falhas é substituído pelo nó de reserva.

Se o número de clientes que se ligam à base de dados se tornar um problema e tiver problemas de desempenho devido ao elevado número de ligações simultâneas à base de dados, recomendamos que adicione o agrupamento de ligações do lado da aplicação. Se não o conseguir fazer, pode adicionar o agrupamento de ligações do lado da base de dados através de uma ferramenta como o PgBouncer.

Implementação

  1. No Cloud Shell e após clonar o repositório de soluções na nuvem, navegue para o diretório do Terraform.

    cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
    
  2. Crie e edite um ficheiro terraform.tfvars. No ficheiro, defina valores para as seguintes variáveis.

    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"
    

    Pode encontrar descrições de cada variável no GitHub no ficheiro de configuração de variáveis.

  3. Execute o script do Terraform para criar todos os recursos.

    terraform init && terraform apply
    

    Este script cria e configura o seguinte:

    • Três nós para o cluster etcd

    • Três nós para o cluster do Patroni

    • Um nó para o HAProxy

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 secção de arranque nos ficheiros de configuração do Patroni. A configuração do Patroni é definida no modelo de script de arranque e no ficheiro /alloydb/config/patroni.yml nos nós do Patroni. Para usar a replicação síncrona, a configuração de arranque do Patroni deve ter o seguinte aspeto:

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 o respetivo servidor principal e as outras réplicas. O parâmetro synchronous_node_count é usado pelo Patroni para gerir o número de réplicas de espera síncronas. O Patroni gere o número preciso de réplicas de standby síncronas com base no parâmetro synchronous_node_count e ajusta o estado no arquivo de configuração e no synchronous_standby_names à medida que os membros aderem e saem. Para mais informações sobre a replicação síncrona, consulte a secção Modos de replicação na documentação do Patroni.

O que se segue?