Configurer la haute disponibilité

L'objectif d'une configuration à haute disponibilité est de réduire les temps d'arrêt lorsqu'une instance de cluster de bases 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'un réplica de secours. Toutes les écritures effectuées sur l'instance principale sont répliquées sur la réplique 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 serve de nouvelle instance principale. Le trafic des applications est ensuite réacheminé vers la nouvelle instance principale. Ce processus est appelé basculement.

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

GDC est compatible avec les basculements automatiques et manuels. Le basculement automatique est activé par défaut. Vous pouvez le désactiver si nécessaire. Vous pouvez également déclencher manuellement un basculement à tout moment pour vous remettre d'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 le réplica de secours en nouveau cluster de base de données actif.

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

  4. GDC crée une réplique 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 Service de base de données.

  2. Dans la liste des clusters de bases de données, cliquez sur celui que vous souhaitez mettre à jour.

  3. Sélectionnez Modifier 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 le standby 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 bases 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 la 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 la 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 le CR de votre cluster de base de données à haute disponibilité. Cette annotation n'apparaît que sur les clusters utilisant la nouvelle implémentation. Si vous ne disposez pas de 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 ultérieure.
  2. Désactivez la haute disponibilité sur votre cluster de bases de données. Attendez que la condition HAReady disparaisse, puis réactivez la haute disponibilité.
  3. Une fois que vous avez vu HAReady in progress ou HAReady setup complete, recherchez l'annotation dbcluster.dbadmin.goog/raasEnabled dans le CR de votre cluster de bases de données. Si elle s'affiche, cela signifie que votre cluster de base 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 Service de base de données.

  2. Dans la liste des clusters de bases de données, cliquez sur celui pour lequel vous souhaitez déclencher un basculement. Pour qu'un cluster de bases de données puisse bénéficier d'un basculement, la haute disponibilité doit être activée.

  3. Cliquez sur Basculement.

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

gdcloud

  • Déclenchez le basculement pour le 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 bases 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.