Configurer des disques persistants avec état dans les groupes d'instances gérés


La configuration des disques persistants avec état permet de bénéficier de l'autoréparation des instances de VM et de mises à jour automatisées tout en préservant l'état des disques.

Vous pouvez configurer n'importe quel disque défini dans le modèle d'instance de sorte qu'il soit avec état pour toutes les instances d'un groupe d'instances géré (MIG) en ajoutant le nom d'appareil de ce disque à la règle avec état du MIG.

Vous pouvez également configurer individuellement des disques persistants avec état pour les instances d'un MIG en définissant des configurations par instance. Ces disques n'ont pas besoin d'être définis dans le modèle d'instance.

Avant de commencer

  • Consultez les pages expliquant quand utiliser des groupes d'instances gérés avec état et le fonctionnement des groupes d'instances gérés (MIG) avec état.
  • 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 :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    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.

    Terraform

    Pour utiliser les exemples Terraform de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

    1. Installez Google Cloud CLI.
    2. Pour initialiser gcloudCLI, exécutez la commande suivante :

      gcloud init
    3. Créez des identifiants d'authentification locaux pour votre compte Google :

      gcloud auth application-default login

    Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.

    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

Limites

Un MIG avec des disques avec état présente les limites suivantes :

Un MIG doté d'une configuration avec état (un MIG avec état) présente les limites suivantes :

  • Vous ne pouvez pas utiliser l'autoscaling si votre MIG dispose d'une configuration avec état.
  • Si vous souhaitez utiliser des mises à jour progressives automatiques, vous devez définir la méthode de remplacement sur RECREATE.
  • Pour les MIG régionaux avec état, vous devez désactiver la redistribution proactive (définissez le type de redistribution sur NONE) pour empêcher la suppression d'instances avec état lors de redistributions interzones automatiques.
  • Si vous utilisez une configuration sur toutes les instances pour remplacer les propriétés d'un modèle d'instance, vous ne pouvez pas spécifier ces propriétés à la fois dans une configuration par instance et dans une configuration sur toutes les instances du groupe.

  • Un MIG régional avec état n'orchestre pas automatiquement le basculement interzone. Lorsque vous utilisez un MIG régional, vous pouvez rendre votre application avec état résiliente en cas de défaillance d'une zone en déployant des instances dupliquées redondantes dans plusieurs zones et en tirant parti de la fonctionnalité de réplication des données de votre application.

Quand utiliser des disques persistants avec état

Utilisez des disques persistants avec état pour tirer parti de l'autoréparation de la VM et des mises à jour automatisées tout en conservant les données sur les disques. Pour en savoir plus, consultez les cas d'utilisation des MIG avec état.

Lorsque vous configurez des disques avec état, ces disques sont conservés via l'autoréparation, les mises à jour et la recréation des instances de VM. Mais cela signifie également que les disques avec état ne peuvent pas être recréés à partir de l'image d'origine ou mis à jour vers une nouvelle image.

Nous vous recommandons de laisser vos disques de démarrage sans état.

Garder le disque de démarrage sans état présente les avantages suivants :

  • Vous pouvez réparer un disque de démarrage corrompu en le recréant à partir de son image d'origine. L'autoréparation effectue ces opérations automatiquement.
  • Vous pouvez mettre à jour un disque de démarrage vers la dernière image avec de nouvelles versions et des correctifs de sécurité.

Pour en savoir plus, découvrez comment l'autoréparation et la mise à jour gèrent l'état préservé.

Configurer des disques persistants avec état pour toutes les VM d'un groupe d'instances géré

Configurez tous les disques définis dans un modèle d'instance avec état en ajoutant le nom de l'appareil de ce disque à la règle avec état du MIG. Le MIG considère que les disques portant ce nom d'appareil sont avec état pour toutes les instances de VM existantes et futures.

Configurer des disques avec état lors de la création d'un groupe d'instances géré

Console

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Sélectionnez le projet et cliquez sur Continuer.

  3. Cliquez sur Créer un groupe d'instances.

  4. Sélectionnez Nouveau groupe d'instances géré (avec état).

  5. Renseignez un Nom pour le groupe d'instances.

  6. Sélectionnez un modèle d'instance. Si aucun modèle d'instance n'est disponible, créez-en un.

  7. Dans la section Nombre d'instances, spécifiez le nombre d'instances à inclure dans le groupe.

  8. La section Configuration avec état affiche les disques spécifiés dans le modèle d'instance. Cliquez sur un disque pour modifier sa configuration avec état.

    1. Sous Avec état, sélectionnez Oui.
    2. Dans le menu déroulant Lors de la suppression permanente de l'instance, sélectionnez l'action à effectuer sur le disque avec état lorsque l'instance de VM est supprimée. Les options disponibles sont les suivantes :

      • Dissocier le disque : (par défaut) Ne supprimez jamais le disque. Dissociez le disque lorsque la VM est supprimée.
      • Supprimer le disque : supprimez le disque lorsque sa VM est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance gérée est supprimée manuellement ou lorsque la taille du groupe est réduite.
    3. Une fois que vous avez terminé la configuration avec état, cliquez sur Terminé.

  9. Cliquez sur Créer.

gcloud

Pour spécifier les disques d'un modèle d'instance qui doivent être avec état lors de la création d'un MIG, utilisez l'option --stateful-disk avec la commande gcloud compute instance-groups managed create :

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du groupe d'instances géré à créer.
  • INSTANCE_TEMPLATE : nom du modèle d'instance à utiliser lors de la création d'instances.
  • SIZE : nombre initial de VM dont vous avez besoin dans ce groupe.
  • DEVICE_NAME : nom de l'appareil d'un disque spécifié dans le modèle d'instance.
  • DELETE_RULE : valeur qui indique ce qui doit arriver à un disque avec état lorsqu'une VM est supprimée. Les options disponibles sont les suivantes :

    • never : (Par défaut) Ne supprimez jamais le disque. À la place, dissociez le disque lorsque sa VM est supprimée.
    • on-permanent-instance-deletion : supprimez le disque lorsque son instance de VM est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance gérée est supprimée manuellement ou lorsque la taille du groupe est réduite.

    Quelle que soit la valeur de la règle de suppression, les disques avec état sont toujours conservés lors des opérations d'autoréparation, de mise à jour et de recréation de VM.

Exemple

Vous souhaitez déployer une base de données avec 12 segments, chacun avec un disque de démarrage sans état contenant le système d'exploitation et les fichiers binaires de la base de données, et chacun avec un disque de données avec état. Procédez comme suit :

  1. Créez un modèle d'instance avec un disque de démarrage sans état basé sur l'image img-example-db-v01, avec un système d'exploitation et une base de données préinstallés, et avec un disque de données avec état :

    gcloud compute instance-templates create example-database-template-v01 \
        --image img-example-db-v01 \
        --create-disk device-name=data-disk,mode=rw,image=empty10GBext4
    

    L'option --create-disk donne l'ordre au MIG de :

    1. créer un disque de 10 Go pour chaque instance de VM à partir d'une image ext4 vide, préparée à l'avance ;
    2. associer le disque à sa VM en mode lecture/écriture à l'aide du nom d'appareil data-disk.
  2. Créer un MIG à partir du modèle d'instance et définir le disque de données avec état :

    gcloud compute instance-groups managed create example-database-group \
      --template example-database-template-v01 \
      --base-instance-name shard \
      --size 12 \
      --stateful-disk device-name=data-disk,auto-delete=on-permanent-instance-deletion
    

    Le nom de l'appareil data-disk est issu du modèle d'instance. Le disque de données est configuré pour être supprimé avec l'instance de VM lorsque la VM est définitivement supprimée (en raison d'une suppression manuelle de l'instance ou d'une diminution manuelle de la taille du groupe). Le disque de données est conservé lors de l'autoréparation, des mises à jour et de la recréation de VM.

  3. Vérifiez que le disque de données est configuré dans la règle avec état :

    gcloud compute instance-groups managed describe example-database-group
    
    
    baseInstanceName: shard
    ...
    name: example-database-group
    ...
    statefulPolicy:
      preservedState:
        disks:
          data-disk:
            autoDelete: ON_PERMANENT_INSTANCE_DELETION
    ...
    

    Vous pouvez constater que la stratégie avec état déclare les disques avec le nom d'appareil data-disk comme étant avec état, avec une règle pour supprimer ces disques lors de la suppression permanente d'une VM.

Terraform

Si vous n'avez pas encore créé de modèle d'instance, qui spécifie le type de machine, l'image de disque de démarrage, le réseau et les autres propriétés de VM que vous souhaitez pour chaque VM de votre MIG, créez Un modèle d'instance.

L'exemple suivant crée un MIG zonal avec un disque avec état. Pour spécifier le disque du modèle d'instance qui doit être avec état lors de la création d'un MIG, incluez le bloc stateful_disk. Pour en savoir plus sur la ressource utilisée dans l'exemple, consultez la section consacrée à la ressource google_compute_instance_group_manager. Pour créer un MIG régional, utilisez la ressource google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "example-database-group"
  base_instance_name = "shard"
  target_size        = 12
  zone               = "us-central1-f"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  stateful_disk {
    device_name = "data-disk"
    delete_rule = "ON_PERMANENT_INSTANCE_DELETION"
  }
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

REST

Pour spécifier les disques du modèle d'instance qui doivent être avec état lors de la création d'un MIG, incluez-les dans le champ statefulPolicy du corps de la requête de la méthode instanceGroupManagers.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers

{
  "name": "NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Remplacez l'élément suivant :

  • PROJECT : ID du projet pour la requête.
  • ZONE : zone où se trouve le MIG (s'applique à un MIG zonal).
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • NAME : nom du MIG à créer.
  • TEMPLATE : nom du modèle d'instance à utiliser lors de la création d'instances.
  • SIZE : nombre initial d'instances dont vous avez besoin dans ce groupe.
  • DEVICE_NAME : nom de l'appareil d'un disque spécifié dans le modèle d'instance.
  • DELETE_RULE : valeur qui indique ce qui doit arriver au disque avec état lorsque l'instance de VM est supprimée. Les options disponibles sont les suivantes :

    • never : (Par défaut) Ne supprimez jamais le disque. Dissociez le disque lorsque la VM est supprimée.
    • on_permanent_instance_deletion : supprimez le disque avec état lorsque sa VM est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance gérée est supprimée manuellement ou lorsque la taille du groupe est réduite.

Exemple

Vous souhaitez déployer une base de données avec 12 segments, chacun avec un disque de démarrage sans état contenant le système d'exploitation et les fichiers binaires de la base de données, et chacun avec un disque de données avec état. Procédez comme suit :

  1. Créez un modèle d'instance avec un disque de démarrage sans état basé sur l'image img-example-db-v01, avec un système d'exploitation et une base de données préinstallés, et avec un disque de données avec état, à l'aide de la méthode instanceTemplates.insert :

    POST https://compute.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates
    
    {
      "name": "example-database-template-v01",
      "properties": {
        "machineType":"e2-standard-2",
        "disks": [
          {
            "boot": true,
            "deviceName": "boot-disk",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/mg-example-db-v01"
            }
          },
          {
            "deviceName": "data-disk",
            "mode": "READ_WRITE",
            "initializeParams": {
              "sourceImage": "projects/example-project/global/images/empty10GBext4"
            }
          }
        ],
        "networkInterfaces": [
          {
            "network": "global/networks/default"
          }
        ]
      }
    }
    

    Le disque de données du modèle d'instance porte le nom d'appareil data-disk et est configuré pour être créé à partir d'une image ext4 vide, préparée au préalable, et doit être associé en mode lecture/écriture.

  2. Créez un MIG à partir du modèle d'instance et définissez le disque de données comme étant avec état à l'aide de la méthode instanceGroupManagers.insert :

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      "versions": [
        {
          "instanceTemplate": "global/instanceTemplates/example-database-template-v01"
        }
      ],
      "targetSize": 12,
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
    }
    

    Le MIG crée 12 instances, chacune avec un disque avec les propriétés suivantes :

    • Un nom d'appareil, data-disk, issu du modèle d'instance.
    • Une règle de suppression permettant de supprimer le disque de données lors de la suppression de la VM (en raison d'une suppression manuelle de l'instance ou d'une réduction manuelle de la taille du groupe).
    • Une entrée à l'état préservé de la règle (preservedStateFromPolicy) de chaque instance gérée afin que le disque de données soit conservé lors de l'autoréparation, des mises à jour et de la recréation d'instance.
  3. Utilisez la méthode instanceGroupManagers.get pour vérifier que le disque de données est configuré dans la règle avec état de la nouvelle ressource instanceGroupManagers :

    GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    
    {
      "name": "example-database-group",
      "baseInstanceName": "shard",
      ...
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      }
      ...
    }
    

    Vous pouvez constater que la règle avec état déclare les disques avec le nom d'appareil data-disk comme étant avec état, avec une règle pour supprimer ces disques lors de la suppression permanente d'une instance.

Définir et mettre à jour la configuration avec état pour les disques d'un groupe d'instances géré existant

Si vous exécutez une application avec état sur un MIG sans état (MIG sans configuration avec état), vous pouvez configurer les disques existants définis dans le modèle d'instance pour tous les instances de ce MIG. Cela vous permet de conserver les disques lors des opérations de recréation, d'autoréparation et de mise à jour des instances, et éventuellement des opérations de suppression.

Vous pouvez effectuer les opérations suivantes :

  • Ajoutez des disques définis dans le modèle d'instance à la règle avec état d'un MIG existant pour les déclarer avec état. Cela marque les disques avec le nom d'appareil donné comme étant avec état pour toutes les instances existantes et futures du MIG.
  • Mettez à jour la règle avec état pour modifier la configuration avec état des disques.

Le MIG applique automatiquement et de manière asynchrone la configuration mise à jour dans la règle avec état à toutes les instances. Les mises à jour des configurations de disque dans une règle avec état n'interrompent pas l'exécution des VM. Pour en savoir plus, consultez la section Appliquer des mises à jour de règles avec état.

Pour un MIG régional, vous devez désactiver la redistribution proactive des instances interzones avant de pouvoir configurer des disques avec état. Pour en savoir plus, consultez la section Gestion de l'état préservé avec des groupes régionaux.

Console

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur le nom du groupe d'instances dans lequel vous souhaitez spécifier une configuration avec état pour le disque.

  3. Cliquez sur Modifier pour modifier le groupe d'instances géré.

  4. Sous Configuration avec état, développez le disque que vous souhaitez définir avec état.

    1. Sous Avec état, sélectionnez Oui.
    2. Dans le menu déroulant Lors de la suppression permanente de l'instance, sélectionnez l'action à effectuer sur le disque avec état lorsque l'instance de VM est supprimée.

      • Dissocier le disque : (par défaut) Ne supprimez jamais le disque. Dissociez le disque lorsque la VM est supprimée.
      • Supprimer le disque : supprimez le disque lorsque sa VM est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance gérée est supprimée manuellement ou lorsque la taille du groupe est réduite.

    3. Après avoir mis à jour la configuration avec état, cliquez sur Terminé.

  5. Cliquez sur Enregistrer pour terminer la mise à jour.

gcloud

Pour spécifier les disques du modèle d'instance qui doivent être avec état ou pour mettre à jour la configuration d'un disque avec état pour un MIG existant, utilisez une ou plusieurs options --stateful-disk avec la commande gcloud compute instance-groups managed update :

gcloud compute instance-groups managed update NAME \
  --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

Remplacez les éléments suivants :

  • NAME : nom du groupe d'instances géré à mettre à jour.
  • DEVICE_NAME : nom de l'appareil d'un disque spécifié dans le modèle d'instance.
  • DELETE_RULE : valeur qui indique ce qui doit arriver au disque avec état lorsque l'instance de VM est supprimée. Les options disponibles sont les suivantes :

    • never : (Par défaut) Ne supprimez jamais le disque. Dissociez le disque lorsque l'instance est supprimée.
    • on-permanent-instance-deletion : supprimez le disque lorsque son instance est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance gérée est supprimée manuellement ou lorsque la taille du groupe est réduite.

Si un nom d'appareil spécifié est déjà configuré dans la règle avec état, la commande met à jour la configuration.

Exemple

Vous exécutez une base de données avec plusieurs segments sur un MIG nommé example-database- group. Chaque VM du MIG stocke un segment sur un disque supplémentaire avec le nom d'appareil data-disk, qui est défini par le modèle d'instance. Le MIG n'a pas de configuration avec état et vous souhaitez conserver les disques de données lors de la recréation, de l'autoréparation et des mises à jour d'instances. Vous souhaitez également protéger les disques de données contre la suppression lorsqu'une VM est supprimée.

  1. Mettez à jour le MIG pour définir le disque de données avec état à l'aide de la commande suivante :

    gcloud compute instance-groups managed update example-database-group \
      --stateful-disk device-name=data-disk,auto-delete=never
    

    Par conséquent, le MIG applique les mises à jour de configuration des règles avec état automatiquement et de manière asynchrone aux disques de données de toutes les instances. Les disques de données sont désormais conservés lors de l'autoréparation, des mises à jour et de la recréation d'instances. Les disques de données sont dissociés lors de la suppression de l'instance, car la règle auto-delete est définie sur never.

  2. Vérifiez que le disque de données est configuré dans la règle avec état en exécutant la commande gcloud compute instance-groups managed describe example-database-group.

REST

Pour spécifier les disques du modèle d'instance qui doivent être avec état ou mettre à jour la configuration des disques avec état pour un MIG existant, configurez les disques dans la règle avec état du MIG à l'aide de la méthode instanceGroupManagers.patch :

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

Remplacez l'élément suivant :

  • PROJECT : ID du projet pour la requête.
  • ZONE : zone où se trouve le MIG (s'applique à un MIG zonal).
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • NAME : nom du MIG à mettre à jour.
  • DEVICE_NAME : nom de l'appareil d'un disque, spécifié dans le modèle d'instance, pour lequel vous souhaitez mettre à jour la configuration avec état.
  • DELETE_RULE : valeur qui indique ce qui doit arriver au disque avec état lorsque l'instance de VM est supprimée. Les options disponibles sont les suivantes :

    • never : (Par défaut) Ne supprimez jamais le disque. Dissociez le disque lorsque l'instance est supprimée.
    • on-permanent-instance-deletion : supprimez le disque avec état lorsque son instance est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance est supprimée manuellement ou lorsque la taille du groupe est réduite.

Si le nom d'appareil spécifié est déjà configuré dans la règle avec état, la méthode patch met à jour sa configuration.

Exemple

Vous exécutez une base de données avec plusieurs segments sur un MIG nommé example-database- group. Chaque VM du MIG stocke un segment sur un disque supplémentaire avec le nom d'appareil data-disk, qui est défini par le modèle d'instance. Le MIG n'a pas de configuration avec état et vous souhaitez conserver les disques de données lors de la recréation, de l'autoréparation et des mises à jour d'instances. Vous souhaitez également protéger les disques de données contre la suppression lorsqu'une VM est supprimée.

  1. Appliquez un correctif au MIG pour définir le disque de données avec état :

    PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
    
    {
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": {"autoDelete": "NEVER" }
          }
        }
      }
    }
    

    Le MIG applique cette configuration avec état automatiquement et de manière asynchrone aux disques de données de toutes les instances. Les disques de données sont désormais conservés lors de l'autoréparation, des mises à jour et de la recréation d'instances. Les disques de données sont dissociés lors de la suppression de l'instance, car la règle autoDelete est définie sur NEVER.

  2. Vérifiez que le disque de données est configuré dans la règle avec état en affichant la ressource instanceGroupManagers, renvoyée par la méthode instanceGroupManagers.get.

Déclarer des disques persistants avec état comme étant sans état

Vous devrez peut-être configurer un disque avec état pour qu'il soit traité comme sans état. Exemple :

  • Si vous modifiez l'architecture de votre application pour supprimer l'état du disque.
  • Si vous avez configuré le disque avec un état par erreur et que vous souhaitez l'annuler.

Pour déclarer tous les disques avec un nom d'appareil donné comme étant sans état, supprimez la configuration du disque de la règle avec état.

Le MIG applique la modification à la règle avec état automatiquement et de manière asynchrone à toutes les instances. Les mises à jour de la configuration de disque dans une règle avec état n'interrompent pas l'exécution des instances de VM.

Pour en savoir plus, consultez la section Appliquer des mises à jour de règles avec état.

Console

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur le nom du groupe d'instances duquel vous souhaitez supprimer la configuration avec état pour les disques.

  3. Cliquez sur Modifier pour modifier le groupe d'instances géré.

  4. Sous Configuration avec état, développez les disques avec état que vous souhaitez définir sans état.

    1. Définissez l'option Avec état sur Non.
    2. Cliquez sur OK.
  5. Une fois les modifications effectuées, cliquez sur Enregistrer.

gcloud

Pour spécifier les disques de la règle avec état du MIG à rendre sans état, utilisez l'option --remove-stateful-disks avec la commande gcloud compute instance-groups managed update :

gcloud compute instance-groups managed update NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...]

Remplacez l'élément suivant :

  • NAME : nom du MIG à mettre à jour.
  • DEVICE_NAME : nom de l'appareil d'un disque à supprimer de la règle avec état et à traiter comme sans état. Vous pouvez indiquer un ou plusieurs noms d'appareils dans la liste.

Exemple

Vous exécutez une ancienne application avec plusieurs nœuds sur un MIG nommé example-legacy-group. Chaque VM du MIG stocke les données d'application sur un disque de démarrage portant le nom d'appareil boot-disk, que vous avez configuré avec état dans la règle avec état du MIG. Vous avez déplacé les données d'application vers un disque supplémentaire et souhaitez maintenant rendre le disque de démarrage sans état pour faciliter la mise à jour vers de nouvelles images.

Pour supprimer la configuration avec état du disque de démarrage, mettez à jour le groupe d'instances géré :

gcloud compute instance-groups managed update example-legacy-group \
  --remove-stateful-disks boot-disk

Le MIG supprime automatiquement et de manière asynchrone la configuration avec état du nom d'appareil boot-disk pour les disques de démarrage de toutes les instances du groupe. Les disques de démarrage restent associés aux instances, mais ne sont plus avec état. Lorsque vous recréez ou mettez à jour les instances, ou lorsque les instances sont autoréparées, le MIG recrée les disques de démarrage à partir de l'image spécifiée dans le modèle d'instance.

REST

Pour spécifier les disques de la règle avec état MIG à rendre sans état, supprimez la configuration de chaque disque de la règle avec état MIG à l'aide de la méthode instanceGroupManagers.patch :

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": null,
        ...
      }
    }
  }
}

Remplacez l'élément suivant :

  • PROJECT : ID du projet pour la requête.
  • ZONE : zone où se trouve le MIG (s'applique à un MIG zonal).
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • NAME : nom du MIG à mettre à jour.
  • DEVICE_NAME : nom de l'appareil du disque que vous souhaitez supprimer de la règle avec état. La spécification d'une valeur null entraîne la suppression de la configuration avec état pour ce disque. Vous pouvez indiquer un ou plusieurs noms d'appareils à supprimer.

Exemple

Vous exécutez une ancienne application avec plusieurs nœuds sur un MIG nommé example-legacy-group. Chaque VM du MIG stocke les données d'application sur un disque de démarrage portant le nom d'appareil boot-disk, que vous avez configuré avec état dans la règle avec état du MIG. Vous avez déplacé les données d'application vers un disque supplémentaire et souhaitez maintenant rendre le disque de démarrage sans état pour faciliter la mise à jour vers de nouvelles images.

Pour supprimer la configuration avec état du disque de démarrage, appliquez un correctif au groupe d'instances géré :

PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group

{
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "boot-disk": null
      }
    }
  }
}

Le MIG supprime automatiquement et de manière asynchrone la configuration avec état du nom d'appareil boot-disk pour les disques de démarrage de toutes les instances du groupe. Les disques de démarrage restent associés aux instances, mais ne sont plus avec état. Lorsque vous recréez ou mettez à jour les instances, ou lorsque les instances sont autoréparées, le MIG recrée les disques de démarrage à partir de l'image spécifiée dans le modèle d'instance.

Supprimer des disques persistants avec état d'un groupe d'instances géré

Vous devrez peut-être supprimer complètement un disque avec état des instances d'un MIG, par exemple, si vous avez reconçu l'architecture de votre application et déplacé l'état hors de ce disque.

Les MIG ne permettent pas de supprimer des disques avec état. Vous devez donc procéder comme suit :

  1. Supprimez la configuration avec état du disque de la règle avec état. Cela rend les disques avec le nom d'appareil donné sans état.
  2. Dissociez les disques des VM si vous souhaitez les conserver.
  3. Déployez un nouveau modèle d'instance qui ne définit plus le disque avec le nom d'appareil donné.

Configurer des disques persistants avec état individuellement pour une VM dans un groupe d'instances géré

Configurez des disques persistants avec état pour une VM spécifique d'un MIG en ajoutant le nom de l'appareil du disque à la configuration par instance de cette VM. Mettez à jour la VM pour appliquer la configuration par instance et la rendre effective.

La configuration individuelle de disques persistants avec état pour des VM spécifiques dans un MIG est utile si vous devez :

  • migrer des charges de travail existantes (apporter des disques existants) de VM autonomes vers des MIG avec état pour bénéficier de l'autoréparation et des mises à jour faciles ;
  • restaurer les sauvegardes de disques, configurées individuellement pour les VM ;
  • associer temporairement des disques supplémentaires avec état à une VM spécifique pour tester, déboguer ou copier des données.

Ajouter des disques avec état existants à de nouvelles VM dans un groupe d'instances géré

Vous pouvez ajouter des disques avec état existants aux nouvelles instances que vous créez manuellement dans un MIG. Cela est utile pour migrer une application avec état des VM autonomes existantes vers un MIG avec état, par exemple :

  1. Créez un modèle d'instance avec une configuration commune pour toutes les instances de VM.
  2. Dissociez les disques de données des instances autonomes et supprimez ces instances. Vous pouvez également dissocier les disques de démarrage s'ils contiennent un état qui doit être conservé.
  3. Créez un MIG vide à l'aide du modèle d'instance créé précédemment.
  4. Créez des instances dans le MIG avec les noms appropriés et les disques associés de l'étape précédente. Le MIG répond à votre requête avec les actions suivantes :

    1. Crée une VM à partir du modèle d'instance à l'aide du nom d'instance fourni.
      • Un MIG régional crée la VM dans la même zone que le disque. Si le disque est régional, le MIG régional crée la VM dans l'une des zones dupliquées du disque.
    2. Crée une configuration par instance avec la configuration avec état fournie pour les disques.
    3. Associe les disques à la nouvelle instance.

Ajoutez des disques avec état existants lorsque vous créez manuellement des instances spécifiques dans un MIG à l'aide de gcloud CLI ou de REST. Le MIG applique la configuration immédiatement lors de la création de la VM.

gcloud

Pour créer une VM avec un nom personnalisé et lui associer un ou plusieurs disques avec état, utilisez la commande gcloud compute instance-groups managed create-instance avec une ou plusieurs options --stateful-disk.

gcloud compute instance-groups managed create-instance NAME \
  --instance VM_NAME \
  [--zone ZONE | --region REGION] \
  --stateful-disk device-name=DEVICE_NAME,source=DISK[,mode=MODE][,auto-delete=DELETE_RULE]

Remplacez les éléments suivants :

  • NAME : nom du MIG dans lequel vous devez créer une instance.
  • VM_NAME : nom de la nouvelle instance à créer.
  • ZONE : zone où se trouve le MIG (s'applique à un MIG zonal).
  • REGION : région où se trouve le MIG (s'applique à un MIG régional).
  • DEVICE_NAME : nom de l'appareil à utiliser pour associer le disque.
  • DISK : URI d'un disque persistant existant à associer au DEVICE_NAME spécifié au format projects/project-id/zones/zone/disks/disk-name pour un disque zonal et projects/project-id/regions/region/disks/disk-name pour un disque régional.
  • MODE : spécifie le mode du disque. Les options suivantes sont acceptées :
    • ro : Lecture seule.
    • rw : (Par défaut) Lecture/Écriture.
  • DELETE_RULE : valeur qui indique ce qui doit arriver à un disque avec état lorsqu'une instance de VM est supprimée. Les options disponibles sont les suivantes :

    • never : (Par défaut) Ne supprimez jamais le disque. À la place, dissociez le disque lorsque son instance est supprimée.
    • on-permanent-instance-deletion : supprimez le disque avec état lorsque son instance est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance est supprimée manuellement ou lorsque la taille du groupe est réduite.

    Quelle que soit la valeur de la règle de suppression, les disques avec état sont toujours conservés lors des opérations d'autoréparation, de mise à jour et de recréation d'instances.

Exemple

Vous souhaitez disposer de l'autoréparation pour un serveur de base de données qui s'exécute actuellement sur une VM autonome nommée db-instance et qui stocke actuellement des données sur un disque nommé db-data-disk-1.

Créez un MIG avec état avec autoréparation, créez une VM similaire dans le MIG et associez le disque de données existant db-data-disk-1 à la nouvelle instance en tant que disque avec état :

  1. Arrêtez la VM, db-instance, pendant un intervalle de maintenance.
  2. Créez un modèle d'instance nommé db-template à l'aide de la configuration db-instance.
  3. Dissociez db-data-disk-1 de db-instance et supprimez db-instance.
  4. Créez un MIG vide, example-database-mig, à partir de db-template, puis configurez l'autoréparation.
  5. Créez une instance gérée avec le nom db-instance d'origine et associez db-data-disk-1 en tant que disque avec état :

    gcloud compute instance-groups managed create-instance example-database-mig \
      --instance db-instance \
      --zone us-east1-c \
      --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/db-data-disk-1,auto-delete=never
    

    La commande crée une instance db-instance dans le MIG, crée une configuration par instance correspondante avec un disque avec état db-data-disk-1, puis associe le disque à la nouvelle VM en utilisant data-disk comme nom d'appareil.

REST

Pour créer une ou plusieurs instances dans un MIG, définir des noms de VM personnalisés et associer un ou plusieurs disques avec état existants à ces instances, utilisez la méthode instanceGroupManagers.createInstances.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances

{
  "instances": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      }
    },
    ...
  ]
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour la requête.
  • ZONE : zone où se trouve le MIG (s'applique à un MIG zonal).
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • NAME : nom du MIG dans lequel créer l'instance.
  • VM_NAME : nom de l'instance à créer.
  • DEVICE_NAME : nom de l'appareil à utiliser pour associer le disque.
  • DISK : URI d'un disque persistant existant à associer au DEVICE_NAME spécifié au format projects/project-id/zones/zone/disks/disk-name pour un disque zonal ou projects/project-id/regions/region/disks/disk-name pour un disque régional.
  • MODE : spécifie le mode du disque. Les options suivantes sont acceptées :
    • READ_ONLY : Lecture seule.
    • READ_WRITE : (Par défaut) Lecture/Écriture.
  • DELETE_RULE : valeur qui indique ce qui doit arriver à un disque avec état lorsqu'une VM est supprimée. Les options disponibles sont les suivantes :

    • never : (Par défaut) Ne supprimez jamais le disque. À la place, dissociez le disque lorsque sa VM est supprimée.
    • on-permanent-instance-deletion : supprimez le disque avec état lorsque son instance est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance est supprimée manuellement ou lorsque la taille du groupe est réduite.

    Quelle que soit la valeur de la règle de suppression, les disques avec état sont toujours conservés lors des opérations d'autoréparation, de mise à jour et de recréation d'instances.

Exemple

Vous souhaitez disposer de l'autoréparation pour un serveur de base de données qui s'exécute actuellement sur une VM autonome nommée db-instance et qui stocke actuellement des données sur un disque nommé db-data-disk-1.

Créez un MIG avec état avec autoréparation, créez une instance similaire dans le MIG et associez le disque de données existant db-data-disk-1 à la nouvelle VM en tant que disque avec état :

  1. Arrêtez la VM, db-instance, pendant un intervalle de maintenance.
  2. Créez un modèle d'instance nommé db-template à l'aide de la configuration db-instance.
  3. Dissociez db-data-disk-1 de db-instance et supprimez db-instance.
  4. Créez un MIG vide, example-database-mig, à partir de db-template, puis configurez l'autoréparation.
  5. Créez une instance avec le nom db-instance d'origine et associez db-data-disk-1 en tant que disque avec état :

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/createInstances
    
    {
      "instances": [
        {
          "name": "db-instance",
          "preservedState" : {
            "disks": {
              "data-disk" : {
                "source": "projects/example-project/zones/us-east1-c/disks/db-data-disk-1",
                "mode": "READ_WRITE",
                "autoDelete": "never"
              }
            }
          }
        }
      ]
    }
    

    La méthode crée une instance db-instance dans le MIG, crée une configuration par instance correspondante avec un disque avec état db-data-disk-1, puis associe le disque à la nouvelle instance, en utilisant data-disk comme nom d'appareil.

Ajouter, déclarer et remplacer individuellement des disques avec état pour les VM d'un groupe d'instances géré

Configurez les disques avec état individuellement pour une instance gérée en ajoutant ou en mettant à jour une configuration de disque avec état dans la configuration par instance associée. Ensuite, mettez à jour l'instance pour appliquer la configuration par instance à la VM.

La configuration individuelle de disques avec état est utile pour les tâches suivantes :

  • Ajouter un disque avec état depuis l'extérieur d'un MIG à une VM de ce MIG.
  • Déclarer un disque précédemment sans état comme étant avec état pour une VM dans un MIG.
  • Remplacer un disque avec état par un autre disque pour une VM dans un MIG.

Ajouter un disque avec état depuis l'extérieur d'un MIG à une VM de ce MIG. Vous pouvez associer n'importe quel disque extérieur à un MIG à une instance gérée en ajoutant une configuration avec état pour le disque dans la configuration par instance associée. Une fois la configuration appliquée, le MIG associe automatiquement le disque à l'instance et le traite comme étant avec état.

Déclarer un disque persistant sans état comme étant avec état. Vous pouvez déclarer un disque précédemment sans état et actuellement associé à une VM en tant que disque avec état en ajoutant pour ce disque une configuration avec état incluant le nom de l'appareil et son URI, dans la configuration par instance associée. Une fois la configuration appliquée, le MIG commence à conserver le disque comme avec état.

Remplacer un disque avec état par un autre disque. Le remplacement d'un disque avec état par un autre peut être utile, par exemple, si vous avez besoin d'accéder à une sauvegarde récupérée. Vous pouvez échanger un disque avec état contre un autre en mettant à jour l'URI du disque tout en conservant le même nom d'appareil dans la configuration par instance. Après avoir appliqué la configuration par instance mise à jour, le MIG dissocie l'ancien disque et associe le nouveau en utilisant le même nom d'appareil. Lors de l'application de la mise à jour, indiquez si vous souhaitez que l'instance continue de s'exécuter, la redémarrer ou la recréer. Le changement de disque de démarrage nécessite au moins un redémarrage de la VM.

gcloud

Pour configurer des disques avec état individuellement pour une VM dans un MIG, ajoutez ou mettez à jour la configuration des disques avec état dans la configuration par instance associée. Ensuite, mettez à jour l'instance pour appliquer la configuration.

Si aucune configuration par instance n'existe pour l'instance, exécutez la commande gcloud compute instance-groups managed instance-configs create avec une ou plusieurs options --stateful-disk :

gcloud compute instance-groups managed instance-configs create NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \
[--no-update-instance | --update-instance] \
[--instance-update-minimal-action MINIMAL_ACTION]

Si une configuration par instance existe déjà pour l'instance, exécutez la commande gcloud compute instance-groups managed instance-configs update avec une ou plusieurs options --stateful-disk.

L'option --update-instance (par défaut) applique immédiatement les modifications à l'instance. Si vous utilisez --no-update-instance, les modifications sont appliquées uniquement lors de la prochaine recréation ou mise à jour de l'instance.

gcloud compute instance-groups managed instance-configs update NAME \
--instance VM_NAME \
--stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \
[--no-update-instance | --update-instance] \
[--instance-update-minimal-action MINIMAL_ACTION]

Remplacez les éléments suivants :

  • NAME : nom du groupe d'instances géré.
  • VM_NAME : nom de l'instance de VM pour laquelle configurer des disques avec état.
  • DEVICE_NAME : nom d'appareil utilisé pour associer le disque.
  • DISK : URI d'un disque persistant existant à associer au DEVICE_NAME spécifié, au format projects/project-id/zones/zone/disks/disk-name pour un disque zonal et projects/project-id/regions/region/disks/disk-name pour un disque régional.

    La sous-option source=DISK est facultative si l'appareil est déjà défini dans la configuration par instance de l'instance. Sinon, vous devez la renseigner.

    Si elle n'est pas spécifiée, l'URI du disque actuellement configuré reste inchangé.

  • MODE : spécifie le mode du disque. Vous ne pouvez spécifier mode que si vous spécifiez également source. Les options suivantes sont acceptées :

    • ro : Lecture seule.
    • rw : (Par défaut) Lecture/Écriture.

    Si cette valeur est omise, la valeur par défaut est définie pour une nouvelle configuration de disque avec état. La valeur reste inchangée dans une configuration existante.

  • DELETE_RULE : valeur qui indique ce qui doit arriver à un disque avec état lorsqu'une VM est supprimée. Les options disponibles sont les suivantes :

    • never : (Par défaut) Ne supprimez jamais le disque. À la place, dissociez le disque lorsque son instance est supprimée.
    • on-permanent-instance-deletion : supprimez le disque avec état lorsque son instance est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance est supprimée manuellement ou lorsque la taille du groupe est réduite.

    Si cette valeur est omise, la valeur par défaut est définie pour une nouvelle configuration de disque avec état. La valeur reste inchangée dans une configuration existante.

    Quelle que soit la valeur de la règle de suppression, les disques avec état sont toujours conservés lors des opérations d'autoréparation, de mise à jour et de recréation d'instances.

  • MINIMAL_ACTION : effectue au minimum l'action spécifiée lorsque la mise à jour de la configuration par instance est effectivement appliquée à l'instance. Doit être utilisé avec l'option --update-instance. La valeur doit être l'une des suivantes :

    • none : aucune action.
    • refresh : appliquer les mises à jour qu'il est possible d'appliquer sans arrêter la VM.
    • restart : arrêter la VM, puis la redémarrer.
    • replace : recréer la VM.

    Si cet élément n'est pas spécifié, l'action la moins perturbatrice requise par la mise à jour est utilisée.

Exemple

Les données d'un disque avec état actuellement associé, data-disk-1, ont été corrompues et vous souhaitez les restaurer à partir de la dernière sauvegarde. Vous avez créé un disque, data-disk-2, à partir d'un instantané pour remplacer le disque corrompu de l'instance, db-instance-1, géré par un MIG avec état, example-database-mig. Le disque d'origine, data-disk-1, est associé sous le nom d'appareil data-disk avec une règle de suppression automatique pour ne jamais supprimer le disque.

Pour remplacer data-disk-1 par data-disk-2, exécutez la commande suivante :

gcloud compute instance-groups managed instance-configs update example-database-mig \
  --instance db-instance-1 \
  --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/data-disk-2 \
  --update-instance \
  --instance-update-minimal-action restart

La commande :

  1. Met à jour la configuration par instance de db-instance-1 :
    1. Met à jour la source du disque avec le nom d'appareil data-disk de data-disk-1 (dernière configuration) vers data-disk-2 (nouvelle configuration).
    2. Conserve la règle de suppression automatique de ne jamais supprimer le disque, car le paramètre auto-delete est omis dans l'option --stateful-disk et, par défaut, la règle de suppression est never.
  2. Applique immédiatement la mise à jour de la configuration par instance à la VM db-instance-1, car l'option --update-instance est incluse. Le MIG détache data-disk-1 et associe data-disk-2 sous le même nom d'appareil, data-disk.
  3. Comme l'action minimale est définie sur restart, le MIG redémarre l'instance db-instance-1 pour mettre à jour la VM, ce qui permet à l'application de base de données de commencer à utiliser le nouveau disque.

Terraform

Pour configurer des disques avec état individuellement pour une VM dans un MIG, ajoutez la configuration du disque avec état dans la configuration par instance associée. Ensuite, mettez à jour l'instance pour appliquer la configuration.

Pour ajouter une configuration par instance pour une VM, utilisez la ressource google_compute_per_instance_config et incluez le bloc preserved_state comme indiqué dans l'exemple suivant.

resource "google_compute_per_instance_config" "default" {
  instance_group_manager = google_compute_instance_group_manager.default.name
  zone                   = google_compute_instance_group_manager.default.zone
  name                   = "db-instance"
  preserved_state {
    disk {
      device_name = "data-disk"
      source      = google_compute_disk.default.id
      delete_rule = "NEVER"
    }
  }
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

REST

Pour configurer des disques avec état individuellement pour les VM d'un MIG, ajoutez ou mettez à jour la configuration du disque avec état dans les configurations par instance associées. Ensuite, mettez à jour les instances pour appliquer la configuration.

Si les configurations par instance n'existent pas encore pour les VM données, utilisez la méthode instanceGroupManagers.updatePerInstanceConfigs ou la méthode regionInstanceGroupManagers.updatePerInstanceConfigs avec une configuration avec état pour un ou plusieurs disques :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/updatePerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Si des configurations par instance existent déjà pour les VM données, utilisez la méthode instanceGroupManagers.patchPerInstanceConfigs ou la méthode regionInstanceGroupManagers.patchPerInstanceConfigs avec une configuration avec état pour un ou plusieurs disques :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : {
            "source": "DISK",
            "mode": "MODE",
            "autoDelete": "DELETE_RULE"
          },
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet pour la requête.
  • ZONE : zone où se trouve le MIG (s'applique à un MIG zonal).
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • NAME : nom du MIG.
  • VM_NAME : nom de la VM pour laquelle configurer des disques avec état.
  • DEVICE_NAME : nom d'appareil utilisé pour associer le disque.
  • DISK : URI d'un disque persistant existant à associer au DEVICE_NAME spécifié, au format projects/project-id/zones/zone/disks/disk-name pour un disque zonal et projects/project-id/regions/region/disks/disk-name pour un disque régional.

    Le champ "source": "DISK" est facultatif si l'appareil est déjà défini dans la configuration par instance de l'instance. Sinon, vous devez la renseigner.

    Si le champ source n'est pas défini, l'URI du disque actuellement configuré reste inchangé.

  • MODE : (Facultatif) Spécifie le mode du disque. mode ne peut être spécifié que si source est spécifié. Les options suivantes sont acceptées :

    • READ_ONLY : Lecture seule.
    • READ_WRITE : (Par défaut) Lecture/Écriture.

    Si cette valeur est omise, la valeur par défaut est définie pour une nouvelle configuration de disque avec état. La valeur reste inchangée dans une configuration existante.

  • DELETE_RULE : (Facultatif) Valeur qui indique ce qui doit arriver à un disque avec état lorsqu'une VM est supprimée. Les options disponibles sont les suivantes :

    • Jamais : (Par défaut) Ne supprimez jamais le disque. À la place, dissociez le disque lorsque son instance est supprimée.
    • on-permanent-instance-deletion : supprimez le disque avec état lorsque son instance est définitivement supprimée du groupe d'instances, par exemple lorsque l'instance est supprimée manuellement ou lorsque la taille du groupe est réduite.

    Si le champ autoDelete est omis, la valeur par défaut est définie pour une nouvelle configuration de disque avec état. La valeur reste inchangée dans une configuration existante.

    Quelle que soit la valeur de la règle de suppression, les disques avec état sont toujours conservés lors des opérations d'autoréparation, de mise à jour et de recréation d'instances.

  • FINGERPRINT : (Facultatif) Empreinte de la configuration donnée, si celle-ci existe déjà. Elle est utilisée pour le verrouillage optimiste. Pour afficher la dernière empreinte, effectuez une requête get() pour récupérer la ressource.

Les méthodes updatePerInstanceConfigs et patchPerInstanceConfigs mettent à jour les configurations par instance spécifiées, mais n'appliquent pas les mises à jour de configuration aux VM gérées associées. Les modifications sont appliquées à une instance lorsque le MIG est invité à recréer ou à mettre à jour l'instance. Vous pouvez également mettre à jour l'instance de manière sélective pour appliquer les modifications.

Exemple

Les données d'un disque avec état actuellement associé, data-disk-1, ont été corrompues et vous souhaitez les restaurer à partir de la dernière sauvegarde. Vous avez créé un disque, data-disk-2, à partir d'un instantané pour remplacer le disque corrompu de l'instance, db-instance-1, géré par un MIG avec état, example-database-mig. Le disque d'origine, data-disk-1, est associé sous le nom d'appareil data-disk avec une règle de suppression automatique pour ne jamais supprimer le disque.

Pour mettre à jour la configuration par instance de db-instance-1 avec le nouveau disque, appelez la méthode patchPerInstanceConfigs :

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "db-instance-1",
      "preservedState" : {
        "disks": {
          "data-disk" : {
            "source": "projects/example-project/zones/us-east1-c/disks/data-disk-2"
          }
        }
      }
    }
  ]
}

La méthode corrige la configuration par instance pour db-instance-1 :

  1. Met à jour source pour un disque avec le nom d'appareil data-disk de data-disk-1 (dernière configuration) vers data-disk-2 (nouvelle configuration).
  2. Conserve les paramètres mode et autoDelete tels quels, car ils sont omis dans la requête.

La mise à jour de la configuration n'est pas encore appliquée à la VM db-instance-1. Le MIG applique la mise à jour de la configuration lorsque vous recréez ou mettez à jour l'instance.

Pour appliquer la mise à jour de la configuration par instance à la VM db-instance-1, appelez la méthode instanceGroupManagers.applyUpdatesToInstances de l'instance :

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/applyUpdatesToInstances
{
  "instances": ["/zones/us-east1-c/instances/db-instance-1"],
  "minimalAction": "RESTART"
}

La méthode met à jour l'état préservé de l'instance gérée, en dissociant data-disk-1 et en associant data-disk-2 sous le même nom d'appareil data-disk. Comme minimalAction est définie sur RESTART, la méthode redémarre la VM db-instance-1, ce qui permet à l'application de base de données de commencer à utiliser le nouveau disque.

Dissocier un disque avec état ou le déclarer sans état pour une VM individuelle

Vous devrez peut-être dissocier un disque avec état ou le configurer pour qu'il soit traité comme sans état pour une VM individuelle. Exemple :

  • Si vous modifiez l'architecture de votre application pour supprimer l'état du disque.
  • Si vous configurez le disque avec un état par erreur et que vous souhaitez l'annuler.

Dissociez un disque avec état ou rendez-le sans état pour une VM individuelle en supprimant la configuration avec état du disque de la configuration par instance associée ou en supprimant la configuration par instance complète. Lorsque vous appliquez la modification :

  • Si le disque n'est pas défini dans le modèle d'instance, le MIG dissocie le disque.
    • Le MIG ne supprime pas le disque lorsque vous supprimez sa configuration de la configuration par instance, quelle que soit la règle de suppression automatique de la configuration.
  • Si le disque est défini par le modèle d'instance, le MIG le traite comme sans état, ce qui signifie que le MIG recrée le disque à partir de sa source dans le modèle d'instance lors des événements ultérieurs de recréation, de mise à jour ou d'autoréparation d'instances.

La suppression d'une configuration de disque d'une configuration par instance ne redémarre pas une instance de VM en cours d'exécution, sauf si vous choisissez explicitement de le faire.

Pour en savoir plus, consultez la page Appliquer des mises à jour de configurations par instance.

gcloud

Pour dissocier des disques avec état ou les déclarer sans état individuellement pour une VM d'un MIG, supprimez la configuration du disque avec état de la configuration par instance associée ou supprimez complètement la configuration par instance si elle ne contient aucun autre état. Mettez à jour l'instance pour appliquer la configuration.

Pour supprimer une configuration de disque avec état de la configuration par instance associée, utilisez la commande gcloud compute instance-groups managed instance-configs update avec l'option --remove-stateful-disks. L'option --update-instance (par défaut) applique immédiatement les modifications à l'instance. Si vous utilisez --no-update-instance, les modifications sont appliquées uniquement lors de la prochaine recréation ou mise à jour de l'instance.

gcloud compute instance-groups managed instance-configs update NAME \
  --instance VM_NAME \
  --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

Remplacez les éléments suivants :

  • NAME : nom du MIG.
  • VM_NAME : nom de la VM de laquelle vous souhaitez supprimer la configuration avec état.
  • DEVICE_NAME : nom d'appareil utilisé pour associer le disque.
  • MINIMAL_ACTION : effectue au moins l'action spécifiée lors de la mise à jour de la VM avec sa configuration par instance. Ne peut être utilisé qu'avec --update-instance. La valeur doit correspondre à l'un des éléments suivants :

    • none : aucune action.
    • refresh : appliquer les mises à jour qu'il est possible d'appliquer sans arrêter la VM.
    • restart : arrêter la VM, puis la redémarrer.
    • replace : recréer la VM.

    Si cet élément n'est pas spécifié, l'action la moins perturbatrice requise par la mise à jour est utilisée.

Exemple

Vous exécutez une ancienne application sur un MIG nommé example-legacy-group. Chaque VM du MIG stocke les données d'application sur un disque de démarrage portant le nom d'appareil boot-disk. À l'aide de configurations par instance, vous avez fait de chaque disque de démarrage un disque avec état. Vous avez maintenant déplacé les données d'application vers un disque supplémentaire et vous souhaitez rendre le disque de démarrage sans état pour chaque VM afin de faciliter la mise à jour vers de nouvelles images.

Pour chaque instance, par exemple pour node-1, exécutez la commande suivante :

gcloud compute instance-groups managed instance-configs update example-legacy-group \
  --instance node-1 \
  --remove-stateful-disks boot-disk \
  --update-instance

La commande :

  1. Supprime la configuration du disque portant le nom d'appareil boot-disk de la configuration par instance pour node-1.
  2. Applique immédiatement la mise à jour de la configuration par instance à la VM node-1, car l'option --update-instance est incluse. Le MIG supprime le disque de démarrage preservedStateFromConfig de l'instance gérée et le traite comme sans état, ce qui signifie qu'il recrée le disque à partir de son image de démarrage dans le modèle d'instance lors d'événements ultérieurs de recréation, de mise à jour ou d'autoréparation d'instances.

REST

Pour dissocier des disques avec état ou les déclarer sans état individuellement pour une VM d'un MIG, supprimez la configuration du disque avec état de la configuration par instance associée ou supprimez complètement la configuration par instance si elle ne contient aucun autre état. Ensuite, mettez à jour l'instance pour appliquer la configuration.

Pour supprimer une configuration de disque avec état de la configuration par instance associée, utilisez la méthode instanceGroupManagers.patchPerInstanceConfigs ou la méthode regionInstanceGroupManagers.patchPerInstanceConfigs :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "VM_NAME",
      "preservedState" : {
        "disks": {
          "DEVICE_NAME" : null
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
      ...
    }
  ]
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet pour la requête.
  • ZONE : zone où se trouve le MIG (s'applique à un MIG zonal).
    • Pour un MIG régional, remplacez zones/ZONE par regions/REGION et spécifiez la région du MIG.
  • NAME : nom du MIG.
  • VM_NAME : nom de la VM à partir de laquelle supprimer la configuration avec état.
  • DEVICE_NAME : nom d'appareil utilisé pour associer le disque.
  • FINGERPRINT : l'empreinte de la configuration donnée, si celle-ci existe déjà. Elle est utilisée pour le verrouillage optimiste. Pour afficher la dernière empreinte, effectuez une requête get() pour récupérer la ressource.

La méthode patchPerInstanceConfigs corrige les configurations par instance spécifiées, mais n'applique pas les modifications aux VM associées. Les modifications sont appliquées à une VM lorsque vous recréez ou mettez à jour l'instance. Vous pouvez appliquer les modifications manuellement ou utiliser des mises à jour progressives automatiques.

Exemple

Vous exécutez une ancienne application sur un MIG nommé example-legacy-group. Chaque VM du MIG stocke les données d'application sur un disque de démarrage portant le nom d'appareil boot-disk. Vous avez configuré le disque de démarrage avec état dans les configurations par instance du MIG lors de la migration des VM autonomes vers le MIG. Vous avez déplacé les données d'application vers un disque supplémentaire et souhaitez maintenant rendre le disque de démarrage sans état pour chaque VM afin de faciliter la mise à jour vers de nouvelles images.

  1. Appelez la méthode patchPerInstanceConfigs pour les instances, par exemple pour node-1, avec une valeur null pour le disque de démarrage :

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/patchPerInstanceConfigs
    
    {
      "perInstanceConfigs": [
        {
          "name": "node-1",
          "preservedState" : {
            "disks": {
              "boot-disk" : null
            }
          }
        }
      ]
    }
    

    La méthode supprime la configuration du disque avec le nom d'appareil boot- disk de la configuration par instance pour node-1. La mise à jour de la configuration n'est pas encore appliquée à l'instance de VM node-1. La mise à jour de la configuration sera appliquée à la prochaine recréation ou mise à jour de l'instance.

  2. Pour appliquer la mise à jour de la configuration par instance à l'instance de VM node-1, appelez la méthode instanceGroupManagers.applyUpdatesToInstances de l'instance :

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/applyUpdatesToInstances
    {
      "instances": ["/zones/us-east1-c/instances/node-1"]
    }
    

    Le MIG supprime le disque de démarrage de preservedStateFromConfig pour l'instance node-1 et le traite comme sans état. Cela signifie que le MIG recrée le disque à partir de son image de démarrage dans le modèle d'instance lors des événements ultérieurs de recréation, de mise à jour ou d'autoréparation d'instances.

Votre avis

Nous souhaitons en savoir plus sur vos cas d'utilisation, les défis que vous rencontrez ou vos impressions sur les MIG avec état. Nous vous invitons à nous faire part de vos commentaires à l'adresse suivante : mig-discuss@google.com.

Étape suivante