Cette page explique comment ajouter un groupe d'instances géré (MIG) existant au service de backend ou au pool cible d'un équilibreur de charge.
Un équilibreur de charge répartit le trafic des utilisateurs, ce qui permet de réduire le risque de rencontrer des problèmes de performances dans votre application. Cloud Load Balancing diffuse le trafic à l'aide de groupes d'instances, gérés ou non. Selon le type d'équilibreur de charge que vous utilisez, vous pouvez ajouter des groupes d'instances à un service de backend ou à un pool cible.
Pour en savoir plus sur la création d'un type spécifique d'équilibreur de charge avec un backend de MIG, consultez la documentation de Cloud Load Balancing.
Avant de commencer
-
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Ajouter un groupe d'instances géré à un service de backend
Un service de backend est nécessaire pour créer la plupart des types d'équilibreurs de charge.
Un service de backend peut contenir plusieurs backends. Un groupe d'instances est un type de backend. Les instances du groupe d'instances répondent au trafic provenant de l'équilibreur de charge. Le service de backend sait ainsi quelles instances il peut exploiter, quel volume de trafic ces dernières peuvent traiter et quel volume elles traitent actuellement. En outre, le service de backend vérifie l'intégrité des instances et n'envoie pas de nouvelles connexions aux instances défectueuses.
Suivez ces instructions pour ajouter un groupe d'instances géré à un service de backend.
Console
- Accédez à la page "Équilibrage de charge" dans Google Cloud Console.
- Cliquez sur le nom du service de backend auquel vous ajoutez le groupe d'instances géré.
- Cliquez sur Modifier.
- Cliquez sur +Ajouter un backend.
- Sélectionnez le groupe d'instances que vous souhaitez ajouter.
- Modifiez les paramètres facultatifs que vous souhaitez modifier.
- Enregistrez les modifications.
gcloud
Exécutez la commande add-backend
:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \ --balancing-mode=BALANCING_MODE
La compatibilité du mode d'équilibrage varie selon le type d'équilibreur de charge. Pour obtenir la liste complète, consultez la section Mode d'équilibrage disponible pour chaque équilibreur de charge.
Des paramètres supplémentaires sont requis en fonction du mode d'équilibrage du groupe d'instances géré. Pour en savoir plus, consultez la section dédiée à la commande add-backend
dans le SDK.
REST
Pour ajouter un service de backend à l'aide de l'API REST, consultez les informations sur backendServices.
Limites
L'équilibrage de charge avec un MIG régional n'est pas compatible avec la capacité cible max-rate
dans les modes d'équilibrage RATE
et UTILIZATION
. Pour en savoir plus sur les consignes d'utilisation de chaque équilibreur de charge, consultez la page Modes d'équilibrage et paramètres de capacité cible.
Ajouter un groupe d'instances géré à un pool cible
Un pool cible est un objet qui contient une ou plusieurs instances de machines virtuelles. Il est utilisé dans des équilibreurs de charge réseau passthrough externes, où l'équilibreur de charge transfère des requêtes utilisateur vers le pool cible associé. Les instances qui appartiennent à ce pool cible traitent ces requêtes et renvoient une réponse. Vous pouvez ajouter un groupe d'instances géré à un pool cible pour que, lorsque des instances sont ajoutées ou supprimées dans ce groupe, le pool soit lui aussi automatiquement mis à jour avec les modifications.
Le pool cible dans lequel vous ajoutez un groupe d'instances géré doit avoir été créé au préalable. Pour en savoir plus, consultez la section Ajouter un pool cible.
Pour ajouter un groupe d'instances géré existant à un pool cible, suivez les instructions ci-dessous. Ce processus permet d'ajouter toutes les instances de VM faisant partie du groupe géré au pool cible.
Console
- Accédez à la page "Pools cibles" de la console Google Cloud.
- Cliquez sur le pool cible auquel vous souhaitez ajouter le groupe d'instances.
- Cliquez sur le bouton Modifier.
- Faites défiler l'écran vers le bas jusqu'à la section Instances de VM, puis cliquez sur Sélectionner des groupes d'instances.
- Sélectionnez un groupe d'instances dans le menu déroulant.
- Enregistrez les modifications.
gcloud
Exécutez la commande set-target-pools
:
gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \ --target-pools TARGET_POOL,..
où :
INSTANCE_GROUP
est le nom du groupe d'instances.TARGET_POOL,..
est le nom du ou des pools cibles auxquels vous souhaitez ajouter le groupe d'instances.
REST
Appelez la méthode setTargetPools
pour un MIG régional ou un MIG zonal.
Par exemple :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools
où :
PROJECT_ID
est l'ID de projet de cette requête.REGION
est la région du groupe d'instances.INSTANCE_GROUP
est le nom du groupe d'instances.
Le corps de la requête doit contenir une liste d'URI pointant vers les pools cibles auxquels vous souhaitez ajouter le groupe. Par exemple :
{ "targetPools": [ "regions/us-central1/targetPools/example-targetpool-1", "regions/us-central1/targetPools/example-targetpool-2" ] }
Attribuer des ports nommés à des groupes d'instances géré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, maishttp: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
- Dans la console Google Cloud, accédez à la page Groupes d'instances.
- 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.
- Cliquez sur Modifier pour modifier le groupe d'instances géré.
- Dans la section Mappage de port, cliquez sur Ajouter un port, puis saisissez le nom de port souhaité, ainsi que les numéros de port que vous voulez associer à ce nom. Si vous avez besoin d'un plus grand nombre d'entrées, cliquez à nouveau sur Ajouter un port.
- Cliquez sur Enregistrer pour enregistrer les modifications et appliquer les ports nommés aux instances du groupe géré.
gcloud
Pour les groupes d'instances gérés, définissez un ou plusieurs ports nommés à l'aide de la commande instance-groups managed set-named-ports
.
Pour les groupes non gérés, utilisez la commande instance-groups set-named-ports
.
gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports PORT_NAME:PORT,PORT_NAME:PORT
Par exemple :
gcloud compute instance-groups managed 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 managed set-named-ports INSTANCE_GROUP \ --named-ports name1:10,name1:20,name1:80,\ name2:8080,name3:8080,\ name4:9000
Vous pouvez vérifier les attributions des ports nommés d'un groupe d'instances géré à l'aide de la commande get-named-ports
:
gcloud compute instance-groups managed get-named-ports INSTANCE_GROUP
NAME PORT name1 10 name1 20 name1 80 name2 8080 name3 8080 name4 9000
REST
L'API instanceGroupManagers
ne propose pas de méthode d'API setNamedPorts
. Utilisez plutôt l'API instanceGroups
pour effectuer cette tâche.
Envoyez une requête à l'API instanceGroups
en incluant le nom du groupe d'instances. Récupérez la valeur fingerprint
actuelle associée au groupe en obtenant des informations sur un groupe spécifique.
Incluez la valeur fingerprint
et une ou plusieurs paires de valeurs namedPorts
dans le corps de la requête :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroups/INSTANCE_GROUP/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "PORT_NAME", "port": PORT_NUMBER }, { "name": "PORT_NAME", "port": PORT_NUMBER } ] }
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 :
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 8080 }, { "name": "name2", "port": 9000 } ] }
Pour attribuer plusieurs ports à chaque nom de service, créez plusieurs entrées pour ce nom de service. Par exemple, vous pouvez attribuer les ports 10
, 20
et 80
à name1
. Affectez également le port 8080
au nom name2
.
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 10 }, { "name": "name1", "port": 20 } { "name": "name1", "port": 80 } { "name": "name2", "port": 8080 } { "name": "name3", "port": 80 } { "name": "name4", "port": 8080 } ] }
Pour répertorier les ports nommés déjà attribués à un groupe d'instances géré, envoyez une requête GET
qui pointe vers le groupe :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP
Étape suivante
- Suivez le tutoriel Utiliser l'équilibrage de charge pour les applications à disponibilité élevée.
- Créez un modèle d'instance que vous pourrez utiliser pour un groupe d'instances géré.
- Créez un groupe d'instances géré régional.
- Activez l'autoréparation pour votre groupe d'instances géré.
- Activez l'autoscaling pour votre groupe d'instances géré.