Criar um cluster

Selecione uma versão da documentação:

Crie um cluster de banco de dados para começar a usar o AlloyDB Omni.

Limitações

Considere as seguintes limitações:

  • O AlloyDB Omni é executado na porta 5432. Não é possível configurar uma porta personalizada.

  • Verifique se todas as configurações de parâmetros do banco de dados estão corretas antes de criar o cluster. Depois que o cluster é criado, não é possível modificar nenhum parâmetro de banco de dados.

Antes de começar

Antes de criar o cluster, faça o seguinte:

  • Instalar o orquestrador do AlloyDB Omni

  • Instalar componentes do AlloyDB Omni

  • Configurar certificados TLS

  • Monte um volume externo (DataDisk) em PG_DATA_DIR em todos os nós de banco de dados provisionados no orquestrador.

  • Se você planeja usar alloydbctl em vez do Ansible, verifique se o pacote policycoreutils-python-utils necessário está instalado em todas as VMs. Para instalar esse pacote, execute o seguinte comando:

    sudo dnf install policycoreutils-python-utils
  • Se você estiver usando o ambiente Google Cloud , defina ENVIRONMENT_TYPE como gcp. Em seguida, autentique sua conta da CLI gcloud executando gcloud auth login como o usuário root. Além disso, a conta autenticada precisa ter as seguintes permissões:

    • compute.instances.get
    • compute.instances.list
    • compute.instances.updateNetworkInterface

Preparar especificações de cluster

Para criar o cluster, o AlloyDB Omni precisa saber como configurá-lo. Para criar as especificações necessárias, crie um arquivo YAML usando o formato DBCluster:

Secret:
  metadata:
    name: db-pw-DBCLUSTER_NAME
  spec:
    type: Opaque
    data:
      DBCLUSTER_NAME: BASE64_PASSWORD
---
DBCluster:
  metadata:
    name: DBCLUSTER_NAME
  spec:
    databaseVersion: 18.1.0
    mode: ""
    availability:
      numberOfStandbys: NUM_STANDBY_NODES
      enableAutoFailover: true
      enableAutoHeal: true
      autoFailoverTriggerThreshold: AUTOFAILOVER_TRIGGER_THRESHOLD
      autoHealTriggerThreshold: AUTOHEAL_TRIGGER_THRESHOLD
      healthcheckPeriodSeconds: HEALTHCHECK_PERIOD
      replayReplicationSlotsOnStandbys: false
    primarySpec:
      adminUser:
        passwordRef:
          name: db-pw-DBCLUSTER_NAME
      resources:
        cpu: CPU_LIMIT
        memory: MEMORY_LIMIT
        disks:
        - name: DataDisk
          path: PG_DATA_DIR
      parameters:
        max_connections: "MAX_CONNECTIONS"
        max_wal_size: "MAX_WAL_SIZE"
        max_worker_processes: "MAX_WORKER_PROCESSES"
        log_connections: "LOG_CONNECTIONS"
        log_disconnections: "LOG_DISCONNECTS"
        log_hostname: "LOG_HOSTNAME"
        log_statement: "LOG_STATEMENT"
        huge_pages: "HUGE_PAGES"
        tcp_keepalives_idle: "TCP_KEEPALIVES_IDLE"
        tcp_keepalives_interval: "TCP_KEEPALIVES_INTERVAL"
        tcp_keepalives_count: "TCP_KEEPALIVES_COUNT"
      dbLoadBalancerOptions:
        DB_LOAD_BALANCER_TYPE:
          loadBalancerIP: "VIRTUAL_IP"
          loadBalancerType: "internal"
          loadBalancerInterface: "VIRTUAL_IP_INTERFACE"

Substitua as seguintes variáveis:

  • DBCLUSTER_NAME: nome do cluster de banco de dados. Por exemplo, my-dbcluster.

  • BASE64_PASSWORD: senha codificada em base64 usada para o usuário administrador do postgres.

  • NUM_STANDBY_NODES: número de nós em espera no cluster. Por exemplo, 2.

  • (Opcional) AUTOFAILOVER_TRIGGER_THRESHOLD: número de vezes que a verificação de integridade pode falhar antes de ocorrer um failover. O valor padrão é 3. O valor mínimo é 0, mas se o valor for definido como 0, o AlloyDB Omni usará o valor padrão.

    Um failover automático ocorre se a verificação de integridade falhar AUTOFAILOVER_TRIGGER_THRESHOLD vezes ou se a duração cumulativa da verificação de integridade atingir HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD segundos.

  • (Opcional) AUTOHEAL_TRIGGER_THRESHOLD: número de vezes que a verificação de integridade pode falhar antes do início da recuperação automática. O valor padrão é 3. O valor mínimo é 0, mas se o valor for definido como 0, o AlloyDB Omni usará o valor padrão.

    Uma recuperação automática ocorre se a verificação de integridade falhar AUTOHEAL_TRIGGER_THRESHOLD vezes ou se a duração cumulativa da verificação de integridade atingir HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD segundos.

  • (Opcional) HEALTHCHECK_PERIOD: número de segundos de espera entre cada verificação de integridade. O valor padrão é 30. O valor mínimo é 1. O valor máximo é 86400 (um dia).

  • CPU_LIMIT: número de CPUs a serem alocadas para o contêiner de banco de dados. Por exemplo, 4.

  • MEMORY_LIMIT: quantidade de memória a ser alocada para o contêiner do banco de dados. Por exemplo: 32Gi e 500Mi.

  • PG_DATA_DIR: caminho do host para o diretório em que os dados do banco de dados serão armazenados.

  • (Opcional) MAX_CONNECTIONS: número máximo de conexões simultâneas com o banco de dados PostgreSQL. O valor padrão é 50. O valor mínimo aceito também é 50. Para mais informações, consulte a referência max_connections do PostgreSQL.

  • (Opcional) MAX_WAL_SIZE: tamanho máximo para permitir que o Write-Ahead-Log (WAL) aumente durante os checkpoints automáticos. O valor padrão é 1GB. Para mais informações, consulte a referência do max_wal_size do PostgreSQL.

  • (Opcional) MAX_WORKER_PROCESSES: número máximo de workers que podem ser iniciados por um único Gather ou Gather Merge. O valor padrão é 64. Para mais informações, consulte a referência do max_worker_processes do PostgreSQL.

  • (Opcional) LOG_CONNECTIONS: determina se as conexões com o servidor PostgreSQL são registradas ou não. O valor padrão é on. Para mais informações, consulte a referência do log_connections do PostgreSQL.

  • (Opcional) LOG_DISCONNECTS: determina se as terminações de sessão do PostgreSQL são registradas. O valor padrão é on. Para mais informações, consulte a referência do log_disconnections do PostgreSQL.

  • (Opcional) LOG_HOSTNAME: determina se o nome do host será registrado além do IP do host de conexão. O valor padrão é on. Para mais informações, consulte a referência log_hostname do PostgreSQL.

  • (Opcional) LOG_STATEMENT: determina quais instruções SQL são registradas. O valor padrão é none. Para mais informações, consulte a referência log_statement do PostgreSQL.

  • (Opcional) HUGE_PAGES: determina se páginas enormes são solicitadas para a principal área de memória compartilhada. O valor padrão é off. Para mais informações, consulte a referência do huge_pages do PostgreSQL.

  • (Opcional) TCP_KEEPALIVES_IDLE: quantidade de tempo, em segundos, sem atividade de rede antes que o SO tente enviar uma mensagem TCP keepalive ao cliente. O valor padrão é 10. Para mais informações, consulte a referência do tcp_keepalives_idle do PostgreSQL.

  • (Opcional) TCP_KEEPALIVES_INTERVAL: tempo (em segundos) antes que uma mensagem keepalive TCP que não foi confirmada pelo cliente seja retransmitida. O valor padrão é 10. Para mais informações, consulte a referência do tcp_keepalives_interval do PostgreSQL.

  • (Opcional) TCP_KEEPALIVES_COUNT: número de mensagens TCP keepalive que podem ser perdidas antes que a conexão do servidor com o cliente seja considerada inativa. O valor padrão é 10. Para mais informações, consulte a referência do tcp_keepalives_count do PostgreSQL.

  • (Opcional) ENVIRONMENT_TYPE: determina o ambiente em que o cluster é configurado: onprem ou gcp.

  • (Opcional) VIRTUAL_IP: endereço IP virtual usado pelo balanceador de carga. Se você definir dbLoadBalancerOptions, isso será obrigatório. Para mais informações, consulte Gerenciar alta disponibilidade.

  • (Opcional) VIRTUAL_IP_INTERFACE: interface de rede em que VIRTUAL_IP está configurado. O valor padrão é eth0.

Crie o cluster

Para criar o cluster, selecione a guia que corresponde ao seu ambiente e siga as instruções.

Ansible

Para criar o cluster, siga estas instruções:

  1. Crie um playbook para as especificações do cluster de banco de dados.

    - name: Create DBCluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    
    

    Substitua as seguintes variáveis:

    • ANSIBLE_USER: usuário do SO que o Ansible usa para fazer login nos nós do AlloyDB Omni.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: chave privada usada pelo Ansible para se conectar aos nós do AlloyDB Omni usando SSH.

  2. Execute o manual.

    ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPEC" \
          -e resource_spec="DBCLUSTER_SPECIFICATIONS"

    Substitua as seguintes variáveis:

    • DBCLUSTER_PLAYBOOK: caminho para o playbook que você criou para o cluster de banco de dados.

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

    • DBCLUSTER_SPECIFICATIONS: caminho para as especificações do cluster.

alloydbctl

Para criar o cluster, execute o comando a seguir:

alloydbctl apply -d "DEPLOYMENT_SPEC" -r "DBCLUSTER_SPECIFICATIONS"

Substitua as seguintes variáveis:

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

  • DBCLUSTER_SPECIFICATIONS: caminho para as especificações do cluster.

Excluir seu cluster

Para excluir o cluster, selecione a guia que corresponde ao seu ambiente e siga as instruções.

Ansible

Para excluir o cluster usando o Ansible, faça o seguinte:

  1. Crie um playbook chamado teardown.yaml:

    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.delete
    
  2. Execute o playbook usando ansible-playbook. Especifique DBCluster como resource_type e o nome do cluster a ser excluído como resource_name.

    ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
      -e `resource_type`=`DBCluster` -e `resource_name`="DBCLUSTER_NAME"

Se o processo de encerramento falhar devido a inconsistências no estado do cluster (por exemplo, se um nó estiver inacessível), tente forçar a exclusão do cluster adicionando -e force=true ao comando. Isso instrui o orquestrador a ignorar erros durante o processo de desmontagem e tentar remover o máximo de recursos possível.

  ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
    -e resource_type=DBCluster -e resource_name="DBCLUSTER_NAME" -e force=true

alloydbctl

Para excluir o cluster usando alloydbctl, execute o seguinte comando:

alloydbctl delete -d "DEPLOYMENT_SPEC" \
      --resource_type DBCluster --resource_name "DBCLUSTER_NAME"

Substitua as seguintes variáveis:

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

  • DBCLUSTER_NAME: nome do cluster de banco de dados. Por exemplo, my-dbcluster.