Crea un cluster

Select a documentation version:

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 i parametri del database.

Prima di iniziare

Prima di creare il cluster, completa i seguenti passaggi:

  • Installa l'orchestratore AlloyDB Omni

  • Installa i componenti di AlloyDB Omni

  • Configura i certificati TLS

  • Monta un volume esterno (DataDisk) su PG_DATA_DIR su tutti i nodi di database di cui è stato eseguito il provisioning nell'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' Google Cloud ambiente, 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 DBCluster formato:

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: nome del cluster di database. Ad esempio, my-dbcluster.

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

  • NUM_STANDBY_NODES: 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 riesce 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 che inizi la 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: numero di secondi da attendere tra ogni controllo di integrità. Il valore predefinito è 30. Il valore minimo è 1. Il valore massimo è 86400 (un giorno).

  • CPU_LIMIT: 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 della 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 è anche 50. Per ulteriori informazioni, consulta il riferimento max_connectionsdi 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 ulteriori informazioni, consulta il riferimento max_wal_sizedi 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 ulteriori informazioni, consulta il riferimento max_worker_processesdi PostgreSQL.

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

  • (Facoltativo) LOG_DISCONNECTS: determina se le terminazioni delle sessioni PostgreSQL vengono registrate. Il valore predefinito è on. Per ulteriori informazioni, consulta il riferimento log_disconnectionsdi PostgreSQL.

  • (Facoltativo) LOG_HOSTNAME: determina se il nome host viene registrato oltre all'IP dell'host di connessione. Il valore predefinito è on. Per ulteriori informazioni, consulta il riferimento log_hostname di PostgreSQL.

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

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

  • (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 ulteriori informazioni, consulta il riferimento tcp_keepalives_idledi PostgreSQL.

  • (Facoltativo) TCP_KEEPALIVES_INTERVAL: quantità di tempo, in secondi, prima che un messaggio TCP keepalive non riconosciuto dal client venga ritrasmesso. Il valore predefinito è 10. Per ulteriori informazioni, consulta il riferimento tcp_keepalives_intervaldi PostgreSQL.

  • (Facoltativo) TCP_KEEPALIVES_COUNT: numero di messaggi TCP keepalive che possono essere persi prima che la connessione del server al client venga considerata inattiva. Il valore predefinito è 10. Per ulteriori informazioni, consulta il riferimento tcp_keepalives_countdi 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 è obbligatorio. Per ulteriori informazioni, vedi Gestire l'alta affidabilità.

  • (Facoltativo) VIRTUAL_IP_INTERFACE: interfaccia di rete in cui VIRTUAL_IP è configurato. 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 AlloyDB Omni.

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

  2. Esegui il playbook.

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

    Sostituisci le seguenti variabili:

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

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

    • DBCLUSTER_SPECIFICATIONS: percorso delle specifiche del cluster.

alloydbctl

Per creare il cluster, esegui il seguente 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 eliminazione non riesce 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 il seguente comando:

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

Sostituisci le seguenti variabili: