Créer un cluster

Sélectionnez une version de la documentation :

Créez un cluster de bases de données pour commencer à utiliser AlloyDB Omni.

Limites

Les limites suivantes s'appliquent :

  • AlloyDB Omni s'exécute sur le port 5432. La configuration d'un port personnalisé n'est pas acceptée.

  • Assurez-vous que toutes les configurations des paramètres de la base de données sont correctes avant de créer votre cluster. Une fois votre cluster créé, vous ne pouvez plus modifier aucun paramètre de base de données.

Avant de commencer

Avant de créer votre cluster, procédez comme suit :

  • Installer l'orchestrateur AlloyDB Omni

  • Installer les composants AlloyDB Omni

  • Configurer des certificats TLS

  • Installez un volume externe (DataDisk) sur PG_DATA_DIR sur tous les nœuds de base de données provisionnés dans l'orchestrateur.

  • Si vous prévoyez d'utiliser alloydbctl au lieu d'Ansible, assurez-vous que le package policycoreutils-python-utils requis est installé sur toutes vos VM. Pour installer ce package, exécutez la commande suivante :

    sudo dnf install policycoreutils-python-utils
  • Si vous utilisez l'environnement Google Cloud , définissez ENVIRONMENT_TYPE sur gcp. Vous devez ensuite authentifier votre compte gcloud CLI en exécutant gcloud auth login en tant qu'utilisateur root. De plus, le compte authentifié doit disposer des autorisations suivantes :

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

Préparer les spécifications du cluster

Pour créer votre cluster, AlloyDB Omni doit savoir comment le configurer. Pour créer les spécifications nécessaires, créez un fichier YAML au format 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"

Remplacez les variables suivantes :

  • DBCLUSTER_NAME : nom de votre cluster de bases de données. Exemple :my-dbcluster

  • BASE64_PASSWORD : mot de passe encodé en base64 utilisé pour l'utilisateur administrateur postgres.

  • NUM_STANDBY_NODES : nombre de nœuds de secours dans votre cluster. Exemple :2

  • (Facultatif) AUTOFAILOVER_TRIGGER_THRESHOLD : nombre de fois où la vérification de l'état peut échouer avant qu'un basculement ne se produise. La valeur par défaut est 3. La valeur minimale est 0, mais si la valeur est définie sur 0, AlloyDB Omni utilise la valeur par défaut.

    Un basculement automatique se produit si la vérification de l'état échoue AUTOFAILOVER_TRIGGER_THRESHOLD fois ou si la durée cumulée de la vérification de l'état;état atteint HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD secondes.

  • (Facultatif) AUTOHEAL_TRIGGER_THRESHOLD : nombre de fois où la vérification de l'état peut échouer avant le début de l'autoréparation. La valeur par défaut est 3. La valeur minimale est 0, mais si la valeur est définie sur 0, AlloyDB Omni utilise la valeur par défaut.

    Une récupération automatique se produit si la vérification de l'état échoue AUTOHEAL_TRIGGER_THRESHOLD fois ou si la durée cumulée de la vérification de l'état;état atteint HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD secondes.

  • (Facultatif) HEALTHCHECK_PERIOD : nombre de secondes à attendre entre chaque vérification de l'état#39;état. La valeur par défaut est 30. La valeur minimale est 1. La valeur maximale est de 86400 (un jour).

  • CPU_LIMIT : nombre de processeurs à allouer au conteneur de base de données. Exemple :4

  • MEMORY_LIMIT : quantité de mémoire à allouer au conteneur de base de données. Par exemple, 32Gi et 500Mi.

  • PG_DATA_DIR : chemin d'accès hôte au répertoire dans lequel les données de la base de données seront stockées.

  • (Facultatif) MAX_CONNECTIONS : nombre maximal de connexions simultanées à la base de données PostgreSQL. La valeur par défaut est 50. La valeur minimale acceptée est également 50. Pour en savoir plus, consultez la référence max_connections de PostgreSQL.

  • (Facultatif) MAX_WAL_SIZE : taille maximale pour permettre au journal WAL (Write-Ahead-Log) de s'étendre lors des points de contrôle automatiques. La valeur par défaut est 1GB. Pour en savoir plus, consultez la référence max_wal_size de PostgreSQL.

  • (Facultatif) MAX_WORKER_PROCESSES : nombre maximal de nœuds de calcul pouvant être lancés par un seul Gather ou Gather Merge. La valeur par défaut est 64. Pour en savoir plus, consultez la référence max_worker_processes de PostgreSQL.

  • (Facultatif) LOG_CONNECTIONS : détermine si les connexions à votre serveur PostgreSQL sont enregistrées ou non. La valeur par défaut est on. Pour en savoir plus, consultez la référence log_connections de PostgreSQL.

  • (Facultatif) LOG_DISCONNECTS : détermine si les terminaisons de session PostgreSQL sont consignées. La valeur par défaut est on. Pour en savoir plus, consultez la référence log_disconnections de PostgreSQL.

  • (Facultatif) LOG_HOSTNAME : détermine si le nom d'hôte est consigné en plus de l'adresse IP de l'hôte de connexion. La valeur par défaut est on. Pour en savoir plus, consultez la référence log_hostname de PostgreSQL.

  • (Facultatif) LOG_STATEMENT : détermine les instructions SQL qui sont consignées. La valeur par défaut est none. Pour en savoir plus, consultez la référence log_statement de PostgreSQL.

  • (Facultatif) HUGE_PAGES : détermine si des pages volumineuses sont demandées pour la zone de mémoire partagée principale. La valeur par défaut est off. Pour en savoir plus, consultez la référence huge_pages de PostgreSQL.

  • (Facultatif) TCP_KEEPALIVES_IDLE : durée, en secondes, sans activité réseau avant que l'OS tente d'envoyer un message TCP keepalive au client. La valeur par défaut est 10. Pour en savoir plus, consultez la référence tcp_keepalives_idle de PostgreSQL.

  • (Facultatif) TCP_KEEPALIVES_INTERVAL : durée (en secondes) avant la retransmission d'un message keepalive TCP qui n'a pas été acquitté par le client. La valeur par défaut est 10. Pour en savoir plus, consultez la référence tcp_keepalives_interval de PostgreSQL.

  • (Facultatif) TCP_KEEPALIVES_COUNT : nombre de messages TCP keepalive pouvant être perdus avant que la connexion du serveur au client ne soit considérée comme inactive. La valeur par défaut est 10. Pour en savoir plus, consultez la référence tcp_keepalives_count de PostgreSQL.

  • (Facultatif) ENVIRONMENT_TYPE : détermine l'environnement dans lequel le cluster est configuré (onprem ou gcp).

  • (Facultatif) VIRTUAL_IP : adresse IP virtuelle utilisée par l'équilibreur de charge. Obligatoire si vous définissez dbLoadBalancerOptions. Pour en savoir plus, consultez Gérer la haute disponibilité.

  • (Facultatif) VIRTUAL_IP_INTERFACE : interface réseau où VIRTUAL_IP est configuré. La valeur par défaut est eth0.

Créer votre cluster

Pour créer votre cluster, sélectionnez l'onglet correspondant à votre environnement et suivez les instructions.

Ansible

Pour créer votre cluster, suivez les instructions ci-dessous :

  1. Créez un playbook pour les spécifications de votre cluster de bases de données.

    - 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
    
    

    Remplacez les variables suivantes :

    • ANSIBLE_USER : utilisateur de l'OS qu'Ansible utilise pour se connecter à vos nœuds AlloyDB Omni.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE : clé privée utilisée par Ansible pour se connecter à vos nœuds AlloyDB Omni à l'aide de SSH.

  2. Exécutez votre playbook.

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

    Remplacez les variables suivantes :

    • DBCLUSTER_PLAYBOOK : chemin d'accès au playbook que vous avez créé pour votre cluster de bases de données.

    • DEPLOYMENT_SPEC : chemin d'accès à la spécification de déploiement que vous avez créée dans Installer les composants AlloyDB Omni.

    • DBCLUSTER_SPECIFICATIONS : chemin d'accès aux spécifications de votre cluster.

alloydbctl

Pour créer votre cluster, exécutez la commande suivante.

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

Remplacez les variables suivantes :

  • DEPLOYMENT_SPEC : chemin d'accès à la spécification de déploiement que vous avez créée dans Installer les composants AlloyDB Omni.

  • DBCLUSTER_SPECIFICATIONS : chemin d'accès aux spécifications de votre cluster.

Supprimer votre cluster

Pour supprimer votre cluster, sélectionnez l'onglet correspondant à votre environnement et suivez les instructions.

Ansible

Pour supprimer votre cluster à l'aide d'Ansible, procédez comme suit :

  1. Créez un playbook nommé 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. Exécutez le playbook à l'aide de ansible-playbook. Vous devez spécifier DBCluster comme resource_type et le nom du cluster à supprimer comme resource_name.

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

Si le processus de suppression échoue en raison d'incohérences dans l'état du cluster (par exemple, si un nœud est inaccessible), vous pouvez essayer de forcer la suppression de votre cluster en ajoutant -e force=true à la commande. Cela indique à l'orchestrateur d'ignorer les erreurs lors du processus de suppression et de tenter de supprimer le plus de ressources possible.

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

alloydbctl

Pour supprimer votre cluster à l'aide de alloydbctl, exécutez la commande suivante :

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

Remplacez les variables suivantes :

  • DEPLOYMENT_SPEC : chemin d'accès à la spécification de déploiement que vous avez créée dans Installer les composants AlloyDB Omni.

  • DBCLUSTER_NAME : nom de votre cluster de bases de données. Exemple :my-dbcluster