Ce guide s'appuie sur un exemple pour vous apprendre à configurer le basculement pour un équilibreur de charge passthrough interne Google Cloud. Avant de suivre ce guide, familiarisez-vous avec les points suivants :
- Concepts de l'équilibreur de charge réseau passthrough interne
- Concepts de basculement pour les équilibreurs de charge réseau passthrough internes
- Présentation des règles de pare-feu
- Concepts de la vérification de l'état
Autorisations
Pour suivre ce guide, vous devez créer des instances et modifier un réseau dans un projet. Vous devez être propriétaire ou éditeur du projet, ou disposer de tous les rôles IAM Compute Engine suivants :
Tâche | Rôle requis |
---|---|
Créer des réseaux, des sous-réseaux et des composants de l'équilibreur de charge | Administrateur réseau |
Ajouter et supprimer des règles de pare-feu | Administrateur de sécurité |
Créer des instances | Administrateur d'instances Compute |
Pour en savoir plus, consultez les guides suivants :
- Access control (Contrôle des accès)
- Conditions IAM
Préparation
Ce guide vous explique comment configurer et tester un équilibreur de charge réseau passthrough interne qui utilise le basculement. La procédure décrite dans cette section explique comment configurer les éléments suivants :
- Un exemple de réseau VPC avec des sous-réseaux personnalisés
- Des règles de pare-feu autorisant les connexions entrantes aux VM de backend
- Des VM de backend :
- Un backend principal dans un groupe d'instances non géré dans la zone
us-west1-a
- Un backend de basculement dans un groupe d'instances non géré dans la zone
us-west1-c
- Un backend principal dans un groupe d'instances non géré dans la zone
- Une VM cliente pour tester les connexions et observer le comportement du basculement
- Les composants de l'équilibreur de charge réseau passthrough interne suivants :
- Vérification d'état du service de backend
- Service de backend interne dans la région
us-west1
pour gérer la distribution des connexions entre les VM de backend - Règle de transfert interne et adresse IP interne pour l'interface de l'équilibreur de charge
L'architecture de cet exemple se présente comme suit :
Dans cet exemple, des groupes d'instances non gérés sont utilisés à la fois pour le backend principal et le backend de basculement. Pour en savoir plus, consultez la page Groupes d'instances compatibles.
Configurer un réseau, une région et un sous-réseau
Cet exemple utilise le réseau VPC, la région et le sous-réseau suivants :
Réseau : le réseau est un réseau VPC en mode personnalisé nommé
lb-network
.Région : la région est
us-west1
.Sous-réseau : le sous-réseau
lb-subnet
utilise la plage d'adresses IP10.1.2.0/24
.
Pour créer les exemples de réseau et de sous-réseaux, procédez comme suit :
Console
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Saisissez le nom
lb-network
.Dans la section Sous-réseaux :
- Définissez Mode de création du sous-réseau sur Personnalisé.
- Dans la section Nouveau sous-réseau, saisissez les informations suivantes :
- Nom :
lb-subnet
- Région :
us-west1
- Plage d'adresses IP :
10.1.2.0/24
- Cliquez sur OK.
- Nom :
Cliquez sur Créer.
gcloud
Créez le réseau VPC personnalisé :
gcloud compute networks create lb-network --subnet-mode=custom
Créez un sous-réseau sur le réseau
lb-network
, dans la régionus-west1
:gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Envoyez une requête POST
à la méthode networks.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/networks
{ "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
Envoyez une requête POST
à la méthode subnetworks.insert
. Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/subnetworks
{ "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
Configurer les règles de pare-feu
Cet exemple utilise les règles de pare-feu suivantes :
fw-allow-lb-subnet
: règle d'entrée applicable à toutes les cibles du réseau VPC, autorisant tout le trafic provenant de sources comprises dans la plage10.1.2.0/24
. Cette règle autorise le trafic entrant depuis n'importe quelle source du sous-réseaulb-subnet
vers les instances (VM) faisant l'objet d'un équilibrage de charge.fw-allow-ssh
: règle d'entrée appliquée aux instances faisant l'objet d'un équilibrage de charge, autorisant la connectivité SSH entrante sur le port TCP 22 à partir de n'importe quelle adresse. Vous pouvez choisir une plage d'adresses IP source plus restrictive pour cette règle. Par exemple, vous pouvez spécifier les plages d'adresses IP des systèmes à partir desquels vous prévoyez de lancer des sessions SSH. Cet exemple utilise le tag cibleallow-ssh
pour identifier les VM auxquelles la règle de pare-feu s'applique.fw-allow-health-check
: règle d'entrée, applicable aux instances faisant l'objet d'un équilibrage de charge, qui autorise le trafic issu des systèmes de vérification d'état Google Cloud (130.211.0.0/22
et35.191.0.0/16
). Cet exemple utilise le tag cibleallow-health-check
pour identifier les instances auxquelles la règle doit s'appliquer.
Sans ces règles de pare-feu, la règle d'entrée interdite par défaut bloque le trafic entrant vers les instances backend.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Cliquez sur Créer une règle de pare-feu et saisissez les informations suivantes pour créer la règle permettant d'autoriser le trafic de sous-réseau :
- Nom :
fw-allow-lb-subnet
- Réseau :
lb-network
- Priorité :
1000
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : toutes les instances du réseau
- Filtre source : Plages IPv4
- Plages IPv4 sources :
10.1.2.0/24
- Protocoles et ports : tout autoriser
- Nom :
Cliquez sur Créer.
Cliquez de nouveau sur Créer une règle de pare-feu pour créer la règle autorisant les connexions SSH entrantes :
- Nom :
fw-allow-ssh
- Réseau :
lb-network
- Priorité :
1000
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : tags cibles spécifiés
- Tags cibles :
allow-ssh
- Filtre source : Plages IPv4
- Plages IPv4 sources :
0.0.0.0/0
- Protocoles et ports : choisissez Protocoles et ports spécifiés, puis saisissez
tcp:22
.
- Nom :
Cliquez sur Créer.
Cliquez une troisième fois sur Créer une règle de pare-feu pour créer la règle autorisant les vérifications d'état Google Cloud :
- Nom :
fw-allow-health-check
- Réseau :
lb-network
- Priorité :
1000
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : tags cibles spécifiés
- Tags cibles :
allow-health-check
- Filtre source : Plages IPv4
- Plages IPv4 sources :
130.211.0.0/22
et35.191.0.0/16
- Protocoles et ports : tout autoriser
- Nom :
Cliquez sur Créer.
gcloud
Créez la règle de pare-feu
fw-allow-lb-subnet
pour autoriser la communication depuis le sous-réseau :gcloud compute firewall-rules create fw-allow-lb-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
Créez la règle de pare-feu
fw-allow-ssh
pour autoriser la connectivité SSH aux VM avec le tag réseauallow-ssh
. Lorsque vous omettezsource-ranges
, Google Cloud interprète la règle comme désignant n'importe quelle source.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Créez la règle
fw-allow-health-check
pour autoriser les vérifications d'état Google Cloud.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
API
Créez la règle de pare-feu fw-allow-lb-subnet
en envoyant une requête POST
à la méthode firewalls.insert
. Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Créez la règle de pare-feu fw-allow-ssh
en envoyant une requête POST
à la méthode firewalls.insert
. Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Créez la règle de pare-feu fw-allow-health-check
en envoyant une requête POST
à la méthode firewalls.insert
. Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Créer des VM de backend et des groupes d'instances
À cette étape, vous allez créer les VM de backend et les groupes d'instances non gérés :
- Le groupe d'instances
ig-a
dansus-west1-a
est un backend principal avec deux VM :vm-a1
vm-a2
- Le groupe d'instances
ig-c
dansus-west1-c
est un backend de basculement avec deux VM :vm-c1
vm-c2
Le backend principal et le backend de basculement sont placés dans des zones distinctes pour plus de clarté et pour gérer le basculement si une zone tombe panne.
Les VM principales et les VM de secours sont configurées pour exécuter un serveur Web Apache sur les ports TCP 80 et 443. Une adresse IP interne est attribuée à chaque VM dans le sous-réseau lb-subnet
pour l'accès client et une adresse IP externe (publique) éphémère pour l'accès SSH.
Pour plus d'informations sur la suppression des adresses IP externes, consultez la section Supprimer les adresses IP externes des VM de backend.
Par défaut, Apache est configuré pour se lier à n’importe quelle adresse IP. Les équilibreurs de charge réseau passthrough internes transmettent les paquets en conservant l'adresse IP de destination.
Vérifiez que le logiciel serveur exécuté sur les VM principales et les VM de secours écoute sur l'adresse IP de la règle de transfert interne de l'équilibreur de charge. Si vous configurez plusieurs règles de transfert internes, assurez-vous que votre logiciel écoute l'adresse IP interne associée à chacune d'elles. L'adresse IP de destination d'un paquet distribué à une VM de backend par un équilibreur de charge passthrough interne est l'adresse IP interne de la règle de transfert.
Pour des raisons de simplicité, toutes les VM principales et les VM de secours exécutent Debian GNU/Linux 10.
Console
Créer des VM de backend
Dans Google Cloud Console, accédez à la page Instances de VM.
Répétez les étapes ci-dessous pour créer quatre VM, en utilisant les combinaisons de noms et de zones suivantes :
- Nom :
vm-a1
, zone :us-west1-a
- Nom :
vm-a2
, zone :us-west1-a
- Nom :
vm-c1
, zone :us-west1-c
- Nom :
vm-c2
, zone :us-west1-c
- Nom :
Cliquez sur Créer une instance.
Définissez le Nom comme indiqué à l'étape 2.
Dans le champ Région, choisissez
us-west1
, puis sélectionnez une zone comme indiqué à l'étape 2.Dans la section Disque de démarrage, assurez-vous que l'image sélectionnée est Debian GNU/Linux 10 (buster). Si nécessaire, cliquez sur Sélectionner pour modifier l'image.
Cliquez sur Options avancées.
Cliquez sur Mise en réseau et configurez les champs suivants :
- Pour Tags réseau, saisissez
allow-health-check
etallow-ssh
. - Pour Interfaces réseau, sélectionnez l'option suivante :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Réseau :
- Pour Tags réseau, saisissez
Cliquez sur Gestion. Saisissez le script suivant dans le champ Script de démarrage. Le contenu du script est identique pour les quatre VM :
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Cliquez sur Créer.
Créer des groupes d'instances
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Répétez les étapes ci-dessous pour créer deux groupes d'instances non gérés, comportant chacun deux VM, à l'aide des combinaisons suivantes :
- Groupe d'instances :
ig-a
, zone :us-west1-a
, VM :vm-a1
etvm-a2
- Groupe d'instances :
ig-c
, zone :us-west1-c
, VM :vm-c1
etvm-c2
- Groupe d'instances :
Cliquez sur Créer un groupe d'instances.
Cliquez sur Nouveau groupe d'instances non géré.
Définissez le Nom comme indiqué à l'étape 2.
Dans la section Emplacement, sélectionnez
us-west1
pour la région, puis choisissez une zone comme indiqué à l'étape 2.Pour Réseau, saisissez la valeur suivante :
lb-network
.Pour Sous-réseau, saisissez la valeur suivante :
lb-subnet
.Dans la section Instances de VM, ajoutez les VM comme indiqué à l'étape 2.
Cliquez sur Créer.
gcloud
Créez quatre VM en exécutant la commande suivante quatre fois, en utilisant ces quatre combinaisons pour
VM_NAME
etZONE
. Le contenu du script est identique pour les quatre VM.VM_NAME
:vm-a1
etZONE
:us-west1-a
VM_NAME
:vm-a2
etZONE
:us-west1-a
VM_NAME
:vm-c1
etZONE
:us-west1-c
VM_NAME
:vm-c2
etZONE
:us-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Créez les deux groupes d'instances non gérés dans chaque zone :
gcloud compute instance-groups unmanaged create ig-a \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-c \ --zone=us-west1-c
Ajoutez les VM aux groupes d'instances appropriés :
gcloud compute instance-groups unmanaged add-instances ig-a \ --zone=us-west1-a \ --instances=vm-a1,vm-a2 gcloud compute instance-groups unmanaged add-instances ig-c \ --zone=us-west1-c \ --instances=vm-c1,vm-c2
API
Créez quatre VM de backend en envoyant quatre requêtes POST
à la méthode instances.insert
:
Pour les quatre VM, utilisez les noms et zones de VM suivants :
VM_NAME
:vm-a1
etZONE
:us-west1-a
VM_NAME
:vm-a2
etZONE
:us-west1-a
VM_NAME
:vm-c1
etZONE
:us-west1-c
VM_NAME
:vm-c2
etZONE
:us-west1-c
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.ZONE
: la zone de l'instance.DEBIAN_IMAGE_NAME
: nom de l'image Debian pour l'instance. Vous pouvez obtenir la valeurDEBIAN_IMAGE_NAME
actuelle en exécutant la commandegcloud
suivante :gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE
/instances
{ "name": "VM_NAME", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "VM_NAME", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Créez deux groupes d'instances en envoyant une requête POST
à la méthode instanceGroups.insert
. Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups
{ "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-c", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Ajoutez des instances à chaque groupe d'instances en envoyant une requête POST
à la méthode instanceGroups.addInstances
. Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups/ig-a/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-c/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2" } ] }
Créer une VM cliente
Cet exemple crée une VM cliente (vm-client
) dans la même région que l'équilibreur de charge. Le client est utilisé pour illustrer le fonctionnement du basculement.
Console
Dans la console Google Cloud, accédez à la page Instances de VM.
Cliquez sur Créer une instance.
Définissez le paramètre Nom sur
vm-client
.Définissez le paramètre Zone sur
us-west1-a
.Cliquez sur Options avancées.
Cliquez sur Mise en réseau et configurez les champs suivants :
- Pour Tags réseau, saisissez
allow-ssh
. - Pour Interfaces réseau, sélectionnez l'option suivante :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Réseau :
- Pour Tags réseau, saisissez
Cliquez sur Créer.
gcloud
La VM cliente peut se trouver dans n'importe quelle zone de la même région que l'équilibreur de charge, et utiliser n'importe quel sous-réseau de cette région. Dans cet exemple, le client se situe dans la zone us-west1-a
et utilise le même sous-réseau que les VM principales et les VM de secours.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Envoyez une requête POST
à la méthode instances.insert
.
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.DEBIAN_IMAGE_NAME
: nom de l'image Debian pour l'instance. Vous pouvez obtenir la valeurDEBIAN_IMAGE_NAME
actuelle en exécutant la commandegcloud
suivante :gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instances
{ "name": "vm-client", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Configurer les composants de l'équilibreur de charge
Ces étapes permettent de configurer tous les composants de l'équilibreur de charge passthrough interne, en commençant par la vérification d'état et le service de backend, puis en passant aux composants d'interface :
Vérification de l'état : cet exemple utilise la vérification d'état HTTP qui recherche simplement une réponse HTTP
200
(OK). Pour plus d'informations, consultez la section sur les vérifications d'état de la présentation de l'équilibreur de charge réseau passthrough interne.Service de backend : étant donné que l'exemple transmet le trafic HTTP via l'équilibreur de charge, la configuration spécifie TCP, et non UDP. Pour illustrer le basculement, ce service de backend a un taux de basculement de
0.75
.Règle de transfert : cet exemple crée une seule règle de transfert interne.
Adresse IP interne : dans cet exemple, nous indiquons une adresse IP interne,
10.1.2.99
, lors de la création de la règle de transfert.
Console
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
- Pour Proxy ou passthrough, sélectionnez Équilibreur de charge passthrough, puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Interne, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Définissez le paramètre Nom sur
be-ilb
. - Définissez Région sur
us-west1
. - Définissez le paramètre Réseau sur
lb-network
. - Cliquez sur Configuration du backend et apportez les modifications suivantes :
- Sous Backends, dans la section Nouvel élément, sélectionnez le groupe d'instances
ig-a
. Vérifiez que la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde n'est pas cochée. Cliquez sur OK. - Cliquez sur Ajouter le backend. Dans la section Nouvel élément qui s'affiche, sélectionnez le groupe d'instances
ig-c
. Cochez la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde. Cliquez sur OK. - Sous Vérification d'état, sélectionnez Créer une autre vérification d'état, saisissez les informations suivantes, puis cliquez sur Enregistrer et continuer :
- Nom :
hc-http-80
- Protocole :
HTTP
- Port :
80
- Protocole de proxy :
NONE
- Chemin de requête :
/
Notez que lorsque vous créez un équilibreur de charge à l'aide de la console Google Cloud, la vérification de l'état est globale. Si vous souhaitez créer une vérification de l'état régionale, utilisezgcloud
ou l'API.
- Nom :
- Cliquez sur Configurations avancées. Dans la section Stratégie de basculement, configurez les paramètres suivants :
- Taux de basculement :
0.75
- Cochez la case Activer le drainage de connexion en basculement.
- Taux de basculement :
- Vérifiez qu'une coche bleue apparaît à côté de Configuration du backend avant de continuer. Répétez cette étape si ce n'est pas le cas.
- Sous Backends, dans la section Nouvel élément, sélectionnez le groupe d'instances
- Cliquez sur Configuration du frontend. Dans la section Nouveaux IP et port frontend, apportez les modifications suivantes :
- Nom :
fr-ilb
- Sous-réseau :
ilb-subnet
- Dans Adresse IP interne, sélectionnez Réserver une adresse IP statique interne, saisissez les informations suivantes, puis cliquez sur Réserver :
- Nom :
ip-ilb
- Adresse IP statique : Laissez-moi choisir
- Adresse IP personnalisée :
10.1.2.99
- Nom :
- Ports : sélectionnez Unique et saisissez
80
pour le numéro de port. - Vérifiez qu'une coche bleue apparaît à côté de Configuration du frontend avant de continuer. Reprenez la procédure depuis le début si ce n'est pas le cas.
- Nom :
- Cliquez sur Vérifier et finaliser. Vérifiez vos paramètres.
- Cliquez sur Créer.
gcloud
Créez une vérification de l'état HTTP pour tester la connectivité TCP aux VM sur le port 80.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Créez le service de backend pour le trafic HTTP :
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1 \ --failover-ratio 0.75
Ajoutez le backend principal au service de backend :
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Ajoutez le backend de basculement au service de backend :
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-c \ --instance-group-zone=us-west1-c \ --failover
Créez une règle de transfert pour le service de backend. Lorsque vous créez la règle de transfert, indiquez
10.1.2.99
pour l'adresse IP interne dans le sous-réseau.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Créez la vérification d'état en envoyant une requête POST
à la méthode regionHealthChecks.insert
. Remplacez PROJECT_ID
par l'ID du projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/regionHealthChecks
{ "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }
Créez le service de backend régional en envoyant une requête POST
à la méthode regionBackendServices.insert
. Remplacez PROJECT_ID
par l'ID du projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/backendServices
{ "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" }, { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c", "balancingMode": "CONNECTION" "failover": true } ], "failoverPolicy": { "failoverRatio": 0.75 }, "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "connectionDraining": { "drainingTimeoutSec": 0 } }
Créez la règle de transfert en envoyant une requête POST
à la méthode forwardingRules.insert
. Remplacez PROJECT_ID
par l'ID du projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/forwardingRules
{ "name": "fr-ilb", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "ports": [ "80", "8008", "8080", "8088" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
Tests
Ces tests vous montrent comment valider la configuration de votre équilibreur de charge et en savoir plus sur son comportement attendu.
Procédure de test client
Cette procédure contacte l'équilibreur de charge à partir de la VM cliente. Suivez cette procédure pour effectuer les autres tests.
Connectez-vous à l'instance de VM cliente.
gcloud compute ssh vm-client --zone=us-west1-a
Envoyez une requête Web à l'équilibreur de charge à l'aide de
curl
pour contacter son adresse IP.curl http://10.1.2.99
Notez le texte renvoyé par la commande
curl
. Le nom de la VM de backend qui génère la réponse est affiché dans ce texte, par exemple :Page served from: vm-a1
.
Test de l'état initial
Une fois que vous avez configuré l'exemple d'équilibreur de charge, les quatre VM de backend doivent être opérationnelles :
- Les deux VM principales,
vm-a1
etvm-a2
- Les deux VM de secours,
vm-c1
etvm-c2
Suivez la procédure de test client. Répétez la deuxième étape plusieurs fois. Le comportement attendu est que le trafic soit desservi par les deux VM principales, vm-a1
et vm-a2
, car elles sont toutes deux opérationnelles. Vous devriez voir chaque VM principale fournir une réponse une fois environ la moitié du temps, car aucune affinité de session n'a été configurée pour cet équilibreur de charge.
Test du basculement
Ce test simule l'échec de vm-a1
afin que vous puissiez observer le comportement de basculement.
Connectez-vous à la VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Arrêtez le serveur Web Apache. Au bout de dix secondes, Google Cloud considère cette VM comme étant non opérationnelle. (La vérification d'état
hc-http-80
que vous avez créée dans la configuration utilise l'intervalle entre deux tests par défaut de cinq secondes et le seuil non opérationnel de deux vérifications consécutives en échec.)sudo apachectl stop
Suivez la procédure de test client. Répétez la deuxième étape plusieurs fois. Le comportement attendu est que le trafic soit desservi par les deux VM de secours,
vm-c1
etvm-c2
. Étant donné qu'une seule VM principale,vm-a2
, est opérationnelle, le ratio entre les VM principales opérationnelles et le total des VM principales est de0.5
. Ce nombre est inférieur au seuil de basculement défini sur0.75
. Google Cloud a donc reconfiguré le pool actif de l'équilibreur de charge pour utiliser les VM de secours. Vous devriez voir chaque VM de secours fournir une réponse environ la moitié du temps tant qu'aucune affinité de session n'a été configurée pour cet équilibreur de charge.
Test de la restauration
Ce test simule la restauration en redémarrant le serveur Apache sur vm-a1
.
Connectez-vous à la VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Démarrez le serveur Web Apache et attendez 10 secondes.
sudo apachectl start
Suivez la procédure de test client. Répétez la deuxième étape plusieurs fois. Le comportement attendu est que le trafic soit desservi par les deux VM principales,
vm-a1
etvm-a2
. Les VM principales étant opérationnelles, le rapport entre les VM principales et opérationnelles est de1.0
, supérieur au seuil de basculement de0.75
. Google Cloud a donc configuré le pool actif pour réutiliser les VM principales.
Ajouter d'autres VM de backend
Cette section élargit l'exemple de configuration en ajoutant des VM principales et des VM de secours à l'équilibreur de charge. Pour cela, deux autres groupes d'instances backend sont créés afin de démontrer que vous pouvez répartir les VM principales et les VM de secours entre plusieurs zones de la même région :
- Un troisième groupe d'instances,
ig-d
dansus-west1-c
, sert de backend principal avec deux VM :vm-d1
vm-d2
- Un quatrième groupe d'instances,
ig-b
dansus-west1-a
, sert de backend de basculement avec deux VM :vm-b1
vm-b2
L'architecture modifiée de cet exemple se présente comme suit :
Créer des VM et des groupes d'instances supplémentaires
Pour créer des VM principales et des VM de secours supplémentaires ainsi que des groupes d'instances non gérés correspondants, procédez comme suit.
Console
Créer des VM de backend
Dans Google Cloud Console, accédez à la page Instances de VM.
Répétez les étapes ci-dessous pour créer quatre VM, en utilisant les combinaisons de noms et de zones suivantes :
- Nom :
vm-b1
, zone :us-west1-a
- Nom :
vm-b2
, zone :us-west1-a
- Nom :
vm-d1
, zone :us-west1-c
- Nom :
vm-d2
, zone :us-west1-c
- Nom :
Cliquez sur Créer une instance.
Définissez le Nom comme indiqué à l'étape 2.
Dans le champ Région, choisissez
us-west1
, puis sélectionnez une zone comme indiqué à l'étape 2.Dans la section Disque de démarrage, assurez-vous que l'image sélectionnée est Debian GNU/Linux 10 (buster). Si nécessaire, cliquez sur Sélectionner pour modifier l'image.
Cliquez sur Options avancées et apportez les modifications suivantes :
- Cliquez sur Mise en réseau et ajoutez les tags réseau suivants :
allow-ssh
etallow-health-check
. - Cliquez sur le bouton de modification sous Interfaces réseau, apportez les modifications suivantes, puis cliquez sur OK :
- Réseau :
lb-network
- Sous-réseau :
lb-subnet
- Adresse IP interne principale : éphémère (automatique)
- Adresse IP externe : Éphémère
- Réseau :
Cliquez sur Gestion. Dans le champ Script de démarrage, copiez et collez le contenu de script suivant. Le contenu du script est identique pour les quatre VM :
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
- Cliquez sur Mise en réseau et ajoutez les tags réseau suivants :
Cliquez sur Créer.
Créer des groupes d'instances
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Répétez les étapes ci-dessous pour créer deux groupes d'instances non gérés, comportant chacun deux VM, à l'aide des combinaisons suivantes.
- Groupe d'instances :
ig-b
, zone :us-west1-a
, VM :vm-b1
etvm-b2
- Groupe d'instances :
ig-d
, zone :us-west1-c
, VM :vm-d1
etvm-d2
- Groupe d'instances :
Cliquez sur Créer un groupe d'instances.
Cliquez sur Nouveau groupe d'instances non géré.
Définissez le Nom comme indiqué à l'étape 2.
Dans la section Emplacement, sélectionnez
us-west1
pour la région, puis choisissez une zone comme indiqué à l'étape 2.Pour Réseau, saisissez la valeur suivante :
lb-network
.Pour Sous-réseau, saisissez la valeur suivante :
lb-subnet
.Dans la section Instances de VM, ajoutez les VM comme indiqué à l'étape 2.
Cliquez sur Créer.
gcloud
Créez quatre VM en exécutant la commande suivante quatre fois, en utilisant ces quatre combinaisons pour
VM_NAME
etZONE
. Le contenu du script est identique pour les quatre VM.VM_NAME
:vm-b1
etZONE
:us-west1-a
VM_NAME
:vm-b2
etZONE
:us-west1-a
VM_NAME
:vm-d1
etZONE
:us-west1-c
VM_NAME
:vm-d2
etZONE
:us-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Créez les deux groupes d'instances non gérés dans chaque zone :
gcloud compute instance-groups unmanaged create ig-b \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-d \ --zone=us-west1-c
Ajoutez les VM aux groupes d'instances appropriés :
gcloud compute instance-groups unmanaged add-instances ig-b \ --zone=us-west1-a \ --instances=vm-b1,vm-b2 gcloud compute instance-groups unmanaged add-instances ig-d \ --zone=us-west1-c \ --instances=vm-d1,vm-d2
API
Créez quatre VM de backend en envoyant quatre requêtes POST
à la méthode instances.insert
:
Pour les quatre VM, utilisez les noms et zones de VM suivants :
VM_NAME
:vm-b1
etZONE
:us-west1-a
VM_NAME
:vm-b2
etZONE
:us-west1-a
VM_NAME
:vm-d1
etZONE
:us-west1-c
VM_NAME
:vm-d2
etZONE
:us-west1-c
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.DEBIAN_IMAGE_NAME
: nom de l'image Debian pour l'instance. Vous pouvez obtenir la valeurDEBIAN_IMAGE_NAME
actuelle en exécutant la commandegcloud
suivante :gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE/instances
{ "name": "VM_NAME", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "VM_NAME", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Créez deux groupes d'instances en envoyant une requête POST
à la méthode instanceGroups.insert
. Remplacez PROJECT_ID
par l'ID du projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups
{ "name": "ig-b", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-d", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Ajoutez des instances à chaque groupe d'instances en envoyant une requête POST
à la méthode instanceGroups.addInstances
. Remplacez PROJECT_ID
par l'ID du projet.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups/ig-b/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-d/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d2" } ] }
Ajouter un backend principal
Vous pouvez utiliser cette procédure comme modèle pour ajouter un groupe d'instances non géré au service de backend d'un équilibreur de charge réseau passthrough en tant que backend principal. Pour l'exemple de configuration, cette procédure explique comment ajouter le groupe d'instances ig-d
en tant que backend principal à l'équilibreur de charge be-ilb
.
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge TCP ou UDP interne (dans cet exemple,
be-ilb
).Cliquez sur Modifier
.Dans Configuration du backend, cliquez sur Ajouter un backend et sélectionnez un groupe d'instances non géré (dans cet exemple,
ig-d
).Vérifiez que la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde n'est pas cochée.
Cliquez sur Terminé, puis sur Mettre à jour.
gcloud
Utilisez la commande gcloud
suivante pour ajouter un backend principal au service de backend d'un équilibreur de charge réseau passthrough interne.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION
Remplacez les éléments suivants :
BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisezbe-ilb
.INSTANCE_GROUP_NAME
: nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisezig-d
.INSTANCE_GROUP_ZONE
est la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisezus-west1-c
.REGION
: la région de l'équilibreur de charge. Pour l'exemple, utilisezus-west1
.
API
Ajouter un backend de basculement à un service de backend existant avec la méthode regionBackendServices.patch
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "balancingMode": "connection", "failover": false, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.REGION
: la région de l'équilibreur de charge. Pour l'exemple, utilisezus-west1
.BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisezbe-ilb
.INSTANCE_GROUP_NAME
: nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisezig-d
.INSTANCE_GROUP_ZONE
: la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisezus-west1-c
.
Ajouter un backend de basculement
Vous pouvez utiliser cette procédure comme modèle pour ajouter un groupe d'instances non géré au service de backend d'un équilibreur de charge réseau passthrough interne existant en tant que backend de basculement. Pour l'exemple de configuration, cette procédure explique comment ajouter le groupe d'instances ig-b
en tant que backend de basculement à l'équilibreur de charge be-ilb
.
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge existant de type TCP/UDP (interne) (dans cet exemple,
be-ilb
).Cliquez sur Modifier
.Dans Configuration du backend, cliquez sur Ajouter un backend et sélectionnez un groupe d'instances non géré (dans cet exemple,
ig-b
).Cochez la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde.
Cliquez sur Terminé, puis sur Mettre à jour.
gcloud
Utilisez la commande gcloud
suivante pour ajouter un backend de basculement au service de backend d'un équilibreur de charge réseau passthrough interne.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Remplacez les éléments suivants :
BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisezbe-ilb
.INSTANCE_GROUP_NAME
: nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisezig-b
.INSTANCE_GROUP_ZONE
est la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisezus-west1-a
.REGION
est la région de l'équilibreur de charge. Pour l'exemple, utilisezus-west1
.
API
Ajouter un backend de basculement à un service de backend existant avec la méthode regionBackendServices.patch
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "balancingMode": "connection", "failover": true, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisezbe-ilb
.INSTANCE_GROUP_NAME
: nom du groupe d'instances à ajouter en tant que backend principal. Pour l'exemple, utilisezig-b
.INSTANCE_GROUP_ZONE
est la zone dans laquelle le groupe d'instances est défini. Pour l'exemple, utilisezus-west1-a
.REGION
: la région de l'équilibreur de charge. Pour l'exemple, utilisezus-west1
.
Convertir un backend principal ou un backend de basculement
Vous pouvez convertir un backend principal en backend de basculement, ou inversement, sans avoir à supprimer le groupe d'instances du service de backend de l'équilibreur de charge passthrough interne.
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge existant de type TCP/UDP (interne).
Cliquez sur Modifier
.Dans Configuration du backend, cliquez sur le nom de l'un des groupes d'instances du backend. Puis :
- Pour créer un backend de basculement, cochez Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde.
- Pour créer un backend principal, décochez la case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde.
Cliquez sur Terminé, puis sur Mettre à jour.
gcloud
Utilisez la commande gcloud
suivante pour convertir un backend principal existant en backend de basculement :
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Utilisez la commande gcloud
suivante pour convertir un backend de basculement existant en backend principal :
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --no-failover
Remplacez l'élément suivant :
BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de chargeINSTANCE_GROUP_NAME
: nom du groupe d'instances à ajouter en tant que backend principalINSTANCE_GROUP_ZONE
: la zone dans laquelle le groupe d'instances est définiREGION
: la région de l'équilibreur de charge
API
Convertissez un backend principal en backend de basculement, ou inversement, à l'aide de la méthode regionBackendServices.patch
.
Pour convertir un backend principal en backend de basculement, procédez comme suit :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "failover": true, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Pour convertir un backend de basculement en backend principal, procédez comme suit :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "failover": false, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ], }
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de chargeINSTANCE_GROUP_NAME
: nom du groupe d'instances à ajouter en tant que backend principalINSTANCE_GROUP_ZONE
: la zone dans laquelle le groupe d'instances est définiREGION
: la région de l'équilibreur de charge
Configurer les règles de basculement
Cette section décrit comment gérer une règle de basculement pour le service de backend d'un équilibreur de charge réseau passthrough interne. Une règle de basculement comprend les éléments suivants :
- Taux de basculement
- Suppression du trafic lorsqu'aucune VM de backend n'est opérationnelle
- Drainage de connexion en basculement
Pour plus d'informations sur les paramètres d'une règle de basculement, consultez les pages suivantes :
- Définir un taux de basculement
- Supprimer le trafic lorsqu'aucune VM n'est opérationnelle
- Drainer des connexions en basculement et en restauration
Définir une règle de basculement
Les instructions suivantes décrivent comment définir la règle de basculement pour un équilibreur de charge réseau passthrough interne existant.
Console
Pour définir une stratégie de basculement à l'aide de la console Google Cloud, vous devez disposer d'au moins un backend de basculement.
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
Dans l'onglet Équilibreurs de charge, cliquez sur le nom d'un équilibreur de charge existant de type TCP/UDP (interne).
Cliquez sur Modifier
.Vérifiez que vous disposez d'au moins un backend de basculement. La case Utiliser ce groupe d'instances comme groupe de basculement pour la sauvegarde doit être cochée pour au moins un des backends de l'équilibreur de charge.
Cliquez sur Configurations avancées.
- Sous Règle de basculement, définissez le Taux de basculement sur une valeur comprise entre
0.0
et1.0
, inclus. - Cochez la case Activer la suppression du trafic si vous souhaitez supprimer le trafic lorsqu'aucune VM active ni aucune VM de secours n'est opérationnelle.
- Cochez la case Activer le drainage des connexions en basculement si vous souhaitez interrompre rapidement les connexions pendant le basculement.
- Sous Règle de basculement, définissez le Taux de basculement sur une valeur comprise entre
Cliquez sur Vérification et finalisation, puis sur Mettre à jour.
gcloud
Pour définir une stratégie de basculement à l'aide de gCloud CLI, mettez à jour le service de backend de l'équilibreur de charge :
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION \ --failover-ratio FAILOVER_RATIO \ --drop-traffic-if-unhealthy \ --no-connection-drain-on-failover
Remplacez les éléments suivants :
BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de charge. Pour l'exemple, utilisezbe-ilb
.REGION
: la région de l'équilibreur de charge. Pour l'exemple, utilisezus-west1
.FAILOVER_RATIO
: taux de basculement. Les valeurs possibles sont comprises entre0.0
et1.0
, inclus. Pour l'exemple, utilisez0.75
.--drop-traffic-if-unhealthy
donne à l'équilibreur de charge l'ordre d'interrompre le trafic lorsqu'aucune VM principale ni aucune VM de secours n'est opérationnelle. Remplacez cette valeur par--no-drop-traffic-if-unhealthy
si vous souhaitez répartir le trafic entre toutes les VM principales lorsqu'aucune VM de backend n'est opérationnelle.--no-connection-drain-on-failover
donne à l'équilibreur de charge l'ordre d'interrompre rapidement les connexions TCP existantes pendant le basculement. Utilisez--connection-drain-on-failover
pour activer le drainage de connexion lors du basculement.
API
Utilisez la méthode regionBackendServices.patch
pour définir la stratégie de basculement.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "failoverPolicy": { "failoverRatio": FAILOVER_RATIO, "dropTrafficIfUnhealthy": [true|false], "disableConnectionDrainOnFailover": [true|false] } }
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.REGION
: la région de l'équilibreur de chargeBACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de chargeFAILOVER_RATIO
: taux de basculement. Les valeurs possibles sont comprises entre0.0
et1.0
, inclus.- Définir
dropTrafficIfUnhealthy
surtrue
donne à l'équilibreur de charge l'ordre d'interrompre le trafic lorsqu'aucune VM principale, ni aucune VM de secours n'est opérationnelle. Définissez cette valeur surfalse
si vous souhaitez répartir le trafic entre toutes les VM principales lorsqu'aucune VM de backend n'est opérationnelle. - Définir
disableConnectionDrainOnFailover
surtrue
donne à l'équilibreur de charge l'ordre d'interrompre rapidement les connexions TCP existantes pendant le basculement. Définissez cette valeur surfalse
pour activer le drainage de connexion lors du basculement.
Afficher une règle de basculement
Les instructions suivantes décrivent comment afficher la règle de basculement pour un équilibreur de charge réseau passthrough interne.
Console
La console Google Cloud affiche les paramètres de la stratégie de basculement lorsque vous modifiez un équilibreur de charge réseau passthrough interne. Pour obtenir des instructions, consultez la section Définir une règle de basculement.
gcloud
Pour répertorier les paramètres de la stratégie de basculement à l'aide de gCloud CLI, exécutez la commande ci-dessous. Les paramètres non définis dans une règle de basculement utilisent les valeurs de règles de basculement par défaut.
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION \ --format="get(failoverPolicy)"
Remplacez l'élément suivant :
BACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de chargeREGION
: la région de l'équilibreur de charge
API
Utilisez la méthode regionBackendServices.get
pour afficher la stratégie de basculement.
La réponse à la requête API affiche la règle de basculement. Voici un exemple :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.REGION
: la région de l'équilibreur de chargeBACKEND_SERVICE_NAME
: nom du service de backend de l'équilibreur de charge
{ ... "failoverPolicy": { "disableConnectionDrainOnFailover": false, "dropTrafficIfUnhealthy": false, "failoverRatio": 0.75 ... }
Étapes suivantes
- Pour connaître les principes de base importants, consultez la page Présentation de l'équilibreur de charge réseau passthrough interne.
- Pour plus d'informations sur le basculement, consultez la page Concepts de basculement pour les équilibreurs de charge réseau passthrough internes.
- Pour obtenir un exemple de configuration d'équilibreur de charge réseau passthrough interne, consultez la page Configurer un équilibreur de charge réseau passthrough interne.
- Pour plus d'informations sur la configuration de la journalisation et de la surveillance pour l'équilibreur de charge réseau passthrough interne, consultez la page Journalisation et surveillance de l'équilibreur de charge réseau passthrough interne.
- Pour en savoir plus sur l'accès aux équilibreurs de charge réseau passthrough internes à partir des réseaux pairs connectés à votre réseau VPC, consultez la page Équilibreurs de charge réseau passthrough internes.
- Pour plus d'informations sur la résolution des problèmes liés à votre équilibreur de charge réseau passthrough interne, consultez la page Résoudre les problèmes liés aux équilibreurs de charge réseau passthrough internes.
- Nettoyez la configuration de l'équilibreur de charge.