Criar uma instância de pool de leitura replicada de forma assíncrona usando o orquestrador de RPM

Selecione uma versão da documentação:

Para aumentar a capacidade de processamento de leitura e a disponibilidade do cluster de banco de dados, crie uma instância de pool de leitura assíncrona. Uma instância de pool de leitura fornece um clone somente leitura da instância de banco de dados, garantindo o acesso aos dados mesmo que a instância de banco de dados fique indisponível.

É possível definir a configuração da instância do pool de leitura no arquivo de manifesto da instância de banco de dados. Cada instância do pool de leitura exige a criação de um arquivo de manifesto exclusivo. É possível implantar várias instâncias do pool de leitura, com até 20 nós de pool de leitura no total por cluster de banco de dados.

Cada instância do pool de leitura ocupa a mesma quantidade de armazenamento que a instância replicada.

Criar uma instância de pool de leitura replicada assíncrona

Para criar uma instância de pool de leitura replicada assíncrona do AlloyDB Omni, siga estas etapas:

  1. Crie o manifesto da instância de banco de dados para definir o tipo de instância do pool de leitura:

    DBInstance:
      metadata:
        name: READ_POOL_INSTANCE_NAME
      spec:
        instanceType: ReadPool
        nodeCount: READ_POOL_NODE_COUNT
        readPoolPort: READ_POOL_PORT
        dbcParent:
          name: DB_CLUSTER_NAME
    

    Substitua:

    • READ_POOL_INSTANCE_NAME: um nome para esse recurso. Por exemplo, read-pool-instance-1.

    • DB_CLUSTER_NAME: o nome do cluster de banco de dados a que a instância pertence.

    • READ_POOL_NODE_COUNT: (opcional) o número de nós em uma instância do pool de leitura. Isso determina a capacidade de computação geral da instância. É possível ter um máximo de 20 nós de pool de leitura no total por cluster de banco de dados.

    • READ_POOL_PORT: (opcional) a porta no balanceador de carga (VIP) para rotear o tráfego de leitura para essa instância do pool de leitura. O padrão é 5434.

  2. Aplique a especificação DBInstance.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"

    Substitua as seguintes variáveis:

    • DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação da implantação criada em Instalar componentes do AlloyDB Omni.

    • DBINSTANCE_SPECIFICATION: caminho para o arquivo de manifesto DBInstance criado na etapa anterior.

    Ansible

    ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \
          -e resource_spec="DBINSTANCE_SPECIFICATION"

    Substitua as seguintes variáveis:

    • DBINSTANCE_PLAYBOOK: caminho para o manual criado para a especificação DBInstance.

    • DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação da implantação criada em Instalar componentes do AlloyDB Omni.

    • DBINSTANCE_SPECIFICATION: caminho para o arquivo de manifesto DBInstance criado na etapa anterior.

Verificar o status da instância

Para verificar a disponibilidade da instância do pool de leitura, receba o status do recurso DBInstance:

alloydbctl

alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yaml

Substitua as seguintes variáveis:

  • DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação da implantação criada em Instalar componentes do AlloyDB Omni.

  • READ_POOL_INSTANCE_NAME: o nome da instância do pool de leitura especificada no manifesto.

Ansible

Execute o manual google.alloydbomni_orchestrator.status. Para mais informações, consulte Receber o status do cluster.

ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
      -e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"

Substitua as seguintes variáveis:

  • STATUS_PLAYBOOK_PATH: caminho para o manual criado para receber o status do cluster.

  • DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação de implantação criada em Instalar componentes do AlloyDB Omni.

  • READ_POOL_INSTANCE_NAME: o nome da instância do pool de leitura especificada no manifesto.

Verifique a seção .status.conditions da resposta para o seguinte:

  • Se o status da condição Available for true, isso indica que a instância do pool de leitura pode atender a consultas, mas talvez não esteja replicando dados da instância de banco de dados.
  • Se o status da condição Streaming for true, isso indica que a instância do pool de leitura está conectada à instância de banco de dados e transmitindo mudanças ativamente.

Quando a instância de banco de dados está inacessível, a instância do pool de leitura continua atendendo a consultas. Nesse caso, o status de disponibilidade será true, enquanto o status de transmissão será false.

Depois de configurar a instância do pool de leitura, todas as inserções, atualizações e exclusões de linhas na instância de banco de dados principal ficam legíveis na instância do pool de leitura.

Conectar-se à instância do pool de leitura

Depois que a instância do pool de leitura fica Available, o balanceador de carga configura automaticamente um front-end somente leitura dedicado que roteia o tráfego para os nós do pool de leitura.

Para conferir o endpoint de conexão, verifique status.endpoints na saída de status DBInstance. O endpoint somente leitura, por exemplo, VIP_IP:5434, distribui consultas somente leitura recebidas em todos os nós íntegros do pool de leitura.

Para se conectar à instância do pool de leitura, use a ferramenta de cliente psql com o endereço IP e a porta do endpoint:

psql -h VIP_IP -p READ_POOL_PORT -U postgres

Substitua:

  • VIP_IP: o endereço IP do endpoint somente leitura.
  • READ_POOL_PORT: a porta do endpoint somente leitura.

Se você tentar realizar operações de gravação nesse endpoint, as operações falharão imediatamente com um erro indicando que não é possível executar inserções em uma transação somente leitura.

Gerenciar a instância do pool de leitura

O orquestrador de RPM oferece suporte ao escalonamento dinâmico e à exclusão de instâncias de pool de leitura sem tempo de inatividade do cluster.

Escalonar uma instância do pool de leitura

Para adicionar ou remover nós de um pool de leitura atual, atualize o campo nodeCount no arquivo de manifesto DBInstance.

  1. Abra o arquivo de manifesto DBInstance e modifique o valor nodeCount para refletir o número de nós selecionado.

  2. Aplique o manifesto de atualização usando o método de implantação preferido, o comando alloydbctl apply ou o playbook do Ansible.

O orquestrador de RPM provisiona ou remove automaticamente os nós de réplica de leitura, e o balanceador de carga é atualizado dinamicamente para rotear o tráfego para os nós disponíveis no pool.

Excluir uma instância do pool de leitura

Para excluir uma instância do pool de leitura, use o comando alloydbctl delete:

alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAME

Substitua READ_POOL_INSTANCE_NAME pelo nome da instância do pool de leitura que você quer excluir.

Ao excluir uma instância do pool de leitura, o orquestrador interrompe o serviço de réplica de leitura e limpa os nós. O balanceador de carga remove automaticamente o roteamento sem causar impasses de promoção ou afetar o tráfego para as instâncias principal ou em espera.