Gérer les défaillances des disques répliqués de manière synchrone

.
Le disque Hyperdisk Balanced à haute disponibilité est une option de stockage qui fournit une réplication synchrone des données entre deux zones d'une région. Vous pouvez utiliser un disque Hyperdisk Balanced à haute disponibilité comme élément de base lorsque vous mettez en œuvre des services à haute disponibilité dans Compute Engine.

Ce document décrit les différents scénarios pouvant perturber le fonctionnement de vos disques répliqués de manière synchrone et explique comment les gérer.

Avant de commencer

  • Passez en revue les principes de base concernant les disques répliqués de manière synchrone et le basculement. Pour en savoir plus, consultez la page À propos de la réplication synchrone des disques.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Rôles requis

Pour obtenir les autorisations nécessaires pour migrer des données de disque répliquées de manière synchrone à l'aide d'un point de contrôle de récupération d'instance répliquée, demandez à votre administrateur de vous accorder les rôles IAM suivants :

  • Pour migrer des données de disque répliquées de manière synchrone à l'aide d'un point de contrôle de récupération d'instance répliquée : Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur le projet
  • Pour afficher les métriques de disque répliqué (l'une des rôles suivants) :

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ces rôles prédéfinis contiennent les autorisations requises pour migrer des données de disques répliqués de manière synchrone à l'aide d'un point de contrôle de récupération d'instance répliquée. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour migrer des données de disque répliquées de manière synchrone à l'aide d'un point de contrôle de récupération d'instance répliquée :

  • Pour créer un instantané standard à partir du point de contrôle de récupération de l'instance répliquée, procédez comme suit :
    • compute.snapshots.create sur le projet
    • compute.disks.createSnapshot sur le disque
  • Pour créer un disque répliqué de manière synchrone à partir de l'instantané standard : compute.disks.create sur le projet dans lequel vous souhaitez créer le disque
  • Pour migrer des VM vers le nouveau disque, procédez comme suit :
    • compute.instances.attachDisk sur l'instance de VM
    • compute.disks.use permission sur le disque que vous venez de créer

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Scénarios d'échec

Avec les disques répliqués de manière synchrone, lorsque l'appareil est entièrement répliqué, les données sont automatiquement répliquées sur deux zones d'une région. Une opération d'écriture est exécutée sur une instance de calcul si les données sont conservées de façon durable dans les deux instances répliquées.

Si la réplication sur une zone échoue ou est très lente pendant un certain temps, l'état de réplication du disque devient dégradé. Dans ce mode, une opération d'écriture est confirmée une fois que les données ont été conservées de façon durable dans une instance répliquée.

Si Compute Engine détecte que la réplication peut être réactivée, les données écrites sur une instance répliquée après que l'autre instance répliquée est passé à l'état dégradé sont synchronisées dans les deux zones, et le disque revient à un état entièrement répliqué. Cette transition est entièrement automatisée.

Les valeurs RPO et RTO ne sont pas définies lorsqu'un appareil est dans un état dégradé. Pour minimiser les pertes de données et de disponibilité en cas de défaillance d'un disque en état dégradé, nous vous recommandons de sauvegarder régulièrement vos disques répliqués de manière synchrone en utilisant des instantanés standard. Vous pouvez récupérer un disque en restaurant l'instantané.

Défaillances zonales

Un disque répliqué, ou disque régional, est répliqué de manière synchrone sur les instances répliquées des zones principale et secondaire. Les défaillances zonales se produisent lorsqu'une instance répliquée zonale devient indisponible. Les défaillances zonales peuvent se produire dans la zone principale ou secondaire pour l'une des raisons suivantes :

  • Il y a une indisponibilité de zone.
  • L'instance répliquée présente un ralentissement excessif des opérations d'écriture.

Le tableau suivant fournit les différents scénarios de défaillance zonale que vous pouvez rencontrer pour les disques répliqués de manière synchrone, ainsi que l'action recommandée pour chaque scénario. Dans chacun de ces scénarios, nous partons du principe que votre instance répliquée zonale principale est opérationnelle et synchronisée pendant l'état initial.

État initial du disque Échec dans Nouvel état du disque Conséquences de l'échec Mesure à prendre

Instance répliquée principale : synchronisée

Instance répliquée secondaire : synchronisée

État du disque : entièrement répliqué

Disque associé dans : zone principale

Zone principale

Instance répliquée principale : non synchronisée ou indisponible

Instance répliquée secondaire : synchronisée

État du disque : dégradé

Disque associé dans : zone principale

  • L'instance répliquée de la zone secondaire reste opérationnelle et dispose des données de disque les plus récentes.
  • L'instance répliquée de la zone principale n'est pas opérationnelle et n'a pas forcément accès à toutes les données du disque.
Basculez le disque en forçant l'association à une VM dans la zone secondaire opérationnelle.

Instance répliquée principale : synchronisée

Instance répliquée secondaire : synchronisée

État du disque : entièrement répliqué

Disque associé dans : zone principale

Zone secondaire

Instance répliquée principale : synchronisée

Instance répliquée secondaire : désynchronisée ou indisponible

État du disque : dégradé

Disque associé dans : zone principale

  • L'instance répliquée de la zone principale reste opérationnelle et dispose des données de disque les plus récentes.
  • L'instance répliquée de la zone secondaire n'est pas opérationnelle et n'a pas forcément accès à toutes les données du disque.
Aucune action de votre part n'est requise. Compute Engine synchronise l'instance répliquée défaillante dans la zone secondaire lorsqu'elle est à nouveau disponible.

Instance répliquée principale : synchronisée

Instance répliquée secondaire : non synchronisée et indisponible

État du disque : dégradé

Disque associé dans : zone principale

Zone principale

Instance répliquée principale : synchronisée, mais indisponible

Instance répliquée secondaire : non synchronisée

État du disque : non disponible

Disque associé dans : zone principale

  • Les deux instances répliquées zonales ne sont pas disponibles et ne peuvent pas diffuser le trafic. Le disque devient indisponible.
  • Si l'indisponibilité de zone ou la défaillance de l'instance répliquée sont temporaires, aucune donnée n'est perdue.
  • Si l'indisponibilité de la zone ou la défaillance de l'instance répliquée est permanente, toutes les données écrites sur l'instance répliquée opérationnelle alors que le disque était dégradé sont définitivement perdues.
Nous vous recommandons d'utiliser un instantané standard existant et de créer un disque pour récupérer vos données. Il est recommandé de sauvegarder régulièrement les disques répliqués à l'aide d'instantanés standards.

Instance répliquée principale : synchronisée

Instance répliquée secondaire : en récupération mais disponible

État du disque : en récupération

Disque associé dans : zone principale

Zone principale

Instance répliquée principale : non disponible

Instance répliquée secondaire : en récupération mais disponible

État du disque : non disponible

Disque associé dans : zone principale

  • Les deux instances répliquées zonales ne peuvent pas diffuser de trafic. Le disque devient indisponible.
  • Si l'indisponibilité zonale ou la défaillance de l'instance répliquée sont temporaires, le disque reprend des opérations une fois que l'instance répliquée principale est à nouveau disponible.
  • Si l'indisponibilité de la zone ou de l'instance répliquée est permanente, votre disque devient inutilisable.

Instance répliquée principale : synchronisée

Instance répliquée secondaire : non synchronisée, mais disponible

État du disque : dégradé

Disque associé dans : zone principale

Zone principale

Instance répliquée principale : non disponible

Instance répliquée secondaire : non synchronisée, mais disponible

État du disque : non disponible

Disque associé dans : zone principale

  • Les deux instances répliquées zonales ne peuvent pas diffuser de trafic. Le disque devient indisponible.
  • Si l'indisponibilité zonale ou l'échec de l'instance répliquée sont temporaires, le disque reprend des opérations une fois que l'instance répliquée principale est à nouveau disponible.
  • Si l'indisponibilité zonale ou l'échec de l'instance répliquée sont permanents, votre disque devient inutilisable.

Défaillances des applications et des VM

En cas de pannes causées par une mauvaise configuration de la VM, un échec de mise à niveau du système d'exploitation ou d'autres défaillances d'applications, vous pouvez forcer l'association (force-attach) de votre disque répliqué sur une instance de calcul située dans la même zone que l'instance répliquée opérationnelle.

Catégorie de défaillance (probabilité) Types de défaillances Action
Défaillance de l'application (élevée)
  • Applications qui ne répondent pas
  • Échec causé par des actions d'administration de l'application (par exemple, une mise à niveau)
  • Erreur humaine (par exemple, mauvaise configuration de paramètres tels que le certificat SSL ou les LCA)
Le plan de contrôle des applications peut déclencher le basculement en fonction des seuils de vérification de l'état.
Défaillance de la VM (moyenne)
  • Défaillance matérielle ou d'infrastructure
  • VM qui ne répond pas en raison de conflits dans le processeur ou d'une interruption du réseau intermédiaire
Les VM sont généralement autoréparées. Le plan de contrôle des applications peut déclencher le basculement en fonction des seuils de vérification de l'état.
Corruption de l'application (faible à moyenne) Corruption des données d'application
(par exemple, en raison de bugs au niveau de l'application ou d'un échec de mise à niveau du système d'exploitation)
Reprise de l'application :

Faire basculer un disque répliqué à l'aide de force-attach

En cas de défaillance de la zone principale, vous pouvez basculer votre volumeHyperdisk Balanced à haute disponibilité (preview) vers une instance de calcul d'une autre zone en effectuant une opération d'association forcée.

En cas de défaillance dans la zone principale, vous ne pourrez peut-être pas dissocier le disque de l'instance, car elle est inaccessible. L'association forcée vous permet d'associer un volumeHyperdisk Balanced à haute disponibilité à une instance de calcul, même si ce volume est associé à une autre instance.

Une fois l'association forcée effective, Compute Engine empêche l'instance d'origine d'écrire sur le disque répliqué. L'utilisation de l'association forcée vous permet d'accéder à nouveau à vos données et de récupérer votre service de manière sécurisée. Vous avez également la possibilité d'arrêter manuellement l'instance de VM après avoir effectué l'opération d'association forcée.

Pour forcer l'association d'un disque existant à une instance de calcul, sélectionnez l'une des tâches suivantes :

Console

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Sélectionnez votre projet.

  3. Cliquez sur le nom de l'instance que vous souhaitez modifier.

  4. Sur la page des détails, cliquez sur Modifier.

  5. Dans la section Disques supplémentaires, cliquez sur Associer un disque supplémentaire.

  6. Sélectionnez le disque répliqué régional dans la liste déroulante.

  7. Pour forcer l'association du disque, cochez la case Forcer l'association du disque.

  8. Cliquez sur OK, puis sur Enregistrer.

Vous pouvez effectuer les mêmes étapes pour forcer l'association (force-attach) d'un disque sur l'instance de calcul d'origine une fois l'échec résolu.

gcloud

Dans gcloud CLI, exécutez la commande instances attach-disk pour associer le disque d'instance répliquée à une instance de calcul. Spécifiez l'option --disk-scope et définissez-la sur regional.

gcloud compute instances attach-disk VM_NAME \
    --disk DISK_NAME --disk-scope regional \
    --force-attach

Remplacez les éléments suivants :

  • VM_NAME : nom de la nouvelle instance de calcul dans la région.
  • DISK_NAME : nom du disque répliqué.

Après avoir forcé l'association (force-attach) du disque, vous pouvez, si nécessaire, y installer les systèmes de fichiers. L'instance de calcul peut utiliser ce disque pour continuer les opérations de lecture et d'écriture sur le disque.

REST

Envoyez une requête POST à la méthode compute.instances.attachDisk et incluez l'URL du disque répliqué que vous venez de créer. Le paramètre de requête forceAttach=true est requis pour associer le disque à la nouvelle instance de calcul si le disque est toujours associé à l'instance de calcul principale.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk?forceAttach=true

{
 "source": "projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • ZONE : emplacement de votre instance de calcul.
  • VM_NAME : nom de l'instance de calcul à laquelle vous ajoutez le disque répliqué.
  • REGION : région où se trouve le disque répliqué.
  • DISK_NAME : nom du disque répliqué.

Après avoir associé le disque répliqué, installez les systèmes de fichiers sur les disques si nécessaire. L'instance de calcul peut utiliser le disque répliqué pour continuer des opérations de lecture et d'écriture sur le disque.

Basculer un disque de démarrage vers une instance secondaire

Un seul disque de démarrage peut être associé à une instance de calcul. Lorsque vous effectuez le basculement sur un disque de démarrage répliqué, utilisez l'une des méthodes suivantes, selon que l'instance de calcul secondaire existe déjà ou non :

Utiliser le point de contrôle de récupération d'instance répliquée pour récupérer les disques répliqués

Un point de contrôle de récupération d'instance répliquée représente le moment le plus récent cohérent avec les plantages dans le temps d'unHyperdisk Balanced à haute disponibilité (preview). Compute Engine vous permet de créer des instantanés standards à partir du point de contrôle de récupération des instances répliquées pour les disques dégradés.

Dans de rares cas, lorsque votre disque est dégradé, l'instance répliquée zonale synchronisée avec les dernières données de disque peut également échouer avant que l'instance répliquée non synchronisée ne la rattrape. Vous ne pouvez pas forcer l'association du disque sur les instances de calcul dans l'une des zones. Votre disque répliqué devient indisponible et vous devez transférer les données vers un nouveau disque. Dans de tels scénarios, si vous ne disposez d'aucun instantané standard existant pour votre disque, vous pouvez peut-être récupérer vos données de disque à partir de l'instance répliquée incomplète à l'aide d'un instantané standard créé à partir du point de contrôle de récupération de l'instance répliquée. Pour connaître la procédure détaillée, consultez la page Procédure de migration et de récupération des données de disque.

Procédure de migration et de récupération des données de disque

Pour récupérer et migrer les données d'un disque répliqué à l'aide du point de contrôle de récupération de l'instance répliquée, procédez comme suit :

  1. Créer un instantané standard du volumeHyperdisk Balanced à haute disponibilité (preview) à partir de son point de contrôle de récupération de l'instance répliquée.

    Vous pouvez créer l'instantané standard pour un disque à partir de son point de contrôle de récupération d'instance répliquée en n'utilisant que la gcloud CLI ou REST.

    gcloud

    Pour créer un instantané à l'aide du point de contrôle de récupération, exécutez la commande gcloud compute snapshots create. Incluez l'option --source-disk-for-recovery-checkpoint pour spécifier que vous souhaitez créer l'instantané à l'aide d'un point de contrôle de récupération d'instance répliquée. Excluez les paramètres --source-disk et --source-disk-region.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-for-recovery-checkpoint=SOURCE_DISK \
        --source-disk-for-recovery-checkpoint-region=SOURCE_REGION \
        --storage-location=STORAGE_LOCATION \
        --snapshot-type=SNAPSHOT_TYPE
    

    Remplacez les éléments suivants :

    • DESTINATION_PROJECT_ID : ID du projet dans lequel vous souhaitez créer l'instantané.
    • SNAPSHOT_NAME : nom de l'instantané.
    • SOURCE_DISK : nom ou chemin d'accès complet du disque source que vous souhaitez utiliser pour créer l'instantané. Pour spécifier le chemin d'accès complet d'un disque source, utilisez la syntaxe suivante :
        projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
        

      Si vous spécifiez le chemin d'accès complet au disque source, vous pouvez exclure l'option --source-disk-for-recovery-checkpoint-region. Si vous ne spécifiez que le nom du disque, vous devez inclure cette option.

      Pour créer un instantané à partir du point de contrôle de récupération d'un disque source dans un autre projet, vous devez spécifier le chemin d'accès complet au disque source.

    • SOURCE_PROJECT_ID : ID de projet du disque source dont vous souhaitez utiliser le point de contrôle pour créer l'instantané.
    • SOURCE_REGION : nom du disque source dont vous souhaitez utiliser le point de contrôle pour créer l'instantané.
    • SOURCE_DISK_NAME : nom du disque source dont vous souhaitez utiliser le point de contrôle pour créer l'instantané.
    • STORAGE_LOCATION : Facultatif : emplacement multirégional Cloud Storage ou la région Cloud Storage dans laquelle vous souhaitez stocker l'instantané. Vous ne pouvez spécifier qu'un seul emplacement de stockage.
      Utilisez l'option --storage-location uniquement lorsque vous souhaitez remplacer l'emplacement de stockage par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés.
    • SNAPSHOT_TYPE: type d'instantané, STANDARD ou ARCHIVE. Si aucun type d'instantané n'est spécifié, un instantané STANDARD est créé.

    Vous pouvez utiliser un point de contrôle de récupération d'instance répliquée pour créer un instantané uniquement sur des disques dégradés. Si vous créez un instantané à partir d'un point de contrôle de récupération d'instance répliquée lorsque l'appareil est entièrement répliqué, le message d'erreur suivant s'affiche :

    The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please
    create regular snapshots instead.
    

    REST

    Pour créer un instantané à l'aide du point de contrôle de récupération, envoyez une requête POST à la méthode snapshots.insert. Excluez le paramètre sourceDisk et incluez à la place le paramètre sourceDiskForRecoveryCheckpoint pour spécifier que vous souhaitez créer l'instantané à l'aide du point de contrôle.

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    
    {
      "name": "SNAPSHOT_NAME",
      "sourceDiskForRecoveryCheckpoint": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "storageLocations": "STORAGE_LOCATION",
      "snapshotType": "SNAPSHOT_TYPE"
    }
    

    Remplacez les éléments suivants :

    • DESTINATION_PROJECT_ID : ID du projet dans lequel vous souhaitez créer l'instantané.
    • SNAPSHOT_NAME : nom de l'instantané.
    • SOURCE_DISK : nom ou chemin d'accès complet du disque source que vous souhaitez utiliser pour créer l'instantané. Pour spécifier le chemin d'accès complet d'un disque source, utilisez la syntaxe suivante :
        projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
        

      Si vous spécifiez le chemin d'accès complet au disque source, vous pouvez exclure l'option --source-disk-for-recovery-checkpoint-region. Si vous ne spécifiez que le nom du disque, vous devez inclure cette option.

      Pour créer un instantané à partir du point de contrôle de récupération d'un disque source dans un autre projet, vous devez spécifier le chemin d'accès complet au disque source.

    • SOURCE_PROJECT_ID : ID de projet du disque source dont vous souhaitez utiliser le point de contrôle pour créer l'instantané.
    • SOURCE_REGION : nom du disque source dont vous souhaitez utiliser le point de contrôle pour créer l'instantané.
    • SOURCE_DISK_NAME : nom du disque source dont vous souhaitez utiliser le point de contrôle pour créer l'instantané.
    • STORAGE_LOCATION : Facultatif : emplacement multirégional Cloud Storage ou la région Cloud Storage dans laquelle vous souhaitez stocker l'instantané. Vous ne pouvez spécifier qu'un seul emplacement de stockage.
      N'utilisez le paramètre storageLocations que si vous souhaitez ignorer l'emplacement de stockage par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés.
    • SNAPSHOT_TYPE : type d'instantané, STANDARD ou ARCHIVE. Si aucun type d'instantané n'est spécifié, un instantané STANDARD est créé.

    Vous pouvez utiliser un point de contrôle de récupération d'instance répliquée pour créer un instantané uniquement sur des disques dégradés. Si vous créez un instantané à partir d'un point de contrôle de récupération d'instance répliquée lorsque l'appareil est entièrement répliqué, le message d'erreur suivant s'affiche :

    The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please
    create regular snapshots instead.
    

  2. Créez un nouveau volume Hyperdisk Balanced à haute disponibilité à l'aide de cet instantané. Lorsque vous créez le disque, vous récupérez toutes les données du point de contrôle de récupération le plus récent en restaurant les données vers le nouveau disque à partir de l'instantané. Pour connaître la procédure détaillée, consultez la page Créer une VM avec un disque de démarrage répliqué.

  3. Migrez toutes les charges de travail de VM vers le nouveau disque et vérifiez que ces charges de travail de VM s'exécutent correctement. Pour en savoir plus, consultez la page Déplacer une VM entre plusieurs zones ou régions.

Après avoir récupéré et migré vos données de disque et de VM vers le volumeHyperdisk Balanced à haute disponibilité que vous venez de créer, vous pouvez reprendre vos opérations.

Déterminer le RPO fourni par le point de contrôle de récupération de l'instance répliquée

Cette section explique comment déterminer le RPO fourni par le dernier point de contrôle de récupération d'une instance répliquée d'un volume Hyperdisk Balanced à haute disponibilité (preview).

Les instances répliquées zonales sont entièrement synchronisées

Compute Engine actualise le point de contrôle de récupération d'instance répliquée de votre volumeHyperdisk Balanced à haute disponibilité toutes les 10 minutes. Par conséquent, lorsque vos instances répliquées zonales sont entièrement synchronisées, le RPO est d'environ 10 minutes.

Les instances répliquées zonales ne sont pas synchronisées

Vous ne pouvez pas afficher les horodatages de création et d'actualisation exacts d'un point de contrôle de récupération d'instance répliquée. Toutefois, vous pouvez estimer le RPO approximatif fourni par votre dernier point de contrôle à l'aide des données suivantes :

  • Code temporel le plus récent de l'état du disque entièrement répliqué : vous pouvez obtenir ces informations en utilisant les données Cloud Monitoring pour la métrique replica_state du disque répliqué. Vérifiez les données de métrique replica_state de l'instance répliquée non synchronisée afin de déterminer à quel moment l'instance répliquée n'est plus synchronisée. Comme Compute Engine actualise le point de contrôle du disque toutes les 10 minutes, l'actualisation la plus récente du point de contrôle a pu avoir lieu environ 10 minutes avant ce code temporel.
  • Code temporel de l'opération d'écriture la plus récente : vous pouvez obtenir ces informations à l'aide des données Cloud Monitoring pour la métrique write_ops_count du disque répliqué. Vérifiez les données de métrique write_ops_count pour déterminer l'opération d'écriture la plus récente pour le disque.

Une fois que vous avez déterminé ces horodatages, utilisez la formule suivante pour calculer le RPO approximatif fourni par le point de contrôle de récupération d'instance répliquée de votre disque. Si la valeur calculée est inférieure à zéro, le RPO est effectivement nul.

Approximate RPO provided by the latest checkpoint = (Most recent write operation timestamp - (Most recent timestamp of the fully replicated disk state - 10 minutes))

Étape suivante