Faire passer un équilibreur de charge réseau des pools cibles aux services de backend régionaux

1. Introduction

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.

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 d'un pool cible
  • Créer un service de backend régional à l'aide de groupes d'instances non gérés
  • Effectuer la migration du pool cible vers le service de backend
  • Effectuer la validation des services de backend

Prérequis

  • Avoir de l'expérience avec les équilibreurs de charge

2. Présentation des services de backend régionaux pour l'équilibrage de charge réseau

Avec l'équilibrage de charge réseau, les clients Google Cloud disposent d'un outil performant pour répartir le trafic externe entre les machines virtuelles d'une région Google Cloud. Afin de 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 compatibilité des services de backend à l'équilibrage de charge réseau. Nos clients bénéficient ainsi d'une évolutivité, d'une rapidité, d'une performance et d'une résilience améliorées dans leur déploiement, le tout d'une manière simple à gérer.

Les services de backend sont désormais compatibles 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 répartissent le trafic entrant sur 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

Le choix d'un service de backend régional comme équilibreur de charge présente un certain nombre d'avantages pour votre environnement.

267db35a58145be.png

Les services de backend régionaux offrent les avantages suivants:

  • Vérification d'état haute fidélité avec vérification d'état unifiée : grâce aux services de backend régionaux, vous pouvez désormais tirer pleinement parti des fonctionnalités de vérification de l'état de l'équilibrage de charge, en vous libérant des contraintes liées aux anciennes vérifications d'état HTTP. Pour des raisons de conformité, les vérifications de l'état TCP compatibles avec les chaînes de requête et de réponse personnalisées ou HTTPS étaient une requête courante pour les clients de l'équilibrage de charge réseau.
  • 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 keepa possède ou pacemaker, et exposent une vérification d'état opérationnelle ou en échec en fonction des changements d'état de l'instance 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 backend de machines virtuelles 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 drainage de connexion pour le protocole TCP (Connection Oriented Protocol) et d'un temps de programmation plus court pour les déploiements de grande envergure.

Topologie du 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 passage à un service de backend régional vous permet de bénéficier de 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 les règles de basculement.

Ce guide vous explique comment effectuer la transition de l'exemple d'équilibreur de charge réseau basé sur un pool cible suivant afin d'utiliser un service de backend régional à la place

b2ac8a09e53e27f8.png

Avant:Équilibrage de charge réseau avec un pool cible

Le déploiement d'équilibreur de charge réseau basé sur un service de backend qui en résultera se présentera comme suit.

f628fdad64c83af3.png

Après:équilibrage de charge réseau avec un service de backend régional

Dans cet exemple, nous partons du principe 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 :

  1. 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. Notez que bien qu'il n'y ait pas de limite au nombre d'instances pouvant être placées dans un seul 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.
  2. 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.
  3. 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.
  4. Configurez une règle de transfert qui pointe 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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

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

bce75f34b2c53987.png

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

f6ef2b5f13479f3a.png

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 de votre 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éer deux instances par zone, us-central1-a & us-central1-c

Depuis Cloud Shell, créez l'instance 1.

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"

Depuis Cloud Shell, créez l'instance 3.

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"

Depuis Cloud Shell, créez l'instance 4.

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

Ajouter vos instances au pool cible us-central1-a

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

Ajouter 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 du terminal de votre station de travail pour accéder à l'adresse IP externe et observer l'équilibrage de charge entre les quatre instances cibles. Fermez le terminal une fois la validation terminé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 à partir 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 à partir 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éer un service de backend et l'associer 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 qu'elle prenne en charge les services de backend

Notez que 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", puis "www-pool".

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érifier l'équilibreur de charge "www-pool" n'est plus configuré avec l'interface "www-rule" (voir la capture d'écran ci-dessous).

Sélectionnez Équilibreur de charge → www-pool

9a393b3ca4e0942c.png

Vérifier que la règle de transfert de l'interface est désormais associée à l'équilibreur de charge "my-backend-service"

Sélectionnez Équilibreur de charge → Interfaces

Notez le nom de la règle, "www-rule". L'adresse IP est conservée et l'équilibreur de charge "my-backend-service" est désormais utilisée

Utilisez la commande curl du terminal de votre station de travail pour accéder à l'adresse IP externe et observer l'équilibrage de charge sur le service de backend nouvellement associé. Fermez le terminal une fois la validation terminé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 d'un pool cible
  • Créer un service de backend régional à l'aide de groupes d'instances non gérés
  • Effectuer la migration du pool cible vers le service de backend
  • Effectuer la validation des services de backend