1. Introduction
Ce guide fournit des instructions pour faire passer un équilibreur de charge réseau existant d'un backend de pool cible vers un service de backend régional.
Points abordés
- Comprendre les avantages des services de backend régionaux
- Créer un équilibreur de charge réseau avec des pools cibles
- Effectuer la validation du pool cible
- Créer un service backend régional à l'aide de groupes d'instances non gérés
- Migrer un pool cible vers un service de backend
- Effectuer la validation des services de backend
Prérequis
- Expérience avec les équilibreurs de charge
2. Présentation des services de backend régionaux pour l'équilibrage de charge réseau
Avec Network Load Balancing, les clients Google Cloud disposent d'un outil puissant pour distribuer le trafic externe entre les machines virtuelles d'une région Google Cloud. Pour permettre à nos clients de gérer plus facilement le trafic entrant et de contrôler le comportement de l'équilibreur de charge, nous avons récemment ajouté la prise en charge des services de backend à l'équilibrage de charge réseau. Nos clients bénéficient ainsi d'une évolutivité, d'une vitesse, d'une performance et d'une résilience améliorées dans leur déploiement, le tout d'une manière simple à gérer.
Nous proposons désormais des services de backend avec l'équilibrage de charge réseau, ce qui constitue une amélioration significative par rapport à l'approche précédente, les pools cibles. Un service de backend définit la manière dont nos équilibreurs de charge distribuent le trafic entrant vers les backends associés et permet de contrôler précisément le comportement de l'équilibreur de charge.
3. Avantages des services de backend régionaux
Choisir un service de backend régional comme équilibreur de charge présente de nombreux avantages pour votre environnement.
Les services backend régionaux offrent les avantages suivants:
- Vérification de l'état haute fidélité avec vérification de l'état unifiée : avec les services de backend régionaux, vous pouvez désormais profiter pleinement des fonctionnalités de vérification de l'état de l'équilibrage de charge, et vous libérer des contraintes des anciennes vérifications d'état HTTP. Pour des raisons de conformité, les clients de l'équilibrage de charge réseau demandaient souvent des vérifications d'état TCP compatibles avec les chaînes de requête et de réponse personnalisées ou HTTPS.
- Meilleure résilience avec les groupes de basculement : avec les groupes de basculement, vous pouvez désigner un groupe d'instances principal et un autre comme groupe secondaire et faire basculer le trafic lorsque l'état des instances du groupe actif passe en dessous d'un certain seuil. Pour mieux contrôler le mécanisme de basculement, vous pouvez utiliser un agent tel que keepalived ou pacemaker, et exposer une vérification de l'état correcte ou défaillante en fonction des changements d'état de l'instance de backend.
- Évolutivité et haute disponibilité avec des groupes d'instances gérés : les services de backend régionaux prennent en charge les groupes d'instances gérés en tant que backends. Vous pouvez désormais spécifier un modèle pour vos instances de machines virtuelles backend et exploiter l'autoscaling en fonction de l'utilisation du processeur ou d'autres métriques de surveillance.
En plus de ce qui précède, vous pourrez profiter du vidage de connexion pour le protocole TCP (connection-oriented protocol) et d'un temps de programmation plus rapide pour les déploiements de grande envergure.
Topologie réseau de l'atelier de programmation
Ce guide fournit des instructions pour faire passer un équilibreur de charge réseau existant d'un backend de pool cible à un service de backend régional.
Le transfert vers un service de backend régional vous permet d'exploiter des fonctionnalités telles que les vérifications d'état non héritées (pour TCP, SSL, HTTP, HTTPS et HTTP/2), les groupes d'instances gérés, le drainage de connexion et la stratégie de basculement.
Ce guide vous accompagne tout au long de la transition de l'exemple suivant d'équilibreur de charge réseau basé sur un pool cible pour utiliser à la place un service de backend régional.
Avant:Équilibreur de charge réseau avec pool cible
Le déploiement résultant de l'équilibreur de charge réseau basé sur un service de backend ressemble à ceci.
Après:Équilibreur de charge réseau avec un service de backend régional
Cet exemple suppose que vous disposez d'un équilibreur de charge réseau traditionnel basé sur un pool cible avec deux instances dans la zone us-central-1a et deux instances dans la zone us-central-1c.
Voici les grandes étapes à suivre pour effectuer une telle transition :
- Regroupez vos instances de pool cible dans des groupes d'instances. Les services de backend ne fonctionnent qu'avec des groupes d'instances gérés ou non gérés. Bien qu'il n'existe aucune limite au nombre d'instances pouvant être placées dans un même pool cible, les groupes d'instances ont une taille maximale. Si votre pool cible dépasse ce nombre maximal d'instances, vous devrez répartir ses backends sur plusieurs groupes d'instances. Si votre déploiement existant inclut un pool cible de sauvegarde, créez un groupe d'instances distinct pour ces instances. Ce groupe d'instances sera configuré en tant que groupe de basculement.
- Créez un service de backend régional. Si votre déploiement inclut un pool cible de sauvegarde, vous devez spécifier un taux de basculement lors de la création du service de backend. Il doit correspondre au taux de basculement précédemment configuré pour le déploiement du pool cible.
- Ajoutez des groupes d'instances (créés précédemment) au service de backend. Si votre déploiement inclut un pool cible de sauvegarde, marquez le groupe d'instances de basculement correspondant avec l'option "-failover" lorsque vous l'ajoutez au service de backend.
- Configurez une règle de transfert pointant vers le nouveau service de backend. Deux possibilités s'offrent à vous:
- (Recommandé) Mettez à jour la règle de transfert existante pour qu'elle pointe vers le service de backend. OU
- Créez un transfert pointant vers le service de backend. Pour cela, vous devez créer une adresse IP pour l'interface de l'équilibreur de charge. Ensuite, modifiez vos paramètres DNS pour passer facilement de l'adresse IP de l'ancien équilibreur de charge basé sur un pool cible à la nouvelle.
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID
tout au long de cet atelier de programmation.
- Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.
L'exécution de cet atelier de programmation est très peu coûteuse, voire gratuite. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser toutes les activités de cet atelier dans un simple navigateur.
Se connecter à Cloud Shell et définir l'ID du projet
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
4. Créer un réseau VPC
Réseau VPC
Depuis Cloud Shell
gcloud compute networks create network-lb --subnet-mode custom
Créer un sous-réseau
Depuis Cloud Shell
gcloud compute networks subnets create network-lb-subnet \ --network network-lb --range 10.0.0.0/24 --region us-central1
Créer des règles de pare-feu
Depuis Cloud Shell
gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag
Créer des instances non gérées
Créez deux instances par zone, us-central1-a et us-central1-c.
Créer l'instance 1 depuis Cloud Shell
gcloud compute instances create www1 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-a \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"
Depuis Cloud Shell, créez l'instance 2.
gcloud compute instances create www2 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-a \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"
Créer l'instance 3 depuis Cloud Shell
gcloud compute instances create www3 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-c \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"
Créer l'instance 4 depuis Cloud Shell
gcloud compute instances create www4 \ --subnet network-lb-subnet \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-c \ --tags network-lb-tag \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"
Créer une règle de pare-feu pour autoriser le trafic externe vers ces instances de VM
Depuis Cloud Shell
gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag
Créer une adresse IP externe statique pour votre équilibreur de charge
Depuis Cloud Shell
gcloud compute addresses create network-lb-ip-1 \ --region us-central1
Ajouter une ancienne ressource de vérification d'état HTTP
Depuis Cloud Shell
gcloud compute http-health-checks create basic-check
5. Créer une règle de transfert et un pool cible
Créer un pool cible
gcloud compute target-pools create www-pool \ --region us-central1 --http-health-check basic-check
Ajoutez vos instances au pool cible, us-central1-a.
gcloud compute target-pools add-instances www-pool \ --instances www1,www2 \ --instances-zone us-central1-a
Ajoutez vos instances au pool cible, us-central1-c.
gcloud compute target-pools add-instances www-pool \ --instances www3,www4 \ --instances-zone us-central1-c
Ajouter une règle de transfert
gcloud compute forwarding-rules create www-rule \ --region us-central1 \ --ports 80 \ --address network-lb-ip-1 \ --target-pool www-pool
Valider le fonctionnement du pool cible
Identifiez l'adresse IP de l'interface en sélectionnant "Équilibreurs de charge → Interfaces (www-rule)".
Utilisez la commande curl à partir du terminal de votre poste de travail pour accéder à l'adresse IP externe et observer l'équilibrage de charge sur les quatre instances cibles. Fermez le terminal une fois la validation effectuée.
while true; do curl -m1 IP_ADDRESS; done
6. Faire passer l'équilibreur de charge réseau du pool cible au service de backend
Créer des vérifications d'état unifiées pour votre service de backend
gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1
Créer des groupes d'instances à partir d'instances existantes du pool cible
gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2
Créer des groupes d'instances à partir d'instances existantes du pool cible
gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4
Créez un service de backend et associez-le aux vérifications d'état nouvellement créées.
gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external
Configurer votre service de backend et ajouter les groupes d'instances
gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1 gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1
Mettre à jour la règle de transfert existante pour prendre en charge les services de backend
Notez le nom de la règle de transfert "www-rule" et l'adresse IP associée en procédant comme suit:
Sélectionnez "Équilibreur de charge → Interfaces".
Notez également que les quatre pools cibles
Sélectionnez "Équilibreur de charge" → sélectionnez "pool-www"
Acheminer le trafic vers les services de backend en mettant à jour la règle de transfert existante
gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1
Vérifiez que l'équilibreur de charge "www-pool" n'est plus configuré avec l'interface "www-rule" (voir capture d'écran ci-dessous).
Sélectionnez "Équilibreur de charge → pool www".
Vérifiez que la règle de transfert du frontend est désormais associée à l'équilibreur de charge "my-backend-service".
Sélectionnez "Équilibreur de charge → Interfaces".
Notez que l'adresse IP de la règle "www-rule" est conservée et que l'équilibreur de charge "my-backend-service" est désormais utilisé.
Utilisez la commande curl depuis le terminal de votre poste de travail pour accéder à l'adresse IP externe et observer l'équilibrage de charge sur le nouveau service backend associé. Fermez le terminal une fois la validation effectuée.
while true; do curl -m1 IP_ADDRESS; done
7. Étapes de nettoyage
gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet gcloud compute backend-services delete my-backend-service --region us-central1 --quiet gcloud compute target-pools delete www-pool --region us-central1 --quiet gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet gcloud compute firewall-rules delete www-firewall-network-lb --quiet gcloud compute instances delete www4 --zone us-central1-c --quiet gcloud compute instances delete www3 --zone us-central1-c --quiet gcloud compute instances delete www2 --zone us-central1-a --quiet gcloud compute instances delete www1 --zone us-central1-a --quiet gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet gcloud compute networks delete network-lb --quiet gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet
8. Félicitations !
Bravo ! Vous avez terminé cet atelier de programmation.
Points abordés
- Comprendre les avantages des services de backend régionaux
- Créer un équilibreur de charge réseau avec des pools cibles
- Effectuer la validation du pool cible
- Créer un service backend régional à l'aide de groupes d'instances non gérés
- Migrer un pool cible vers un service de backend
- Effectuer la validation des services de backend