Configurer la haute disponibilité

L'objectif d'une configuration de haute disponibilité est de réduire les temps d'arrêt lorsqu'une instance de cluster de base de données devient indisponible. Cela peut se produire lorsqu'une instance manque de mémoire. Avec la haute disponibilité, vos données restent disponibles pour les applications clientes.

Au sein d'un site, la configuration se compose d'une instance principale et d'une instance répliquée de secours. Toutes les écritures effectuées sur l'instance principale sont répliquées sur l'instance répliquée de secours avant qu'une transaction ne soit signalée comme validée. Si votre instance principale devient indisponible, GDC promeut automatiquement l'instance répliquée de secours pour qu'elle agisse en tant que nouvelle instance principale. Le trafic de l'application est ensuite réacheminé vers la nouvelle instance principale. Ce processus est appelé basculement.

Un basculement automatique démarre après trois échecs consécutifs de vérification de l'état'état sur l'instance principale, espacés de 30 secondes chacun.

GDC est compatible avec le basculement automatique et manuel. Le basculement automatique est activé par défaut, et vous pouvez le désactiver si nécessaire. Vous pouvez également déclencher manuellement un basculement à tout moment pour récupérer après une défaillance inattendue et minimiser les temps d'arrêt.

Le basculement implique le processus suivant, dans l'ordre :

  1. GDC met l'instance principale hors connexion.

  2. GDC transforme l'instance répliquée de secours en nouveau cluster de base de données actif.

  3. GDC supprime le cluster de bases de données actif précédent.

  4. GDC crée une instance répliquée de secours.

Mettre à jour un cluster existant

Vous pouvez modifier les paramètres de haute disponibilité d'un cluster de bases de données existant :

Console

  1. Dans le menu de navigation, sélectionnez Database Service.

  2. Dans la liste des clusters de bases de données, cliquez sur le cluster de bases de données à mettre à jour.

  3. Sélectionnez Modifier  dans la section Haute disponibilité.

    Modifiez les paramètres de haute disponibilité d'un cluster de bases de données.

  4. Sélectionnez Activer l'instance de secours dans la même zone pour activer ou désactiver la disponibilité d'une instance de secours dans la même zone que votre cluster de base de données principal.

  5. Cliquez sur Enregistrer.

  6. Vérifiez que votre cluster de bases de données reflète votre mise à jour de haute disponibilité en consultant son état dans la colonne Haute disponibilité de la liste des clusters de bases de données.

gdcloud

  1. Mettez à jour la configuration de haute disponibilité de votre cluster de bases de données :

    gdcloud database clusters update CLUSTER_NAME \
        --availability-type HA_TYPE
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster de bases de données.
    • HA_TYPE : niveau de haute disponibilité du cluster de bases de données. Vous pouvez définir zonal ou zonal_ha. La valeur zonal est définie par défaut.
  2. Vérifiez que votre cluster de bases de données reflète votre mise à jour de haute disponibilité :

    gdcloud database clusters list
    

API

  1. Mettez à jour la configuration de haute disponibilité de votre cluster de bases de données :

      kubectl patch dbcluster.postgresql.dbadmin.gdc.goog DBCLUSTER_NAME \
        -n USER_PROJECT \
        -p '{"spec": {"availability": {"enableHighAvailability": HA_ENABLED}}}' \
        --type=merge
    

    Remplacez les variables suivantes :

    • DBCLUSTER_NAME : nom du cluster de bases de données.
    • USER_PROJECT : nom du projet utilisateur dans lequel le cluster de bases de données a été créé.
    • HA_ENABLED : niveau de haute disponibilité du cluster de bases de données. Vous pouvez définir true ou false. La valeur false est définie par défaut.
  2. Vérifiez que votre cluster de bases de données reflète votre mise à jour de haute disponibilité :

    kubectl get dbcluster.DBENGINE_NAME.dbadmin.gdc.goog DBCLUSTER_NAME \
      -n USER_PROJECT \
      -o yaml
    

Migrer vers la dernière implémentation de haute disponibilité

Pour vérifier que votre cluster de base de données à haute disponibilité utilise la dernière implémentation, vérifiez si l'annotation dbcluster.dbadmin.goog/raasEnabled existe sur la ressource personnalisée de votre cluster de base de données à haute disponibilité. Cette annotation n'apparaîtra que sur les clusters utilisant la nouvelle implémentation. Si vous n'avez pas cette annotation, vous pouvez l'activer et migrer votre cluster en procédant comme suit :

  1. Vérifiez auprès de votre opérateur d'infrastructure que votre environnement GDC est mis à niveau vers la version 1.15.1 ou une version ultérieure.
  2. Désactivez la haute disponibilité sur votre cluster de base de données. Attendez que la condition HAReady disparaisse, puis réactivez la haute disponibilité.
  3. Une fois que vous voyez HAReady in progress ou HAReady setup complete, vérifiez si la CR de votre cluster de bases de données contient l'annotation dbcluster.dbadmin.goog/raasEnabled. Si elle s'affiche, cela signifie que votre cluster de bases de données a bien été migré.

Déclencher un basculement

Si vous avez configuré la haute disponibilité pour votre cluster de bases de données, vous pouvez déclencher un basculement. Pour déclencher un basculement, procédez comme suit :

Console

  1. Dans le menu de navigation, sélectionnez Database Service.

  2. Dans la liste des clusters de bases de données, cliquez sur le cluster de bases de données pour lequel vous souhaitez déclencher un basculement. La haute disponibilité doit être activée sur votre cluster de bases de données pour qu'il soit éligible au basculement.

  3. Cliquez sur Basculement.

  4. Saisissez l'ID du cluster pour la phrase de confirmation, puis cliquez sur Basculement pour déclencher le processus de basculement.

gdcloud

Déclenchez le basculement du cluster de bases de données :

gdcloud database clusters failover CLUSTER_NAME

Remplacez CLUSTER_NAME par le nom du cluster de bases de données.

API

  apiVersion: fleet.dbadmin.gdc.goog/v1
  kind: Failover
  metadata:
    name: FAILOVER_NAME
    namespace: USER_PROJECT
  spec:
    dbclusterRef: DBCLUSTER_NAME

Remplacez les variables suivantes :

  • DBCLUSTER_NAME : nom du cluster de bases de données.
  • USER_PROJECT : nom du projet utilisateur dans lequel le cluster de bases de données a été créé.
  • FAILOVER_NAME : nom unique du basculement, par exemple failover-sample.

Désactiver le basculement automatique

Le basculement automatique est activé par défaut sur les clusters de bases de données à haute disponibilité.

Pour désactiver le basculement automatique, définissez enableAutoFailover sur false dans le fichier manifeste du cluster de base de données :

spec:
  availability:
    enableAutoFailover: false

Pour mettre à jour la configuration du basculement automatique d'un cluster de bases de données existant à l'aide de l'API, exécutez la commande suivante :

kubectl patch dbcluster.postgresql.dbadmin.gdc.goog DBCLUSTER_NAME \
  -n USER_PROJECT \
  -p '{"spec": {"availability": {"enableAutoFailover": AUTO_FAILOVER_ENABLED}}}' \
  --type=merge

Remplacez les variables suivantes :

  • DBCLUSTER_NAME : nom du cluster de bases de données.
  • USER_PROJECT : nom du projet utilisateur dans lequel le cluster de bases de données a été créé.
  • AUTO_FAILOVER_ENABLED : paramètre de basculement automatique pour le cluster de bases de données. Vous pouvez définir true ou false. La valeur true est définie par défaut.