Utiliser la réplication interrégionale

Cette page explique comment utiliser la réplication interrégionale AlloyDB pour PostgreSQL en créant et en utilisant des clusters secondaires.

Pour obtenir une présentation conceptuelle de la réplication interrégionale, consultez À propos de la réplication interrégionale.

Avant de commencer

  • Le projet Google Cloud que vous utilisez doit avoir été activé pour accéder à AlloyDB.
  • Vous devez disposer de l'un des rôles IAM suivants dans le projet Google Cloud que vous utilisez :
    • roles/alloydb.admin (rôle IAM prédéfini "Administrateur AlloyDB")
    • roles/owner (rôle IAM de base "Propriétaire")
    • roles/editor (rôle IAM de base Éditeur)

    Si vous ne disposez d'aucun de ces rôles, contactez l'administrateur de votre organisation pour demander l'accès.

Créer un cluster secondaire

Lorsque vous créez un cluster secondaire, AlloyDB copie et applique une partie de la configuration du cluster principal au cluster secondaire, y compris la récupération à un moment précis (PITR) et la configuration de sauvegarde. AlloyDB n'ajoute aucune instance de pool de lecture au cluster secondaire après sa création, quel que soit le nombre d'instances de pool de lecture existant dans le cluster principal.

Si vous mettez à jour la configuration du cluster principal après avoir créé le cluster secondaire, les modifications ne sont pas disponibles sur le cluster secondaire. Toutefois, vous pouvez mettre à jour manuellement le cluster secondaire pour qu'il dispose de la dernière configuration disponible dans le cluster principal.

Vous pouvez créer jusqu'à cinq clusters secondaires pour un cluster principal. Tous les clusters secondaires sont répliqués à partir d'une seule instance principale. Si vous promouvez un cluster secondaire, il devient un cluster principal indépendant.

Le schéma suivant montre comment promouvoir le cluster secondaire appelé cluster-2 dans us-east4 :

Exemple de promotion d'un cluster secondaire.

Figure 1 : Exemple de promotion d'un cluster secondaire.

Pour créer un cluster secondaire et une instance secondaire AlloyDB, procédez comme suit :

Par défaut, AlloyDB crée des instances secondaires avec la même configuration de machine que l'instance principale au moment de la création. Toutefois, si vous augmentez la taille de l'instance principale après avoir créé l'instance secondaire, AlloyDB n'augmente pas automatiquement la taille de l'instance secondaire. Vous devez le faire manuellement.

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur un cluster dans la colonne Nom de la ressource.

  3. Sur la page Vue d'ensemble, cliquez sur Créer un cluster secondaire.

  4. Configurez votre cluster secondaire :

    1. Dans le champ ID du cluster, saisissez un ID de ressource pour votre cluster secondaire.
    2. Sélectionnez pour votre cluster secondaire une région différente de celle du cluster principal.
    3. Sélectionnez la clé de chiffrement par défaut gérée par Google ou une clé gérée par le client (CMEK) comme méthode de chiffrement pour chiffrer votre cluster secondaire.

    Si vous souhaitez chiffrer ce cluster à l'aide d'une clé CMEK, procédez comme suit :

    1. Cliquez sur Options de chiffrement avancées.
    2. Sélectionnez Clé de chiffrement gérée par le client (CMEK).
    3. Sélectionnez une clé gérée par le client dans le menu qui s'affiche.

      La console Google Cloud limite cette liste aux clés du même projetGoogle Cloud et de la même région que le nouveau cluster.

      Pour utiliser une clé qui ne figure pas dans cette liste, procédez comme suit :

      1. Cliquez sur Vous ne voyez pas votre clé ? Saisissez un nom de ressource de clé.
      2. Saisissez le nom de la ressource dans le champ Nom de ressource de la clé.
      3. Cliquez sur Enregistrer.
      4. Cliquez sur Continuer.

    L'utilisation d'une clé CMEK avec AlloyDB nécessite une configuration supplémentaire. Pour en savoir plus, consultez Utiliser des clés CMEK.

    Si l'instance principale associée est chiffrée avec une clé CMEK, vous devez également chiffrer son cluster secondaire avec une clé CMEK.

  5. Configurez votre instance secondaire. Dans le champ ID d'instance, saisissez un ID de ressource pour votre instance secondaire. L'ID de ressource doit être unique dans un cluster.

  6. Cliquez sur Créer un cluster.

gcloud

Pour utiliser la gcloud CLI, vous pouvez installer et initialiser la Google Cloud CLI, ou utiliser Cloud Shell.

Exécutez la commande gcloud alloydb clusters create-secondary.

 gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/ PRIMARY_CLUSTER_ID
 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID

Remplacez les éléments suivants :

  • SECONDARY_CLUSTER_ID : ID du cluster secondaire que vous souhaitez créer.
  • SECONDARY_INSTANCE_ID : ID de l'instance secondaire que vous souhaitez créer.
  • REGION_ID : ID de la région du cluster secondaire (par exemple, us-central1).
  • PROJECT_ID : ID du projet du cluster secondaire.
  • LOCATION_ID : emplacement de votre cluster principal (par exemple, us-central1).
  • PRIMARY_CLUSTER_ID : ID du cluster principal auquel le cluster secondaire est associé.
  • SECONDARY_CLUSTER_ID : ID du cluster secondaire auquel l'instance secondaire est associée.
  • ALLOWED_PSC_PROJECTS (facultatif) : liste d'ID ou de numéros de projet séparés par une virgule auxquels vous souhaitez autoriser l'accès à l'instance (par exemple, my-project-1, 12345,my-project-n). Si votre cluster utilise Private Service Connect comme méthode de connexion à l'instance, vous devez définir une liste de projets ou de numéros autorisés.
  • --no-enable-automated-backup(Facultatif) Désactivez la création de sauvegardes automatiques sur le cluster secondaire.

Pour créer une instance secondaire compatible avec Private Service Connect, ajoutez l'indicateur allowed-psc-projects afin de définir une liste d'ID ou de numéros de projet séparés par une virgule auxquels vous souhaitez autoriser l'accès à l'instance (par exemple, my-project-1, 12345 et my-project-n).

 gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/ PRIMARY_CLUSTER_ID \
 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --allowed-psc-projects=ALLOWED_PSC_PROJECTS

Remplacez les éléments suivants :

  • ALLOWED_PSC_PROJECTS (facultatif) : liste d'ID ou de numéros de projet séparés par une virgule auxquels vous souhaitez autoriser l'accès à l'instance (par exemple, my-project-1, 12345 et my-project-n). Si votre cluster utilise Private Service Connect comme méthode de connexion à l'instance, vous devez définir une liste de projets ou de numéros autorisés.

Pour créer une instance secondaire pour un cluster compatible avec les adresses IP publiques, ajoutez le paramètre --assign-inbound-public-ip=ASSIGN_IPV4.

 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
  --assign-inbound-public-ip=ASSIGN_IPV4

Vous pouvez également transmettre la liste des blocs CIDR séparés par une virgule, comme 64.233.160.0/16, au paramètre --authorized-external-networks pour définir les réseaux externes autorisés sur votre instance.

Afficher un cluster secondaire

Pour afficher des informations détaillées sur un cluster secondaire AlloyDB, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur un cluster secondaire dans la colonne Nom de la ressource.

  3. Sur la page Vue d'ensemble, consultez tous les détails concernant votre cluster secondaire.

Mettre à jour une instance secondaire

Vous pouvez mettre à jour une instance secondaire pour ajouter, modifier ou supprimer des indicateurs de base de données. Vous pouvez également faire évoluer le type de machine de votre instance secondaire.

Configurer des options de base de données sur une instance secondaire

Pour ajouter, modifier ou supprimer des indicateurs de base de données, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Dans la colonne Nom de ressource, cliquez sur un cluster secondaire que vous souhaitez modifier.

  3. Sur la page Présentation, accédez à Instances dans votre cluster, sélectionnez l'instance secondaire, puis cliquez sur Modifier l'instance secondaire.

  4. Ajoutez, modifiez ou supprimez un indicateur de base de données de votre instance :

    Ajouter une option

    1. Pour ajouter un indicateur de base de données à votre instance, cliquez sur Ajouter un indicateur.
    2. Sélectionnez un indicateur dans la liste Nouvel indicateur de base de données.
    3. Indiquez une valeur pour l'option.
    4. Cliquez sur OK.

    Modifier un flag

    1. Pour modifier un indicateur de base de données présent dans votre instance, développez l'indicateur de base de données et modifiez la valeur de l'indicateur existant dans la section Modifier l'indicateur de base de données.
    2. Cliquez sur OK.

    Supprimer un indicateur

    1. Pour supprimer un indicateur de base de données de votre instance, sélectionnez un indicateur, puis cliquez sur l'icône Supprimer.
    2. Cliquez sur OK.
  5. Cliquez sur Mettre à jour la carte secondaire.

gcloud

Exécutez la commande gcloud alloydb instances update pour modifier les options de base de données d'une instance secondaire.

 gcloud alloydb instances update SECONDARY_INSTANCE_ID \
  --database-flags FLAGS_LIST \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID

Remplacez les éléments suivants :

  • SECONDARY_INSTANCE_ID : ID de l'instance secondaire.
  • FLAGS_LIST : liste d'une ou de plusieurs spécifications d'indicateurs de base de données, séparées par une virgule. Chaque spécification se compose du nom du flag, d'un signe égal (=) et de la valeur à attribuer aux flags. Pour les indicateurs de base de données qui n'acceptent pas de valeurs, indiquez le nom de l'indicateur suivi d'un signe égal (=).
  • REGION_ID : région où se trouve l'instance secondaire (par exemple, us-central1).
  • CLUSTER_ID : ID du cluster dans lequel l'instance secondaire est placée.
  • PROJECT_ID : ID du projet dans lequel le cluster secondaire est placé.

Adapter le type de machine de votre instance secondaire

Pour mettre à l'échelle le type de machine de votre instance secondaire, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Dans la colonne Nom de ressource, cliquez sur un cluster secondaire que vous souhaitez modifier.

  3. Sur la page Présentation, accédez à la section Instances dans votre cluster, puis cliquez sur Modifier l'instance secondaire.

    Notez que cette action n'est pas disponible si la page indique que l'état du cluster est Maintenance. L'action redevient disponible une fois que l'état Statut passe à Prêt.

  4. Sélectionnez un type de machine.

  5. Cliquez sur Mettre à jour la carte secondaire.

gcloud

Utilisez la commande gcloud alloydb instances update pour modifier le type de machine de l'instance secondaire.

 gcloud alloydb instances update SECONDARY_INSTANCE_ID \
  --cpu-count=CPU_COUNT \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID

Remplacez les éléments suivants :

  • SECONDARY_INSTANCE_ID : ID de l'instance secondaire que vous mettez à jour.
  • CPU_COUNT : nombre de processeurs virtuels souhaité pour l'instance. Les valeurs valides sont les suivantes :

    • 2 (2 vCPU, 16 Go de RAM)
    • 4 (4 vCPU, 32 Go de RAM)
    • 8 (8 vCPU, 64 Go de RAM)
    • 16 (16 vCPU, 128 Go de RAM)
    • 32 (32 vCPU, 256 Go de RAM)
    • 64 (64 vCPU, 512 Go de RAM)
  • REGION_ID : région dans laquelle l'instance est placée.

  • CLUSTER_ID : ID du cluster dans lequel l'instance est placée.

  • PROJECT_ID : ID du projet dans lequel le cluster est placé.

Si la commande renvoie un message d'erreur incluant l'expression invalid cluster state MAINTENANCE, cela signifie que le cluster fait l'objet d'une maintenance de routine. Cela empêche temporairement la reconfiguration de l'instance. Exécutez à nouveau la commande une fois que le cluster est revenu à l'état READY.

Pour vérifier l'état du cluster, consultez Afficher les détails du cluster.

Ajouter des instances de pool de lecture à un cluster secondaire

Pour ajouter une instance de pool de lecture à un cluster secondaire, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Dans la colonne Nom de ressource, cliquez sur un cluster secondaire auquel vous souhaitez ajouter une instance de pool de lecture.

  3. Sur la page Présentation, accédez à la section Instances dans votre cluster, puis cliquez sur Ajouter un pool de lecture.

  4. Configurez votre instance de pool de lecture :

    1. Dans le champ ID de l'instance de pool de lecture, saisissez un ID pour l'instance de pool de lecture.
    2. Dans le champ Nombre de nœuds, saisissez le nombre de nœuds. Le nombre de nœuds dans une instance de pool de lecture détermine la capacité de calcul globale de l'instance. Un cluster ne peut pas comporter plus de 20 nœuds dans toutes les instances de pool de lecture.
    3. Sélectionnez un type de machine.
    4. Facultatif : Définissez des options personnalisées pour votre instance. Pour chaque indicateur, procédez comme suit :

      1. Cliquez sur Ajouter un flag.
      2. Sélectionnez un indicateur dans la liste Nouvel indicateur de base de données.
      3. Indiquez une valeur pour l'option.
      4. Cliquez sur OK.
  5. Cliquez sur Ajouter un pool de lecture.

Reprise après sinistre avancée

Pour les scénarios de reprise après sinistre avancés, AlloyDB est compatible avec le basculement et le basculement interrégional :

Effectuer une commutation

La commutation vous permet d'inverser les rôles de vos clusters principal et secondaire sans perte de données. Utilisez cette opération pour les migrations planifiées, la maintenance de routine ou les exercices de reprise après sinistre. Une fois la commutation terminée, la direction de la réplication est inversée.

Si vous effectuez une commutation lorsque vous avez plusieurs clusters secondaires, les modifications suivantes se produisent :

  • Le cluster secondaire qui reçoit la commande de basculement devient un cluster principal.
  • L'ancien cluster principal devient un cluster secondaire, qui réplique les données à partir du nouveau cluster principal.
  • Tous les autres clusters secondaires passent à la réplication à partir du nouveau cluster principal.

Le diagramme suivant illustre un basculement de cluster-1 dans us-central1 vers cluster-2 dans us-east4 :

Exemple de basculement vers l'un des deux clusters secondaires.

Figure 2. Exemple de basculement vers l'un des deux clusters secondaires.

Avant d'effectuer un basculement, vérifiez que toutes les régions auxquelles appartiennent les instances principale et secondaire sont en ligne et que les instances sont en bon état. Pour en savoir plus, consultez Surveiller une instance à l'aide du tableau de bord des insights système AlloyDB.

Pour effectuer un basculement, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Dans la colonne Nom de la ressource, cliquez sur un cluster secondaire que vous souhaitez basculer en tant que cluster principal.

  3. Sur la page Vue d'ensemble, cliquez sur Commutation.

  4. Dans la boîte de dialogue qui s'affiche, saisissez l'ID de votre cluster secondaire pour confirmer que vous souhaitez basculer le cluster.

  5. Cliquez sur Commutation.

Une fois le cluster basculé, Type : cluster secondaire sur la page Présentation est remplacé par
Type de cluster : cluster principal et Type de cluster : cluster secondaire.

gcloud

Exécutez la commande gcloud alloydb clusters switchover :

 gcloud alloydb clusters switchover SECONDARY_CLUSTER_ID \
   --region=REGION_ID \
   --project=PROJECT_ID \

Remplacez les éléments suivants :

  • SECONDARY_CLUSTER_ID : ID du cluster secondaire vers lequel vous souhaitez basculer.
  • REGION_ID : ID de la région du cluster secondaire, par exemple us-central1.
  • PROJECT_ID : ID du projet du cluster secondaire.

Facultatif : Vérifier l'état de la réplication

Pour vous assurer que la permutation se termine rapidement et sans perte de données, vérifiez que le cluster secondaire a appliqué toutes les transactions reçues du cluster principal :

  1. Arrêtez toutes les opérations en écriture sur le cluster principal.
  2. Vérifiez l'état de la réplication du cluster secondaire en procédant comme suit :

    1. Dans la console Google Cloud , accédez à la page Clusters.

      accéder aux clusters

    2. Dans la liste des clusters, cliquez sur le nom du cluster secondaire vers lequel vous souhaitez basculer.

    3. Sur la page d'informations du cluster, cliquez sur Surveillance.

    4. Dans la liste Monitoring, sélectionnez l'instance secondaire. Il apparaît dans la liste sous la forme Secondaire : INSTANCE_NAME.

    5. Dans la liste des métriques, recherchez le graphique Délai de réplication depuis l'instance principale.

    6. Vérifiez que le graphique présente un décalage minimal.

      Une valeur de décalage de 0 est optimale. Si le décalage est supérieur à 0, l'opération de bascule peut prendre plus de temps, car elle doit appliquer les transactions restantes.

    7. Dans la liste des métriques, recherchez le graphique État de la réplication.

    8. Vérifiez que tous les nœuds représentés dans le graphique ont une valeur de streaming.

Promouvoir un cluster secondaire

La promotion d'un cluster secondaire le convertit en cluster principal autonome avec accès complet en lecture et en écriture. Utilisez cette opération principalement pour la reprise après sinistre lorsque la région hébergeant votre cluster principal devient indisponible.

Par défaut, la promotion transforme le cluster secondaire en cluster principal autonome. Toutefois, vous pouvez éventuellement activer le basculement interrégional (Aperçu) pour automatiser la recréation de l'instance principale d'origine. Le basculement interrégional n'est compatible qu'avec les topologies comportant un seul cluster principal et un seul cluster secondaire.

Pour promouvoir un cluster secondaire en cluster principal ou ajouter éventuellement une orchestration de basculement, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Dans la colonne Nom de la ressource, cliquez sur un cluster secondaire que vous souhaitez promouvoir en tant que cluster principal.

  3. Sur la page Vue d'ensemble, cliquez sur Promouvoir le cluster.

  4. Dans la boîte de dialogue qui s'affiche, saisissez l'ID de votre cluster secondaire pour confirmer que vous souhaitez le promouvoir.

  5. Cliquez sur Promouvoir.

    Une fois le cluster promu, le champ Type: Secondary cluster (highly available) (Type : cluster secondaire (disponibilité élevée)) de la page Overview (Présentation) est remplacé par Type: Highly available with read pools (Type : disponibilité élevée avec pools de lecture).

gcloud

Pour promouvoir un cluster secondaire en cluster principal autonome, utilisez la commande gcloud alloydb clusters promote :

 gcloud alloydb clusters promote SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --project=PROJECT_ID

Pour effectuer une promotion avec orchestration du basculement (aperçu), ajoutez l'indicateur facultatif --failover. Cela recrée automatiquement le cluster principal d'origine en tant que cluster secondaire et met à jour les points de terminaison associés pour acheminer le trafic vers le nouveau cluster principal.

 gcloud alloydb alpha clusters promote SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --project=PROJECT_ID \
 --failover

Remplacez les éléments suivants :

  • SECONDARY_CLUSTER_ID : ID du cluster secondaire que vous souhaitez promouvoir.
  • REGION_ID : ID de la région du cluster secondaire (par exemple,us-central1).
  • PROJECT_ID : ID du projet du cluster secondaire.

Utiliser des points de terminaison d'écriture pour éviter le split-brain

Pour simplifier davantage votre workflow de reprise après sinistre lors d'un basculement interrégional, nous vous recommandons de gérer les connexions à la base de données avec des points de terminaison d'écriture pour vous connecter à votre cluster.

Lorsque vous effectuez un basculement interrégional, AlloyDB met automatiquement à jour l'enregistrement DNS de votre point de terminaison d'écriture pour qu'il pointe vers le nouveau cluster principal. Cela permet de s'assurer que le nouveau trafic d'écriture est redirigé de l'instance principale d'origine vers la nouvelle.

Avant d'utiliser des points de terminaison d'écriture lors d'un basculement interrégional, tenez compte des points suivants :

  • Mise à jour immédiate du DNS : l'enregistrement DNS du point de terminaison d'écriture est mis à jour immédiatement après la promotion.
  • Mise à jour différée des métadonnées : les métadonnées du point de terminaison d'écriture peuvent toujours afficher l'adresse de l'instance principale d'origine jusqu'à ce que la région du cluster principal d'origine soit rétablie.

Récupération des données lors d'un basculement interrégional

Lorsque vous effectuez un basculement interrégional, AlloyDB crée automatiquement une sauvegarde du cluster principal d'origine avant de le recréer en tant que cluster secondaire. Un scénario de split-brain se produit lorsque le cluster principal d'origine et le nouveau cluster principal acceptent les écritures simultanément. Pour éviter de tels scénarios, les écritures sur le primaire d'origine sont arrêtées avant la création de cette sauvegarde. Utilisez cette sauvegarde pour récupérer les transactions qui n'ont pas été répliquées dans le cluster secondaire en raison du décalage lors du basculement.

Cette sauvegarde est créée automatiquement dans le cadre de l'orchestration du basculement. Elle est distincte de vos sauvegardes automatiques régulières et de vos sauvegardes à la demande. Vous pouvez l'utiliser pour créer un cluster temporaire et réconcilier manuellement les données manquantes.

Cette sauvegarde capture les écritures que l'instance principale d'origine a acceptées avant de s'arrêter, mais elle ne fusionne pas automatiquement les écritures dans le nouveau cluster principal.

Étapes suivantes