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:
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
alloydbctlen lugar de Ansible, asegúrate de que el paquetepolicycoreutils-python-utilsrequerido esté instalado en todas tus VMs. Para instalar este paquete, ejecuta el siguiente comando:sudo dnf install policycoreutils-python-utilsSi usas el entorno de Google Cloud , configura
ENVIRONMENT_TYPEcomogcp. Luego, debes autenticar tu cuenta de gcloud CLI ejecutandogcloud auth logincomo el usuarioroot. Además, la cuenta autenticada debe tener los siguientes permisos:compute.instances.getcompute.instances.listcompute.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-dbclusterBASE64_PASSWORD: Contraseña codificada en base64 que se usa para el usuario administrador depostgres.NUM_STANDBY_NODES: Es la cantidad de nodos en espera en tu clúster. Por ejemplo,2AUTOFAILOVER_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 es3. El valor mínimo es0, pero si se establece en0, AlloyDB Omni usa el valor predeterminado.Se produce una conmutación por error automática si la verificación de estado falla
AUTOFAILOVER_TRIGGER_THRESHOLDveces o si la duración acumulada de la verificación de estado alcanza losHEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLDsegundos.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 es3. El valor mínimo es0, pero si se establece en0, AlloyDB Omni usa el valor predeterminado.Se produce una recuperación automática si la verificación de estado falla
AUTOHEAL_TRIGGER_THRESHOLDveces o si la duración acumulada de la verificación de estado alcanza losHEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLDsegundos.HEALTHCHECK_PERIOD(opcional): Cantidad de segundos que se deben esperar entre cada verificación de estado. El valor predeterminado es30. El valor mínimo es1. El valor máximo es86400(un día).CPU_LIMIT: Es la cantidad de CPU que se asignarán al contenedor de la base de datos. Por ejemplo,4MEMORY_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 es50. El valor mínimo admitido también es50. Para obtener más información, consulta la referencia demax_connectionsde 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 es1GB. Para obtener más información, consulta la referencia demax_wal_sizede PostgreSQL.(Opcional)
MAX_WORKER_PROCESSES: Es la cantidad máxima de trabajadores que puede iniciar un soloGatheroGather Merge. El valor predeterminado es64. Para obtener más información, consulta la referencia demax_worker_processesde PostgreSQL.(Opcional)
LOG_CONNECTIONS: Determina si se registran o no las conexiones a tu servidor de PostgreSQL. El valor predeterminado eson. Para obtener más información, consulta la referencia delog_connectionsde PostgreSQL.(Opcional)
LOG_DISCONNECTS: Determina si se registran las finalizaciones de sesión de PostgreSQL. El valor predeterminado eson. Para obtener más información, consulta la referencia delog_disconnectionsde 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 eson. Para obtener más información, consulta la referencia delog_hostnamede PostgreSQL.(Opcional)
LOG_STATEMENT: Determina qué instrucciones de SQL se registran. El valor predeterminado esnone. Para obtener más información, consulta la referencia delog_statementde PostgreSQL.(Opcional)
HUGE_PAGES: Determina si se solicitan páginas enormes para el área principal de memoria compartida. El valor predeterminado esoff. Para obtener más información, consulta la referencia dehuge_pagesde PostgreSQL.TCP_KEEPALIVES_IDLE(opcional): Cantidad de tiempo, en segundos, sin actividad de red antes de que el SO intente enviar un mensajekeepalivede TCP al cliente. El valor predeterminado es10. Para obtener más información, consulta la referencia detcp_keepalives_idlede PostgreSQL.TCP_KEEPALIVES_INTERVAL(opcional): Cantidad de tiempo, en segundos, antes de que se retransmita un mensajekeepalivede TCP que el cliente no haya confirmado. El valor predeterminado es10. Para obtener más información, consulta la referencia detcp_keepalives_intervalde PostgreSQL.(Opcional)
TCP_KEEPALIVES_COUNT: Cantidad de mensajeskeepalivede TCP que se pueden perder antes de que se considere inactiva la conexión del servidor con el cliente. El valor predeterminado es10. Para obtener más información, consulta la referencia detcp_keepalives_countde PostgreSQL.(Opcional)
ENVIRONMENT_TYPE: Determina el entorno en el que se configura el clúster:onpremogcp.(Opcional)
VIRTUAL_IP: Dirección IP virtual que usa el balanceador de cargas. Si definesdbLoadBalancerOptions, 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 configuraVIRTUAL_IP. El valor predeterminado eseth0.
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:
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.bootstrapReemplaza 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.
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:
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.deleteEjecuta la guía con
ansible-playbook. Debes especificarDBClustercomoresource_typey el nombre del clúster que se borrará comoresource_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