Effectuer des tests de basculement pour les environnements Cloud Composer hautement résilients

Cloud Composer 1 | Cloud Composer 2

Cette page explique comment effectuer des tests de basculement de base de données et de cluster pour des environnements Cloud Composer hautement résilients.

Les tests de basculement pour votre environnement simulent une panne complète d'une zone dans un centre de données. Dans un tel scénario, une panne de zone d'un cluster et une panne de base de données peuvent se produire en même temps. En effectuant les deux tests de basculement, vous pouvez surveiller l'opération de basculement par votre environnement hautement résilient, ainsi que son impact sur vos DAG et vos tâches.

Avant de commencer

  • Pour effectuer des tests de basculement, votre compte doit disposer des rôles et autorisations suivants:

    • Autorisation composer.environments.update. Consultez la page Contrôle des accès avec IAM pour obtenir la liste des rôles dotés de cette autorisation.

    • Administrateur de cluster Kubernetes Engine (roles/container.clusterAdmin) pour exécuter des commandes kubectl sur le cluster de l'environnement. Vous pouvez également provisionner des rôles Kubernetes RBAC directement dans GKE.

  • Si vous utilisez des réseaux autorisés, vous devez exécuter les commandes kubectl à partir d'une machine pouvant accéder au point de terminaison du plan de contrôle du cluster GKE. Selon la configuration de l'accès au point de terminaison du plan de contrôle de votre environnement, plusieurs options s'offrent à vous. Pour en savoir plus, consultez la section Exécuter des commandes dans un environnement d'adresse IP privée.

Vérifier que votre environnement est sain

Veillez à n'effectuer les tests de basculement de cluster de la base de données et de l'environnement que sur des environnements opérationnels.

Pour vérifier que votre environnement est sain:

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

    Accéder à la page Environnements

  2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  3. Accédez à l'onglet Surveillance.

  4. Assurez-vous que tous les indicateurs de santé sont verts.

Effectuer un test de basculement de base de données

Vous pouvez effectuer un test de basculement de base de données qui simule une panne de zone en le déclenchant à l'aide d'une commande Google Cloud CLI. Par exemple, cette opération peut vous permettre de mesurer le temps nécessaire pour que la base de données de votre environnement bascule vers une autre zone.

Pour effectuer un test de basculement de base de données pour votre environnement, procédez comme suit:

  1. Assurez-vous que votre environnement est sain.

  2. Obtenez la zone principale de la base de données de votre environnement:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Remplacez les éléments suivants :

    • ENVIRONMENT_NAME: nom de votre environnement Cloud Composer.
    • LOCATION: région dans laquelle se trouve l'environnement.

    Exemple :

    gcloud composer environments fetch-database-properties \
        example-environment \
        --location us-central1
    
  3. Lancez le test de basculement de base de données:

    gcloud composer environments database-failover \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Remplacez les éléments suivants :

    • ENVIRONMENT_NAME: nom de votre environnement Cloud Composer.
    • LOCATION: région dans laquelle se trouve l'environnement.

    Exemple :

    gcloud composer environments database-failover \
        example-environment \
        --location us-central1
    
  4. Attendez la fin du test de basculement de base de données. Cette opération peut prendre jusqu'à trois minutes.

  5. Vérifiez que la zone principale de la base de données de votre environnement a été modifiée:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    
  6. Vérifiez les métriques d'état de votre environnement pour vous assurer que celui-ci est sain.

  7. La base de données de votre environnement est prête pour un autre basculement lorsque la métrique d'environnement Base de données disponible pour le basculement (composer.googleapis.com/environment/database/available_for_failover) devient True. Pour en savoir plus sur l'affichage des métriques de votre environnement dans Cloud Monitoring, consultez la page Surveiller les environnements.

Effectuer le test de basculement de cluster de votre environnement

Vous pouvez effectuer un test de basculement pour le cluster de votre environnement, ce qui simule une panne de zone. Par exemple, cette opération peut vous permettre de mesurer le temps nécessaire à votre environnement pour basculer vers une autre zone.

Vérifier que votre environnement est sain

Avant de commencer le test, assurez-vous que votre environnement est sain.

Configurer les identifiants pour le cluster de votre environnement

Pour obtenir les identifiants du cluster, procédez comme suit:

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

    Accéder à la page Environnements

  2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  3. Accédez à l'onglet Configuration de l'environnement.

  4. Cliquez sur Afficher les détails du cluster.

  5. Cliquez sur Connect (Se connecter).

  6. Copiez et exécutez la commande Google Cloud CLI qui s'affiche.

    Exemple :

    gcloud container clusters get-credentials \
      us-central1-exam-db23ee12-gke \
      --region us-central1 \
      --project example-project
    

Inspecter le cluster de votre environnement

Vérifiez les zones et les nœuds dans lesquels les charges de travail s'exécutent dans le cluster de votre environnement. Vous utiliserez ces informations pour simuler une indisponibilité de zone par la suite. Vous pouvez également exécuter à nouveau ces commandes pendant que vous effectuez le test de basculement pour voir comment le cluster de votre environnement effectue le basculement.

  1. Vérifiez les nœuds et les zones:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. Vérifiez les pods:

    kubectl get pods --all-namespaces \
    -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \
    --field-selector metadata.namespace!=kube-system
    
  3. Affichez des informations plus détaillées sur les pods:

    kubectl get pods --all-namespaces -o wide \
    --field-selector metadata.namespace!=kube-system
    

Drainer les nœuds

Choisissez la zone dans laquelle vous souhaitez simuler une panne. Si vous effectuez ce test avec le test de basculement de base de données, vous pouvez choisir la zone principale de l'instance Cloud SQL à disponibilité élevée de votre environnement. Par exemple, si l'instance Cloud SQL principale s'exécute dans us-central1-a, vous pouvez simuler une panne dans l'ensemble de la zone us-central1-a en effectuant d'abord le test de basculement de la base de données, puis le test de basculement du cluster dans us-central1-a.

La commande suivante simule un ensemble de nœuds qui deviennent indisponibles dans une zone spécifique. Elle évince de force les pods des nœuds dans la zone spécifiée et empêche de replanifier les pods sur ces nœuds. Comme les nouveaux pods ne peuvent pas être programmés, les nouveaux nœuds sont ajoutés au cluster.

Cette commande n'a pas d'incidence sur les charges de travail qui s'exécutent dans l'espace de noms composer-system. Des messages d'erreur associés peuvent s'afficher dans le résultat de la commande. Cela n'affecte pas le test de basculement. Les nœuds qui existent dans la zone sélectionnée sont toujours marqués comme non programmables.

Pour simuler une défaillance de zone de cluster dans la zone sélectionnée, procédez comme suit:

kubectl get nodes -o name -l "topology.gke.io/zone=ZONE" | \
xargs kubectl drain \
--ignore-daemonsets --delete-emptydir-data --force --disable-eviction

Remplacez les éléments suivants :

  • ZONE: zone dans laquelle vous souhaitez simuler une défaillance de zone de cluster.

Vérifier les métriques d'environnement

Métriques d'environnement lors d'une simulation de panne de zone
Figure 1. Métriques d'environnement lors d'une indisponibilité de zone simulée (cliquez pour agrandir)
  1. Dans la console Google Cloud, accédez à la page Environnements.

    Accéder à la page Environnements

  2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  3. Accédez à l'onglet Surveillance.

  4. Vérifiez que les métriques suivantes sont "vertes" pendant l'opération de basculement ou restent à l'état "rouge" pendant plusieurs minutes au maximum.

    • État de l'environnement
    • Pulsation du programmeur
    • État du serveur Web
    • État de la base de données
    • Nœuds de calcul actifs
    • Programmeurs actifs
    • Serveurs Web actifs
    • Déclencheurs actifs

    Notez que l'interruption simulée est marquée comme une "Opération de maintenance du cluster".

  5. Aucune action supplémentaire n'est requise pour rétablir l'état de préparation du cluster au basculement après le test. Pendant le test, le cluster de l'environnement ajoute automatiquement des nœuds qui remplacent ceux affectés par la panne simulée.

Étapes suivantes