Regrouper des VM non gérées


Un groupe d'instances non géré est un ensemble d'instances de machines virtuelles (VM) qui résident dans un seul projet, une seule zone, un seul réseau VPC et un seul sous-réseau. Il permet de regrouper des VM nécessitant des réglages ou des paramètres de configuration individuels. Vous pouvez utiliser un groupe d'instances non géré dans le service de backend d'un équilibreur de charge.

Pour les VM qui nécessitent des paramètres de configuration cohérents, vous pouvez utiliser un groupe d'instances géré (MIG) basé sur un modèle d'instance. Si possible, utilisez des groupes d'instances gérés à la place de groupes non gérés. Pour créer un groupe d'instances géré, consultez la page Créer un MIG.

Vous pouvez ajouter l'un ou l'autre des types de groupes d'instances en tant que backend à un équilibreur de charge Google Cloud. Pour plus d'informations, consultez la page Présentation de Cloud Load Balancing. Pour connaître le nombre de VM par groupe d'instances pris en charge par Cloud Load Balancing, consultez la section VM par groupe d'instances.

Pour en savoir plus sur les groupes d'instances, consultez la page Présentation des groupes d'instances.

Avant de commencer

  • Renseignez-vous sur la différence entre les groupes d'instances gérés et non gérés.
  • 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.

    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

Utiliser des groupes d'instances non gérés

Créer des groupes

Contrairement aux groupes d'instances gérés, les groupes d'instances non gérés ne sont que des ensembles de VM distinctes qui ne partagent pas de modèle d'instance commun. Il vous suffit de créer un groupe, puis d'y ajouter des VM individuelles.

Console

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

    Accéder à la page Groupes d'instances

  2. Cliquez sur Créer un groupe d'instances.
  3. Cliquez sur Nouveau groupe d'instances non géré.
  4. Saisissez un nom pour le groupe d'instances non géré.
  5. Sous Emplacement, sélectionnez une région et une zone.
  6. Sélectionnez un réseau et un sous-réseau.
  7. Sous Instances de VM, sélectionnez les VM à ajouter à ce groupe.
  8. Cliquez sur Créer.

gcloud

Pour créer un groupe d'instances non géré, exécutez la commande instance-groups unmanaged create :

gcloud compute instance-groups unmanaged create instance-group-name \
    --zone=zone

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe que vous souhaitez créer.
  • zone : zone dans laquelle vous souhaitez créer le groupe.

REST

Pour créer un groupe d'instances non géré avec REST, envoyez une requête POST à l'aide de la méthode instanceGroups.insert :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

{
   "name": "instance-group-name"
}

Remplacez les éléments suivants :

  • instance-group-name : nom du groupe que vous souhaitez créer.
  • zone : zone dans laquelle vous souhaitez créer le groupe.
  • project-id : ID du projet contenant le groupe.

Lorsque vous créez un groupe d'instances non géré avec Google Cloud CLI ou REST, aucune VM n'y est ajoutée automatiquement. Vous pouvez ajouter manuellement des VM au groupe d'instances non géré.

Répertorier et décrire des groupes

Récupérez la liste des groupes d'instances non gérés existants.

Console

Dans la console Google Cloud, la page Groupes d'instances répertorie les groupes d'instances gérés et non gérés.

Accéder à la page Groupes d'instances

gcloud

Pour répertorier tous les groupes d'instances non gérés de votre projet à l'aide de Google Cloud CLI, exécutez la commande instance-groups unmanaged list :

gcloud compute instance-groups unmanaged list

Pour afficher des informations sur un groupe d'instances non géré spécifique, exécutez la commande instance-groups unmanaged describe :

gcloud compute instance-groups unmanaged describe instance-group-name \
   --zone=zone

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe à décrire.
  • zone : zone du groupe.

REST

Pour répertorier les groupes d'instances avec REST, envoyez une requête GET à l'aide de la méthode instanceGroups.list :

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

Pour obtenir des informations sur un groupe d'instances non géré spécifique avec l'API, envoyez une requête GET à l'aide de la méthode instanceGroups.get :

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe à décrire.
  • zone : zone du groupe.
  • project-id : ID du projet contenant le groupe.

Supprimer des groupes

Contrairement à un groupe d'instances géré, supprimer un groupe d'instances non géré ne supprime aucune des VM du groupe. Supprimer un groupe d'instances non géré ne supprime que le regroupement logique des VM.

Vous ne pouvez pas supprimer un groupe d'instances s'il s'agit d'un backend d'un équilibreur de charge Google Cloud. Vous devez d'abord supprimer le backend du service de backend.

Console

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

    Accéder à la page Groupes d'instances

  2. Sélectionnez un ou plusieurs groupes d'instances non gérés dans la liste.
  3. Cliquez sur Supprimer pour supprimer les groupes. Les groupes sont supprimés, mais pas les VM qu'ils contiennent.

gcloud

Pour supprimer un groupe d'instances non géré, exécutez la commande instance-groups unmanaged delete :

gcloud compute instance-groups unmanaged delete instance-group-name \
    --zone=zone

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe que vous souhaitez supprimer.
  • zone : zone du groupe.

REST

Pour supprimer un groupe d'instances non géré avec REST, envoyez une requête DELETE à l'aide de la méthode instanceGroups.delete :

DELETE https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Remplacez les éléments suivants :

  • instance-group-name : nom du groupe que vous souhaitez supprimer.
  • zone : zone du groupe.
  • project-id : ID du projet contenant le groupe.

Appartenance à un groupe

Ajouter des VM

Une fois que vous avez créé un groupe d'instances non géré, vous pouvez ajouter des VM à ce groupe. Toutefois, vous ne pouvez regrouper les VM que si la première ou la seule interface réseau (nic0) de chaque VM est associée au même réseau VPC. Vous pouvez ajouter jusqu'à 2 000 VM à un groupe d'instances non géré. Si vous souhaitez ajouter plus de 2 000 VM au groupe, contactez l'assistance.

Console

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

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe d'instances auquel vous souhaitez ajouter des VM. La page qui s'ouvre affiche les propriétés du groupe d'instances et la liste des VM qui en font déjà partie.
  3. Cliquez sur Modifier pour modifier le groupe d'instances non géré.
  4. Sur la page Instances de VM, sélectionnez une ou plusieurs VM existantes à ajouter au groupe. Vous ne pouvez sélectionner que les VM situées dans la même zone, le même réseau VPC et le même sous-réseau que les VM existantes.
  5. Cliquez sur Enregistrer pour ajouter les nouvelles VM au groupe.

gcloud

Pour ajouter des instances à un groupe d'instances non géré, exécutez la commande instance-groups unmanaged add-instances :

gcloud compute instance-groups unmanaged add-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe auquel vous souhaitez ajouter des VM.
  • zone : zone du groupe.
  • list-of-VM-names : liste de VM, séparées par une virgule, situées dans la même zone, le même réseau VPC et le même sous-réseau

REST

Pour ajouter des VM à un groupe d'instances non géré, envoyez une requête POST à l'aide de la méthode instanceGroups.addInstances :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/addInstances

   {
      "instances": [
         {
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
         ....
         }
      ]
   }

Remplacez les éléments suivants :

  • instance-group-name : nom du groupe auquel vous souhaitez ajouter des VM.
  • zone : zone du groupe.
  • project-id : ID du projet contenant le groupe.
  • instance-1-name et instance-2-name : noms des VM, situées dans la même zone, le même réseau VPC et le même sous-réseau, que vous souhaitez ajouter au groupe.

Répertorier les VM

Vous pouvez récupérer la liste des VM membres d'un groupe d'instances non géré.

Console

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

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe d'instances non géré que vous souhaitez afficher. Une page contenant la liste des instances incluses dans le groupe s'affiche.

gcloud

Pour répertorier les VM d'un groupe d'instances non géré, exécutez la commande instance-groups unmanaged list-instances :

gcloud compute instance-groups unmanaged list-instances instance-group-name \
   --zone=zone

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe dont vous souhaitez répertorier les membres.
  • zone : zone du groupe.

REST

Pour répertorier les VM d'un groupe d'instances non géré, envoyez une requête POST à l'aide de la méthode instanceGroups.listInstances :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/listInstances

Remplacez les éléments suivants :

  • instance-group-name : nom du groupe dont vous souhaitez répertorier les membres.
  • zone : zone du groupe.
  • project-id : ID du projet contenant le groupe.

Retirer des VM

Vous pouvez retirer des VM d'un groupe d'instances non géré. Retirer une VM du groupe d'instances n'entraîne pas sa suppression.

Console

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

    Accéder à la page Groupes d'instances

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe d'instances duquel vous souhaitez retirer des VM. La page qui s'ouvre affiche les propriétés du groupe d'instances ainsi que la liste des VM qui en font partie.
  3. Dans la liste, sélectionnez une ou plusieurs VM que vous souhaitez retirer du groupe.
  4. Cliquez sur Retirer du groupe. Les VM retirées d'un groupe d'instances non géré continuent d'exister et de s'exécuter, sauf si vous les arrêtez ou les supprimez.

gcloud

Pour retirer des VM d'un groupe d'instances non géré, exécutez la commande instance-groups unmanaged remove-instances :

gcloud compute instance-groups unmanaged remove-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe contenant les instances à supprimer.
  • zone : zone du groupe.
  • list-of-VM-names : liste de VM, séparées par une virgule, que vous souhaitez retirer du groupe.

REST

Pour retirer des VM d'un groupe d'instances non géré, envoyez une requête POST à l'aide de la méthode instanceGroups.removeInstances. Vous pouvez supprimer plusieurs VM simultanément, comme illustré ci-dessous :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/removeInstances
{
    "instances": [
        {
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
        ....
        }
    ]
}

Remplacez l'élément suivant :

  • instance-group-name : nom du groupe contenant les instances à supprimer.
  • zone : zone du groupe.
  • project-id : ID du projet contenant le groupe.
  • instance-1-name et instance-2-name : noms des VM que vous souhaitez dissocier du groupe.

Utiliser des ports nommés

Les ports nommés sont des paires clé-valeur qui représentent le nom et le numéro d'un port. Le nom de port représente le nom d'un service ou d'une application. Le numéro de port représente le port sur lequel le service ou l'application s'exécute.

Les ports nommés sont utilisés par Cloud Load Balancing. Les équilibreurs de charge qui agissent en tant que proxys s'abonnent à un seul port nommé dans leur configuration de service de backend. Le nom du port est converti en un numéro de port en fonction du mappage de ports nommés de chaque backend du groupe d'instances.

Par exemple, un service de backend peut s'abonner à un port nommé http-port. Le groupe d'instances backend peut avoir un port nommé http-port:80. Le groupe d'instances backend indique à l'équilibreur de charge d'envoyer le trafic à une VM du groupe sur le port 80 via un protocole (par exemple, TCP). Le protocole est défini dans le service de backend de l'équilibreur de charge.

Les ports nommés sont des métadonnées simples utilisées par les équilibreurs de charge proxy. Ils ne permettent de contrôler ni les ressources réseau, ni le pare-feu dans Compute Engine.

Plusieurs numéros de ports pour un port nommé

Vous pouvez attribuer plusieurs ports à chaque nom de service. Vous pouvez également attribuer plusieurs noms de service à chaque port.

Gardez à l'esprit les points suivants :

  • Le trafic est équilibré entre tous les ports ayant le même nom de port.
  • Un service de backend donné ne peut transférer le trafic que vers un seul port nommé à la fois.
  • Si vous utilisez plusieurs numéros de port pour un port nommé, ils doivent tous correspondre à la même application.

    Par exemple, http:80,http:8080 fonctionne, mais http:80,http:443 ne fonctionne pas, car le port 80 n'est généralement pas compatible avec le protocole TLS.

Vous pouvez attribuer plusieurs ports nommés dans un groupe d'instances. Prenons l'exemple d'un service de backend qui s'abonne au port nommé http-port et qui possède deux groupes d'instances backend :

  • instance-group-a avec le port nommé http-port:80
  • instance-group-b avec le port nommé http-port:79

Ce service de backend envoie du trafic au port 80 pour les VM dans instance-group-a et au port 79 pour les VM dans instance-group-b.

Lorsque vous ajoutez le même groupe d'instances à plusieurs services de backend (pour plusieurs équilibreurs de charge) et que le groupe d'instances diffuse différents ports sur chaque équilibreur de charge, n'ajoutez pas tous les numéros de port à un seul port nommé. Créez plutôt un port nommé unique et mappez-le à un ensemble de ports que chaque service de backend doit servir.

Par exemple, supposons que vous ayez trois applications, chacune avec son propre équilibreur de charge. Chaque application possède son propre numéro de port : 81 pour app1, 82 pour app2 et 83 pour app3. En supposant que les trois services de backend utilisent un groupe d'instances commun, attribuez les ports nommés de ce groupe d'instances au format [app1:81, app2:82, app3:83].

Ports nommés et vérifications d'état

Pour qu'un port nommé avec plusieurs numéros de port sur un service de backend fonctionne sur un équilibreur de charge d'application externe ou interne, la vérification de l'état doit comporter l'option --use-serving-port plutôt qu'un numéro de port spécifique. Cette option n'est pas disponible dans la console Google Cloud. Pour définir --use-serving-port, vous devez utiliser la Google Cloud CLI ou l'API.

Supposons par exemple que vous ayez une application qui équilibre la charge du trafic sur trois ports différents (81, 82, 83) sur le même service de backend avec un seul groupe d'instances. Vous pouvez attribuer les ports de ces groupes d'instances au format [app:81, 82, 83]. Dans ce scénario, la vérification d'état doit comporter l'option --use-serving-port.

Pour en savoir plus, consultez la documentation sur la vérification de l'état de l'équilibrage de charge.

Ports nommés et règles de pare-feu

Les ports nommés n'entraînent pas la création ni la modification des règles de pare-feu Google Cloud. Pour autoriser le trafic vers les VM de backend, vous devez toujours créer les règles de pare-feu nécessaires.

Ports nommés et services de backend

Outre la configuration du groupe d'instances, vous devez également configurer le service de backend. Par exemple, supposons que vous définissiez le port nommé sur un groupe d'instances avec le nom my-service-name et le port 8888 :

gcloud compute instance-groups set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

Vous devez ensuite faire référence au port nommé dans la configuration du service de backend, avec le --port-name sur le service de backend défini sur my-service-name :

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

Créer des ports nommés

Console

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

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

  2. Dans la colonne Nom de la liste, cliquez sur le nom du groupe d'instances dans lequel vous souhaitez spécifier des ports nommés. La page qui s'ouvre affiche les propriétés du groupe.
  3. Cliquez sur Modifier pour modifier le groupe d'instances non géré.
  4. Dans la section Mappage de port, cliquez sur Ajouter un port, puis saisissez le nom et le numéro d'un port. Ajoutez ou supprimez d'autres ports nommés si nécessaire.
  5. Cliquez sur Enregistrer afin de mettre à jour la liste des ports nommés pour le groupe d'instances non géré.

gcloud

Pour ajouter des ports nommés à un groupe d'instances non géré, utilisez la commande instance-groups unmanaged set-named-ports :

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=port-name:port-number,...

Pour répertorier les ports nommés dans un groupe d'instances non géré, utilisez la commande instance-groups unmanaged get-named-ports :

Définissez un ou plusieurs ports nommés à l'aide de la commande set-named-ports :

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports PORT_NAME:PORT,PORT_NAME:PORT

Exemple :

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports name1:80,name2:8080

Pour attribuer plusieurs ports à chaque nom de service, ou plusieurs noms à chaque service, créez plusieurs entrées pour chaque nom ou port. Par exemple, si les ports 10, 20 et 80 sont pour la même application, vous pouvez attribuer name1 à tous ces ports. Vous pouvez également attribuer deux noms, name2 et name3, au port 8080. Enfin, vous pouvez attribuer le port 9000 à name4, comme dans l'exemple suivant :

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

Pour supprimer tous les ports nommés d'un groupe d'instances non géré avec Google Cloud CLI, exécutez la commande instance-groups unmanaged set-named-ports avec une liste vide de ports nommés :

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=""

Dans tous les exemples ci-dessus, remplacez les éléments suivants s'ils sont présents :

  • instance-group-name : nom du groupe d'instances.
  • zone : zone du groupe.
  • port-name et port-number : nom et numéro de port correspondant à un mappage entre un nom et un numéro de port. Vous pouvez spécifier plusieurs mappages en les séparant par des virgules. Par exemple, port-one:80,port-two:8080 est une liste valide de ports nommés.

REST

  1. Décrivez le groupe d'instances et notez la valeur de fingerprint.

  2. Pour ajouter des ports nommés, envoyez une requête POST à l'aide de la méthode instanceGroups.setNamedPorts. Si vous souhaitez supprimer tous les ports nommés, définissez namedPorts sur une liste vide.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/setNamedPorts
    
    {
        "fingerprint": "fingerprint",
        "namedPorts": [
            {
            "name": "port-name",
            "port": port-number
            },
            {
            "name": "port-name",
            "port": port-number
            },
            ....
        ]
    }
    

    Remplacez l'élément suivant :

    • instance-group-name : nom du groupe d'instances.
    • zone : zone du groupe.
    • project-id : ID du projet contenant le groupe.
    • port-name et port-number : nom et numéro de port correspondant à un mappage entre un nom et un numéro de port.
    • fingerprint : empreinte obtenue à l'étape précédente.

Étape suivante