L'intérêt des métadonnées d'instance est de définir des propriétés pour vos applications et de communiquer avec elles à travers le serveur de métadonnées. Par exemple, vous pouvez utiliser des métadonnées pour configurer l'identité de l'instance de machine virtuelle (VM), des variables d'environnement, des informations sur l'architecture du cluster ou encore la plage de données dont une VM est responsable.
En configurant des métadonnées avec état dans un groupe d'instances géré (MIG), vous vous assurez que les métadonnées spécifiques à l'instance sont conservées lors des opérations d'autoréparation, de mise à jour et de recréation des instances gérées.
Vous configurez les métadonnées avec état individuellement pour les instances de VM d'un MIG en les définissant dans des configurations par instance et en appliquant la configuration. Vous pouvez définir une configuration par instance lors de la création de l'instance ou sur des instances gérées existantes. Une fois la configuration par instance appliquée, le groupe d'instances géré stocke les métadonnées avec état dans le champ État préservé issu de la configuration (preservedStateFromConfig
) d'une instance gérée.
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 :
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- 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.
Lorsque vous supprimez une instance de manière définitive (manuellement ou par redimensionnement), le MIG ne conserve pas les métadonnées avec état de cette instance.
- Il crée une instance gérée basée sur le modèle d'instance et portant le nom d'instance fourni.
- Il crée une configuration par instance à partir des métadonnées avec état fournies et définit ces métadonnées sur l'instance.
- Il stocke les métadonnées avec état dans l'état préservé issu de la configuration (
preservedStateFromConfig
) de l'instance gérée associée. NAME
: nom du MIG dans lequel créer l'instance.INSTANCE_NAME
: nom de l'instance à créer.KEY
etVALUE
: paires clé/valeur de métadonnées avec état à définir individuellement pour les instances en plus des métadonnées définies dans le modèle d'instance.- En cas de conflit, les valeurs de clé que vous définissez ici sont prioritaires sur les valeurs de clé issues du modèle d'instance.
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
parregions/REGION
et spécifiez la région du MIG.
- Pour un MIG régional, remplacez
NAME
: nom du MIG dans lequel créer l'instance.INSTANCE_NAME
: nom de l'instance à créer.KEY
etVALUE
: paires clé/valeur de métadonnées avec état à définir individuellement pour les instances en plus des métadonnées définies dans le modèle d'instance.- En cas de conflit, les valeurs de clé que vous définissez ici sont prioritaires sur les valeurs de clé issues du modèle d'instance.
- L'option
--stateful-metadata
pour définir ou modifier les métadonnées, ou - L'option
--remove-stateful-metadata
pour supprimer les métadonnées avec état spécifiques à une instance NAME
: nom du groupe d'instances géré.INSTANCE_NAME
: nom de l'instance pour laquelle configurer des métadonnées avec état.KEY=VALUE
: paires clé/valeur de métadonnées avec état à définir individuellement pour les instances en plus des métadonnées définies dans le modèle d'instance. En cas de conflit, les valeurs de clé que vous définissez ici sont prioritaires sur les valeurs de clé issues du modèle d'instance.KEY
: clés de métadonnées avec état spécifiques à l'instance, à supprimer de la configuration par instance.- Si aucune valeur n'est définie par le modèle d'instance pour une clé donnée, la paire clé/valeur est entièrement supprimée de l'instance lorsque la modification est appliquée.
- Si une valeur est définie par le modèle d'instance pour une clé donnée, la valeur du modèle d'instance est définie pour l'instance lorsque la modification est appliquée.
MINIMAL_ACTION
: effectue au moins l'action spécifiée lorsque la mise à jour de la configuration par instance est effectivement appliquée à l'instance. Une optionMINIMAL_ACTION
ne peut être définie que lorsque l'option--update-instance
est utilisée. 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 l'instance.restart
: arrêter l'instance, puis la redémarrer.replace
: recréer l'instance.
Si cet élément n'est pas spécifié, l'action la moins perturbatrice requise par la mise à jour est utilisée.
- Elle définit la métadonnée
mode:standby
dans la configuration par instance associée à la VMnode-12
, au sein du groupe d'instances géréexample-cluster
. - Elle supprime la métadonnée
logging:elaborate
de la configuration par instance de l'instancenode-12
. - Applique la modification de configuration par instance à la VM
node-12
:- Définit les métadonnées
mode:standby
selon la configuration. - Définit les métadonnées
logging:basic
du modèle d'instance, car la valeur de la clélogging
n'est plus définie par la configuration par instance.
- Définit les métadonnées
- La modification est appliquée immédiatement à la VM, car l'option
--no-update-instance
a été omise. - La VM continue de s'exécuter pendant la mise à jour, car l'option
--instance-update-minimal-action
a été omise et c'est donc l'action la moins perturbatrice qui est choisie par défaut pour la mise à jour :refresh
. 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
parregions/REGION
et spécifiez la région du MIG.
- Pour un MIG régional, remplacez
NAME
: nom du MIG.INSTANCE_NAME
: nom de la VM pour laquelle configurer des métadonnées avec état.KEY
etVALUE
: paires clé/valeur de métadonnées avec état à définir individuellement pour les instances en plus des métadonnées définies dans le modèle d'instance.- Les valeurs de métadonnées avec état définies pour des clés pré-existantes dans le modèle d'instance remplacent les valeurs du modèle d'instance.
- Les autres entrées de métadonnées du modèle d'instance ne sont pas affectées et restent disponibles.
- Spécifier
null
comme valeur supprime la clé de la configuration par instance.
FINGERPRINT
: (Facultatif) Empreinte de la configuration donnée, si celle-ci existe déjà. Elle est utilisée pour le verrouillage optimiste.- Elle définit la métadonnée
mode:standby
dans la configuration par instance associée à la VM,node-12
, au sein du groupe d'instances géréexample-cluster
. - Elle supprime la métadonnée
logging:elaborate
de la configuration par instance, car la valeur fournie estnull
. - Elle définit la métadonnée
mode:standby
suivant la configuration par instance. - Définit les métadonnées
logging:basic
du modèle d'instance, car la valeur de la clélogging
n'est plus définie par la configuration par instance. - La VM continue de s'exécuter pendant la mise à jour, car l'option
minimalAction
est définie surNONE
, ce qui permet au MIG d'utiliser l'action la moins perturbatrice requise pour la mise à jour. La mise à jour des métadonnées d'une instance nécessite l'actionREFRESH
, qui ne perturbe pas l'exécution d'une instance. - En savoir plus sur le stockage et la récupération des métadonnées d'instance.
- Configurez des disques persistants avec état pour les VM d'un MIG.
- Découvrez comment appliquer, afficher et supprimer une configuration avec état.
- Apprenez-en plus sur les MIG et l'utilisation d'instances gérées.
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.
Pour en savoir plus, consultez Set up authentication for a local development environment.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Limites
Un MIG avec des métadonnées avec état présente les limites suivantes :
Un MIG doté d'une configuration avec état (un MIG avec état) présente les limites suivantes :
Définir des métadonnées avec état à la création d'une instance
Vous pouvez définir des métadonnées avec état lorsque vous créez manuellement une instance au sein d'un MIG. Cela est utile pour migrer une application avec état hébergée sur des VM autonomes vers un MIG avec état, ainsi que lors de la création d'instances avec état.
Lorsque vous créez manuellement une instance au sein d'un MIG et que vous fournissez des métadonnées avec état, le MIG effectue les tâches suivantes :
gcloud
Pour créer une instance gérée portant un nom personnalisé et définir des métadonnées avec état pour cette VM, utilisez la commande
gcloud compute instance-groups managed create-instance
avec l'option--stateful-metadata
.gcloud compute instance-groups managed create-instance NAME \ --instance INSTANCE_NAME \ --stateful-metadata KEY=VALUE[,KEY=VALUE,...]
Remplacez les éléments suivants :
Exemple
Vous devez déployer un cluster de nœuds,
example-cluster
, qui peut fonctionner dans l'un des deux modes suivants :active
oustandby
. Vous définissez le mode individuellement pour chaque VM du cluster à l'aide de métadonnées, par exemple :mode:active
. Vous configurez également le niveau de détail de la journalisation pour chaque nœud à l'aide d'une clé de métadonnéeslogging
pouvant être définie surbasic
ouelaborate
. L'application hébergée sur le nœud est configurée à l'aide des valeurs issues des métadonnées d'instance.Pour créer un nœud actif nommé
node-12
et avec une journalisation détaillée ("elaborate"), exécutez la commande suivante :gcloud compute instance-groups managed create-instance example-cluster \ --instance node-12 \ --stateful-metadata mode=active,logging=elaborate
La commande crée une VM
node-12
dans le MIGexample-cluster
et définit deux paires de métadonnées clé/valeur,mode:active
etlogging:elaborate
, pour la nouvelle instance.Terraform
Pour créer une instance gérée portant un nom personnalisé et définir des métadonnées avec état pour cette VM, utilisez la ressource
google_compute_per_instance_config
.L'exemple suivant utilise un MIG zonal. Si vous ne disposez pas encore d'un MIG zonal, créez un MIG zonal avec des VM limitées à une seule zone.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
REST
Pour créer dans un MIG une ou plusieurs instances gérées, dotées de noms de VM personnalisés et sur lesquelles sont définies individuellement des métadonnées avec état, utilisez la méthode
instanceGroupManagers.createInstances
. Pour un MIG régional, utilisez la méthoderegionInstanceGroupManagers.createInstances
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances { "perInstanceConfigs": [ { "name": "INSTANCE_NAME", "preservedState" : { "metadata": { "KEY" : "VALUE", ... } } }, ... ] }
Remplacez les éléments suivants :
Exemple
Vous devez déployer un cluster de nœuds,
example-cluster
, qui peut fonctionner dans l'un des deux modes suivants :active
oustandby
. Vous définissez le mode individuellement pour chaque VM du cluster à l'aide de métadonnées, par exemple :mode:active
. Vous configurez également le niveau de détail de la journalisation pour chaque nœud à l'aide d'une clé de métadonnéeslogging
pouvant être définie surbasic
ouelaborate
. L'application hébergée sur le nœud est configurée à l'aide des valeurs issues des métadonnées d'instance.Pour créer un nœud actif nommé
node-12
et avec une journalisation détaillée ("elaborate"), exécutez la méthode suivante :POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/createInstances { "instance": [ { "name": "node-12", "preservedState" : { "metadata": { "mode":"active", "logging":"elaborate" } } } ] }
La méthode crée une VM
node-12
dans le MIGexample-cluster
et définit deux paires de métadonnées clé/valeur,mode:active
etlogging:elaborate
, pour la nouvelle instance.Définir, modifier et supprimer des métadonnées avec état individuellement pour des instances de VM existantes
Vous définissez, modifiez ou supprimez les métadonnées avec état d'une instance existante au sein d'un groupe d'instances géré en définissant sa configuration sur une configuration par instance associée, puis en appliquant la configuration par mise à jour de l'instance.
gcloud
Pour configurer des métadonnées avec état individuellement pour une instance de VM au sein d'un groupe d'instances géré, définissez ou supprimez des métadonnées avec état dans la configuration par instance associée. Si vous appliquez simultanément la configuration à l'instance (
--update-instance
), vous pouvez choisir de maintenir l'instance en cours d'exécution, de la redémarrer ou de la recréer. Si vous n'appliquez pas la configuration (--no-update-instance
), vos modifications ne prendront effet qu'après la recréation ou la mise à jour de l'instance.Si aucune configuration par instance n'existe pour une instance donnée, exécutez la commande
gcloud compute instance-groups managed instance-configs create
avec l'une des options suivantes :gcloud compute instance-groups managed instance-configs create NAME \ --instance INSTANCE_NAME \ --stateful-metadata KEY=VALUE[,KEY=VALUE,...] \ [--no-update-instance | --update-instance] \ [--instance-update-minimal-action MINIMAL_ACTION]
Si une configuration par instance existe déjà pour une instance donnée, utilisez la commande
gcloud compute instance-groups managed instance-configs update
avec :gcloud compute instance-groups managed instance-configs update NAME \ --instance INSTANCE_NAME \ [--stateful-metadata KEY=VALUE[,KEY=VALUE,...]] \ [--remove-stateful-metadata KEY[,KEY,...]] \ [--no-update-instance | --update-instance] \ [--instance-update-minimal-action MINIMAL_ACTION]
Remplacez les éléments suivants :
Exemple
Vous disposez d'un cluster de nœuds,
example-cluster
, qui peut fonctionner dans l'un des deux modes suivants :active
oustandby
. Vous définissez le mode individuellement pour chaque VM du cluster à l'aide de métadonnées, par exemple :mode:active
. Vous configurez également le niveau de détail de la journalisation pour chaque nœud à l'aide d'une clé de métadonnéeslogging
pouvant être définie surbasic
ouelaborate
. L'application sur chaque nœud utilise les valeurs des métadonnées de l'instance.Le modèle d'instance définit les métadonnées
mode:active
etlogging:basic
comme valeurs à utiliser par défaut pour toutes les instances. Vous avez définilogging:elaborate
dans une configuration par instance pour la VMnode-12
du cluster. Vous souhaitez maintenant passernode-12
en mode veille et basculer la journalisation surbasic
pour cette VM.Pour mettre l'instance
node-12
en veille et passer sa journalisation en version de base, exécutez la commande suivante :gcloud compute instance-groups managed instance-configs update example-cluster \ --instance node-12 \ --stateful-metadata mode=standby \ --remove-stateful-metadata logging
La commande :
REST
Pour configurer des métadonnées avec état individuellement pour des instances de VM existantes au sein d'un groupe d'instances géré, définissez ou supprimez les métadonnées dans les configurations par instance associées. Ensuite, mettez à jour l'instance pour appliquer la configuration.
Si les configurations par instance n'existent pas encore pour les instances données, utilisez la méthode
instanceGroupManagers.updatePerInstanceConfigs
avec des métadonnées avec état :POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/updatePerInstanceConfigs { "perInstanceConfigs": [ { "name": "INSTANCE_NAME", "preservedState" : { "metadata": { "KEY": "VALUE", ... } }, "fingerprint: "FINGERPRINT" }, ... ] }
Si des configurations par instance existent déjà pour les instances données, utilisez la méthode
instanceGroupManagers.patchPerInstanceConfigs
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "INSTANCE_NAME", "preservedState" : { "metadata": { "KEY": "VALUE", ... } }, "fingerprint: "FINGERPRINT" }, ... ] }
Remplacez les éléments suivants :
Les méthodes
updatePerInstanceConfigs
etpatchPerInstanceConfigs
mettent à jour les configurations par instance spécifiées, mais n'appliquent pas les mises à jour de configuration aux instances de VM associées. Les modifications sont appliquées à une VM lorsque vous la mettez à jour ou recréez l'instance. Pour appliquer les modifications à une VM, vous pouvez appliquer la mise à jour manuellement ou bien utiliser le programme de mise à jour en mode proactif ou opportuniste.Exemple
Vous disposez d'un cluster de nœuds,
example-cluster
, qui peut fonctionner dans l'un des deux modes suivants :active
oustandby
. Vous définissez le mode individuellement pour chaque VM du cluster à l'aide de métadonnées, par exemple :mode:active
. Vous configurez également le niveau de détail de la journalisation pour chaque nœud à l'aide d'une clé de métadonnéeslogging
pouvant être définie surbasic
ouelaborate
. L'application sur chaque nœud utilise les valeurs des métadonnées de l'instance.Le modèle d'instance définit les métadonnées
mode:active
etlogging:basic
comme valeurs à utiliser par défaut pour toutes les instances. Vous avez définilogging:elaborate
dans une configuration par instance pour la VMnode-12
du cluster. Vous souhaitez maintenant passernode-12
en mode veille et basculer la journalisation surbasic
pour cette instance.Pour basculer la VM
node-12
vers la base et la journalisation vers la version de base, corrigez la configuration par instance associée à l'aide de la méthodepatchPerInstanceConfigs
:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "node-12", "preservedState" : { "metadata": { "mode": "standby", "logging": null } } } ] }
La méthode effectue les opérations suivantes :
La mise à jour de la configuration n'est pas encore appliquée à l'instance de VM
node-12
. La mise à jour de la configuration sera appliquée lors de la prochaine recréation ou de la mise à jour de l'instance, ou si vous utilisez la mise à jour automatique proactive.Pour appliquer la mise à jour de la configuration par instance à l'instance de VM
node-12
, appelez la méthodeinstanceGroupManagers.applyUpdatesToInstances
de l'instance :POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/applyUpdatesToInstances { "instances": ["/zones/us-east1-c/instances/node-12"], "minimalAction": "NONE" }
La méthode applique la configuration par instance mise à jour à la VM
node-12
:Commentaires
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
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/03 (UTC).
-