Créer des groupes d'instances non gérés

Un groupe d'instances non géré est un ensemble de machines virtuelles (VM) qui résident dans 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.

Pour les VM qui nécessitent des paramètres de configuration cohérents, vous pouvez utiliser un groupe d'instances géré (MIG) avec 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 des groupes d'instances gérés.

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

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 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.

API

Pour créer un groupe d'instances non géré avec l'API, 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 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.
  • project-id : ID du projet contenant le groupe.

Lorsque vous créez un groupe d'instances non géré avec l'outil de ligne de commande gcloud ou l'API, 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 Cloud Console, 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 l'outil de ligne de commande gcloud, 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.

API

Pour répertorier les groupes d'instances avec l'API, 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 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.

API

Pour supprimer un groupe d'instances non géré avec l'API, 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 l'élément suivant :

  • 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.

Console

  1. Dans 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

API

Pour ajouter des VM à un groupe d'instances non géré avec l'API, 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 l'élément suivant :

  • 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 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.

API

Pour répertorier les VM d'un groupe d'instances non géré avec l'API, 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 l'élément suivant :

  • 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 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.

API

Pour retirer des VM d'un groupe d'instances non géré avec l'API, 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 dans un équilibreur de charge HTTP(S) 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 Google Cloud Console. Vous devez utiliser gcloud ou l'API pour définir --use-serving-port.

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 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 des noms de ports (facultatif), cliquez sur Ajouter un élément, puis saisissez un nom de port et son numéro. 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 l'outil de ligne de commande gcloud, 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.

API

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

  2. Pour ajouter des ports nommés avec l'API, 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.

Étapes suivantes