Créer une instance de pool de lecture répliquée de manière asynchrone à l'aide de l'orchestrateur RPM

Sélectionnez une version de la documentation :

Pour augmenter le débit de lecture et la disponibilité de votre cluster de bases de données, vous pouvez créer une instance de pool de lecture asynchrone. Une instance de pool de lecture fournit un clone en lecture seule de votre instance de base de données, ce qui garantit l'accès aux données même si votre instance de base de données devient indisponible.

Vous pouvez définir la configuration de l'instance de pool de lecture dans le fichier manifeste de l'instance de base de données. Chaque instance de pool de lecture nécessite la création d'un fichier manifeste unique. Vous pouvez déployer plusieurs instances de pool de lecture, avec un maximum de 20 nœuds de pool de lecture au total par cluster de bases de données.

Chaque instance de pool de lecture occupe la même quantité de stockage que l'instance qu'elle réplique.

Créer une instance de pool de lecture répliquée de manière asynchrone

Pour créer une instance de pool de lecture répliquée de manière asynchrone AlloyDB Omni, procédez comme suit :

  1. Créez le fichier manifeste de l'instance de base de données pour définir le type d'instance de pool de lecture :

    DBInstance:
      metadata:
        name: READ_POOL_INSTANCE_NAME
      spec:
        instanceType: ReadPool
        nodeCount: READ_POOL_NODE_COUNT
        readPoolPort: READ_POOL_PORT
        dbcParent:
          name: DB_CLUSTER_NAME
    

    Remplacez les éléments suivants :

    • READ_POOL_INSTANCE_NAME: nom de cette ressource, par exemple read-pool-instance-1.

    • DB_CLUSTER_NAME : nom du cluster de bases de données auquel appartient l'instance.

    • READ_POOL_NODE_COUNT: (facultatif) nombre de nœuds dans une instance de pool de lecture. Cela détermine la capacité de calcul globale de l'instance. Vous pouvez avoir un maximum de 20 nœuds de pool de lecture au total par cluster de bases de données.

    • READ_POOL_PORT : (facultatif) port de l'équilibreur de charge (adresse IP virtuelle) pour acheminer le trafic de lecture vers cette instance de pool de lecture. La valeur par défaut est 5434.

  2. Appliquez la spécification DBInstance.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"

    Remplacez les variables suivantes :

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

    • DBINSTANCE_SPECIFICATION: chemin d'accès au fichier manifeste DBInstance que vous avez créé à l'étape précédente.

    Ansible

    ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \
          -e resource_spec="DBINSTANCE_SPECIFICATION"

    Remplacez les variables suivantes :

    • DBINSTANCE_PLAYBOOK: chemin d'accès au playbook que vous avez créé pour votre spécification DBInstance.

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

    • DBINSTANCE_SPECIFICATION: chemin d'accès au fichier manifeste DBInstance que vous avez créé à l'étape précédente.

Vérifier l'état de l'instance

Pour vérifier la disponibilité de l'instance de pool de lecture, obtenez l'état de la ressource DBInstance :

alloydbctl

alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yaml

Remplacez les variables suivantes :

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

  • READ_POOL_INSTANCE_NAME: nom de l'instance de pool de lecture que vous avez spécifié dans le fichier manifeste.

Ansible

Exécutez le playbook google.alloydbomni_orchestrator.status. Pour en savoir plus, consultez Obtenir l'état du cluster.

ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
      -e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"

Remplacez les variables suivantes :

  • STATUS_PLAYBOOK_PATH: chemin d'accès au playbook que vous avez créé pour obtenir l'état de votre cluster.

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

  • READ_POOL_INSTANCE_NAME: nom de l'instance de pool de lecture que vous avez spécifié dans le fichier manifeste.

Vérifiez les éléments suivants dans la section .status.conditions de la réponse :

  • Si l'état de la condition Available est true, cela indique que l'instance de pool de lecture peut répondre aux requêtes, mais qu'elle ne réplique peut-être pas les données de votre instance de base de données.
  • Si l'état de la condition Streaming est true, cela indique que l'instance de pool de lecture est connectée à votre instance de base de données et qu'elle diffuse activement les modifications.

Lorsque votre instance de base de données est inaccessible, l'instance de pool de lecture continue de répondre aux requêtes. Dans ce cas, l'état de disponibilité sera true et l'état du flux sera false.

Une fois que vous avez configuré l'instance de pool de lecture, toutes les insertions, mises à jour et suppressions de lignes dans votre instance de base de données principale deviennent lisibles sur votre instance de pool de lecture.

Se connecter à l'instance de pool de lecture

Une fois que l'instance de pool de lecture devient Available, l'équilibreur de charge configure automatiquement un frontend dédié en lecture seule qui achemine le trafic vers les nœuds du pool de lecture.

Pour afficher le point de terminaison de connexion, vérifiez status.endpoints dans la sortie d'état DBInstance. Le point de terminaison en lecture seule, par exemple VIP_IP:5434, distribue les requêtes entrantes en lecture seule sur tous les nœuds sains du pool de lecture.

Pour vous connecter à l'instance de pool de lecture, utilisez l'outil client psql avec l'adresse IP et le port du point de terminaison :

psql -h VIP_IP -p READ_POOL_PORT -U postgres

Remplacez les éléments suivants :

  • VIP_IP : adresse IP du point de terminaison en lecture seule.
  • READ_POOL_PORT : port du point de terminaison en lecture seule.

Si vous tentez d'effectuer des opérations d'écriture sur ce point de terminaison, les opérations échouent immédiatement avec une erreur indiquant que vous ne pouvez pas exécuter d'insertions dans une transaction en lecture seule.

Gérer l'instance de pool de lecture

L'orchestrateur RPM prend en charge la mise à l'échelle et la suppression dynamiques des instances de pool de lecture sans temps d'arrêt du cluster.

Mettre une instance de pool de lecture à l'échelle

Pour ajouter ou supprimer des nœuds d'un pool de lecture existant, mettez à jour le champ nodeCount dans votre fichier manifeste DBInstance.

  1. Ouvrez votre fichier manifeste DBInstance et modifiez la valeur nodeCount pour refléter le nombre de nœuds sélectionné.

  2. Appliquez le fichier manifeste mis à jour à l'aide de votre méthode de déploiement préférée, de la commande alloydbctl apply ou de votre playbook Ansible.

L'orchestrateur RPM provisionne ou supprime automatiquement les nœuds d'instances dupliquées avec accès en lecture, et l'équilibreur de charge se met à jour de manière dynamique pour acheminer le trafic vers les nœuds disponibles du pool.

Supprimer une instance de pool de lecture

Pour supprimer une instance de pool de lecture, utilisez la commande alloydbctl delete :

alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAME

Remplacez READ_POOL_INSTANCE_NAME par le nom de l'instance de pool de lecture que vous souhaitez supprimer.

Lorsque vous supprimez une instance de pool de lecture, l'orchestrateur arrête le service d'instances dupliquées avec accès en lecture et nettoie les nœuds. L'équilibreur de charge supprime automatiquement le routage sans provoquer d'interblocages de promotion ni affecter le trafic vers vos instances principales ou de secours.