Crea un clúster

Selecciona una versión de la documentación:

Crea un clúster de base de datos para comenzar a usar AlloyDB Omni.

Limitaciones

Se aplica la siguiente limitación:

  • AlloyDB Omni se ejecuta en el puerto 5432. No se admite la configuración de un puerto personalizado.

  • Asegúrate de que todos los parámetros de configuración de la base de datos sean correctos antes de crear el clúster. Una vez que se crea el clúster, no puedes modificar ningún parámetro de la base de datos.

Antes de comenzar

Antes de crear tu clúster, completa los siguientes pasos:

  • Instala el orquestador de AlloyDB Omni

  • Instala los componentes de AlloyDB Omni

  • Configura certificados TLS

  • Activa un volumen externo (DataDisk) en PG_DATA_DIR en todos los nodos de la base de datos aprovisionados dentro del orquestador.

  • Si planeas usar alloydbctl en lugar de Ansible, asegúrate de que el paquete policycoreutils-python-utils requerido esté instalado en todas tus VMs. Para instalar este paquete, ejecuta el siguiente comando:

    sudo dnf install policycoreutils-python-utils
  • Si usas el entorno de Google Cloud , configura ENVIRONMENT_TYPE como gcp. Luego, debes autenticar tu cuenta de gcloud CLI ejecutando gcloud auth login como el usuario root. Además, la cuenta autenticada debe tener los siguientes permisos:

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

Prepara las especificaciones del clúster

Para crear tu clúster, AlloyDB Omni debe saber cómo configurarlo. Para crear las especificaciones necesarias, crea un archivo YAML con el 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"

Reemplaza las siguientes variables:

  • DBCLUSTER_NAME: Es el nombre de tu clúster de base de datos. Por ejemplo, my-dbcluster

  • BASE64_PASSWORD: Contraseña codificada en base64 que se usa para el usuario administrador de postgres.

  • NUM_STANDBY_NODES: Es la cantidad de nodos en espera en tu clúster. Por ejemplo, 2

  • AUTOFAILOVER_TRIGGER_THRESHOLD (opcional): Cantidad de veces que la verificación de estado puede fallar antes de que se produzca una conmutación por error. El valor predeterminado es 3. El valor mínimo es 0, pero si se establece en 0, AlloyDB Omni usa el valor predeterminado.

    Se produce una conmutación por error automática si la verificación de estado falla AUTOFAILOVER_TRIGGER_THRESHOLD veces o si la duración acumulada de la verificación de estado alcanza los HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD segundos.

  • AUTOHEAL_TRIGGER_THRESHOLD (opcional): Cantidad de veces que puede fallar la verificación de estado antes de que comience la reparación automática. El valor predeterminado es 3. El valor mínimo es 0, pero si se establece en 0, AlloyDB Omni usa el valor predeterminado.

    Se produce una recuperación automática si la verificación de estado falla AUTOHEAL_TRIGGER_THRESHOLD veces o si la duración acumulada de la verificación de estado alcanza los HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD segundos.

  • HEALTHCHECK_PERIOD (opcional): Cantidad de segundos que se deben esperar entre cada verificación de estado. El valor predeterminado es 30. El valor mínimo es 1. El valor máximo es 86400 (un día).

  • CPU_LIMIT: Es la cantidad de CPU que se asignarán al contenedor de la base de datos. Por ejemplo, 4

  • MEMORY_LIMIT: Es la cantidad de memoria que se asignará al contenedor de la base de datos. Por ejemplo: 32Gi, 500Mi.

  • PG_DATA_DIR: Es la ruta de acceso del host al directorio en el que se almacenarán los datos de la base de datos.

  • (Opcional) MAX_CONNECTIONS: Cantidad máxima de conexiones simultáneas a la base de datos de PostgreSQL. El valor predeterminado es 50. El valor mínimo admitido también es 50. Para obtener más información, consulta la referencia de max_connections de PostgreSQL.

  • (Opcional) MAX_WAL_SIZE: Tamaño máximo para permitir que el registro de escritura por adelantado (WAL) crezca durante los puntos de control automáticos. El valor predeterminado es 1GB. Para obtener más información, consulta la referencia de max_wal_size de PostgreSQL.

  • (Opcional) MAX_WORKER_PROCESSES: Es la cantidad máxima de trabajadores que puede iniciar un solo Gather o Gather Merge. El valor predeterminado es 64. Para obtener más información, consulta la referencia de max_worker_processes de PostgreSQL.

  • (Opcional) LOG_CONNECTIONS: Determina si se registran o no las conexiones a tu servidor de PostgreSQL. El valor predeterminado es on. Para obtener más información, consulta la referencia de log_connections de PostgreSQL.

  • (Opcional) LOG_DISCONNECTS: Determina si se registran las finalizaciones de sesión de PostgreSQL. El valor predeterminado es on. Para obtener más información, consulta la referencia de log_disconnections de PostgreSQL.

  • (Opcional) LOG_HOSTNAME: Determina si el nombre de host se registra además de la IP del host de conexión. El valor predeterminado es on. Para obtener más información, consulta la referencia de log_hostname de PostgreSQL.

  • (Opcional) LOG_STATEMENT: Determina qué instrucciones de SQL se registran. El valor predeterminado es none. Para obtener más información, consulta la referencia de log_statement de PostgreSQL.

  • (Opcional) HUGE_PAGES: Determina si se solicitan páginas enormes para el área principal de memoria compartida. El valor predeterminado es off. Para obtener más información, consulta la referencia de huge_pages de PostgreSQL.

  • TCP_KEEPALIVES_IDLE (opcional): Cantidad de tiempo, en segundos, sin actividad de red antes de que el SO intente enviar un mensaje keepalive de TCP al cliente. El valor predeterminado es 10. Para obtener más información, consulta la referencia de tcp_keepalives_idle de PostgreSQL.

  • TCP_KEEPALIVES_INTERVAL (opcional): Cantidad de tiempo, en segundos, antes de que se retransmita un mensaje keepalive de TCP que el cliente no haya confirmado. El valor predeterminado es 10. Para obtener más información, consulta la referencia de tcp_keepalives_interval de PostgreSQL.

  • (Opcional) TCP_KEEPALIVES_COUNT: Cantidad de mensajes keepalive de TCP que se pueden perder antes de que se considere inactiva la conexión del servidor con el cliente. El valor predeterminado es 10. Para obtener más información, consulta la referencia de tcp_keepalives_count de PostgreSQL.

  • (Opcional) ENVIRONMENT_TYPE: Determina el entorno en el que se configura el clúster: onprem o gcp.

  • (Opcional) VIRTUAL_IP: Dirección IP virtual que usa el balanceador de cargas. Si defines dbLoadBalancerOptions, este campo es obligatorio. Para obtener más información, consulta Administra la alta disponibilidad.

  • (Opcional) VIRTUAL_IP_INTERFACE: Interfaz de red en la que se configura VIRTUAL_IP. El valor predeterminado es eth0.

Cree su clúster

Para crear tu clúster, selecciona la pestaña que coincida con tu entorno y sigue las instrucciones.

Ansible

Para crear tu clúster, completa las siguientes instrucciones:

  1. Crea un manual para las especificaciones de tu clúster de base de datos.

    - 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
    
    

    Reemplaza las siguientes variables:

    • ANSIBLE_USER: Es el usuario del SO que Ansible usa para acceder a tus nodos de AlloyDB Omni.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Es la clave privada que usa Ansible para conectarse a tus nodos de AlloyDB Omni a través de SSH.

  2. Ejecuta tu guía.

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

    Reemplaza las siguientes variables:

    • DBCLUSTER_PLAYBOOK: Ruta de acceso al playbook que creaste para tu clúster de base de datos.

    • DEPLOYMENT_SPEC: Ruta de acceso a la especificación de implementación que creaste en Instala componentes de AlloyDB Omni.

    • DBCLUSTER_SPECIFICATIONS: Ruta de acceso a las especificaciones del clúster.

alloydbctl

Para crear tu clúster, ejecuta el siguiente comando:

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

Reemplaza las siguientes variables:

  • DEPLOYMENT_SPEC: Ruta de acceso a la especificación de implementación que creaste en Instala componentes de AlloyDB Omni.

  • DBCLUSTER_SPECIFICATIONS: Ruta de acceso a las especificaciones del clúster.

Borra el clúster

Para borrar tu clúster, selecciona la pestaña que coincida con tu entorno y sigue las instrucciones.

Ansible

Para borrar el clúster con Ansible, completa los siguientes pasos:

  1. Crea un playbook llamado 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. Ejecuta la guía con ansible-playbook. Debes especificar DBCluster como resource_type y el nombre del clúster que se borrará como resource_name.

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

Si el proceso de desmantelamiento falla debido a incoherencias en el estado del clúster (por ejemplo, si no se puede acceder a un nodo), puedes intentar forzar la eliminación del clúster agregando -e force=true al comando. Esto indica al orquestador que ignore los errores durante el proceso de cierre y que intente quitar la mayor cantidad posible de recursos.

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

alloydbctl

Para borrar tu clúster con alloydbctl, ejecuta el siguiente comando:

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

Reemplaza las siguientes variables:

  • DEPLOYMENT_SPEC: Ruta de acceso a la especificación de implementación que creaste en Instala componentes de AlloyDB Omni.

  • DBCLUSTER_NAME: Es el nombre de tu clúster de base de datos. Por ejemplo, my-dbcluster