Crea un cluster

Seleziona una versione della documentazione:

Crea un cluster di database per iniziare a utilizzare AlloyDB Omni.

Limitazioni

Si applicano le seguenti limitazioni:

  • AlloyDB Omni viene eseguito sulla porta 5432. La configurazione di una porta personalizzata non è supportata.

  • Assicurati che tutte le configurazioni dei parametri del database siano corrette prima di creare il cluster. Una volta creato il cluster, non puoi modificare alcun parametro del database.

Prima di iniziare

Prima di creare il cluster, completa le seguenti operazioni:

  • Installa l'orchestratore AlloyDB Omni

  • Installa i componenti di AlloyDB Omni

  • Configurare i certificati TLS

  • Monta un volume esterno (DataDisk) su PG_DATA_DIR su tutti i nodi del database di cui è stato eseguito il provisioning all'interno dell'orchestratore.

  • Se prevedi di utilizzare alloydbctl anziché Ansible, assicurati che il pacchetto policycoreutils-python-utils richiesto sia installato su tutte le VM. Per installare questo pacchetto, esegui il seguente comando:

    sudo dnf install policycoreutils-python-utils
  • Se utilizzi l'ambiente Google Cloud , imposta ENVIRONMENT_TYPE su gcp. Dopodiché, devi autenticare il tuo account gcloud CLI eseguendo gcloud auth login come utente root. Inoltre, l'account autenticato deve disporre delle seguenti autorizzazioni:

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

Prepara le specifiche del cluster

Per creare il cluster, AlloyDB Omni deve sapere come configurarlo. Per creare le specifiche necessarie, crea un file YAML utilizzando il 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"

Sostituisci le seguenti variabili:

  • DBCLUSTER_NAME: il nome del cluster di database. Ad esempio, my-dbcluster.

  • BASE64_PASSWORD: password codificata in base64 utilizzata per l'utente amministratore postgres.

  • NUM_STANDBY_NODES: il numero di nodi di standby nel cluster. Ad esempio, 2.

  • (Facoltativo) AUTOFAILOVER_TRIGGER_THRESHOLD: numero di volte in cui il controllo di integrità può non riuscire prima che si verifichi un failover. Il valore predefinito è 3. Il valore minimo è 0, ma se il valore è impostato su 0, AlloyDB Omni utilizza il valore predefinito.

    Si verifica un failover automatico se il controllo di integrità non va a buon fine AUTOFAILOVER_TRIGGER_THRESHOLD volte o se la durata cumulativa del controllo di integrità raggiunge HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD secondi.

  • (Facoltativo) AUTOHEAL_TRIGGER_THRESHOLD: numero di volte in cui il controllo di integrità può non riuscire prima dell'inizio della riparazione automatica. Il valore predefinito è 3. Il valore minimo è 0, ma se il valore è impostato su 0, AlloyDB Omni utilizza il valore predefinito.

    Si verifica un ripristino automatico se il controllo di integrità non riesce AUTOHEAL_TRIGGER_THRESHOLD volte o se la durata cumulativa del controllo di integrità raggiunge HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD secondi.

  • (Facoltativo) HEALTHCHECK_PERIOD: il numero di secondi da attendere tra un controllo di integrità e l'altro. Il valore predefinito è 30. Il valore minimo è 1. Il valore massimo è 86400 (un giorno).

  • CPU_LIMIT: il numero di CPU da allocare al container del database. Ad esempio, 4.

  • MEMORY_LIMIT: quantità di memoria da allocare al container del database. Ad esempio, 32Gi, 500Mi.

  • PG_DATA_DIR: percorso host alla directory in cui verranno archiviati i dati del database.

  • (Facoltativo) MAX_CONNECTIONS: numero massimo di connessioni simultanee al database PostgreSQL. Il valore predefinito è 50. Il valore minimo supportato è 50. Per maggiori informazioni, consulta il riferimento max_connections di PostgreSQL.

  • (Facoltativo) MAX_WAL_SIZE: dimensione massima per consentire la crescita del Write-Ahead-Log (WAL) durante i checkpoint automatici. Il valore predefinito è 1GB. Per saperne di più, consulta il riferimento max_wal_size di PostgreSQL.

  • (Facoltativo) MAX_WORKER_PROCESSES: numero massimo di worker che possono essere avviati da un singolo Gather o Gather Merge. Il valore predefinito è 64. Per saperne di più, consulta il riferimento max_worker_processes di PostgreSQL.

  • (Facoltativo) LOG_CONNECTIONS: determina se le connessioni al server PostgreSQL vengono registrate o meno. Il valore predefinito è on. Per saperne di più, consulta il riferimento log_connections di PostgreSQL.

  • (Facoltativo) LOG_DISCONNECTS: determina se le terminazioni delle sessioni PostgreSQL vengono registrate. Il valore predefinito è on. Per saperne di più, consulta il riferimento log_disconnections di PostgreSQL.

  • (Facoltativo) LOG_HOSTNAME: determina se il nome host viene registrato oltre all'IP per l'host di connessione. Il valore predefinito è on. Per saperne di più, consulta il riferimento log_hostname di PostgreSQL.

  • (Facoltativo) LOG_STATEMENT: determina quali istruzioni SQL vengono registrate. Il valore predefinito è none. Per maggiori informazioni, consulta il riferimento log_statement di PostgreSQL.

  • (Facoltativo) HUGE_PAGES: determina se vengono richieste pagine enormi per l'area di memoria condivisa principale. Il valore predefinito è off. Per saperne di più, consulta il riferimento huge_pages di PostgreSQL.

  • (Facoltativo) TCP_KEEPALIVES_IDLE: quantità di tempo, in secondi, senza attività di rete prima che il sistema operativo tenti di inviare un messaggio TCP keepalive al client. Il valore predefinito è 10. Per saperne di più, consulta il riferimento tcp_keepalives_idle di PostgreSQL.

  • (Facoltativo) TCP_KEEPALIVES_INTERVAL: intervallo di tempo, in secondi, prima che un messaggio TCP keepalive che non è stato confermato dal client venga ritrasmesso. Il valore predefinito è 10. Per saperne di più, consulta il riferimento tcp_keepalives_interval di PostgreSQL.

  • (Facoltativo) TCP_KEEPALIVES_COUNT: numero di messaggi TCP keepalive che possono andare persi prima che la connessione del server al client venga considerata inattiva. Il valore predefinito è 10. Per saperne di più, consulta il riferimento tcp_keepalives_count di PostgreSQL.

  • (Facoltativo) ENVIRONMENT_TYPE: determina l'ambiente in cui è configurato il cluster: onprem o gcp.

  • (Facoltativo) VIRTUAL_IP: indirizzo IP virtuale utilizzato dal bilanciatore del carico. Se definisci dbLoadBalancerOptions, questo campo è obbligatorio. Per saperne di più, vedi Gestire l'alta affidabilità.

  • (Facoltativo) VIRTUAL_IP_INTERFACE: interfaccia di rete in cui è configurato VIRTUAL_IP. Il valore predefinito è eth0.

Crea il cluster

Per creare il cluster, seleziona la scheda corrispondente al tuo ambiente e segui le istruzioni.

Ansible

Per creare il cluster, completa le seguenti istruzioni:

  1. Crea un playbook per le specifiche del cluster di database.

    - 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
    
    

    Sostituisci le seguenti variabili:

    • ANSIBLE_USER: utente del sistema operativo utilizzato da Ansible per accedere ai nodi di AlloyDB Omni.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: la chiave privata utilizzata da Ansible per connettersi ai nodi AlloyDB Omni utilizzando SSH.

  2. Esegui il playbook.

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

    Sostituisci le seguenti variabili:

    • DBCLUSTER_PLAYBOOK: il percorso del playbook che hai creato per il cluster di database.

    • DEPLOYMENT_SPEC: percorso della specifica di deployment creata in Installare i componenti di AlloyDB Omni.

    • DBCLUSTER_SPECIFICATIONS: il percorso delle specifiche del cluster.

alloydbctl

Per creare il cluster, esegui questo comando:

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

Sostituisci le seguenti variabili:

Elimina il cluster

Per eliminare il cluster, seleziona la scheda corrispondente al tuo ambiente e segui le istruzioni.

Ansible

Per eliminare il cluster utilizzando Ansible, completa i seguenti passaggi:

  1. Crea un playbook denominato 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. Esegui il playbook utilizzando ansible-playbook. Devi specificare DBCluster come resource_type e il nome del cluster da eliminare come resource_name.

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

Se il processo di smantellamento non va a buon fine a causa di incoerenze nello stato del cluster (ad esempio, se un nodo non è raggiungibile), puoi tentare di forzare l'eliminazione del cluster aggiungendo -e force=true al comando. In questo modo, l'orchestratore ignora gli errori durante il processo di eliminazione e tenta di rimuovere il maggior numero possibile di risorse.

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

alloydbctl

Per eliminare il cluster utilizzando alloydbctl, esegui questo comando:

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

Sostituisci le seguenti variabili: