1. Introduction
Une stratégie hybride est une solution pragmatique qui vous permet de vous adapter aux exigences changeantes du marché et de moderniser progressivement vos applications. La compatibilité hybride avec les équilibreurs de charge HTTP(S) externes et internes Google Cloud étend l'équilibrage de charge cloud aux backends résidant sur site et dans d'autres clouds. Elle est essentielle pour votre stratégie hybride. Il peut s'agir d'un déploiement temporaire permettant la migration vers une solution cloud moderne ou d'un dispositif permanent de l'infrastructure informatique de votre organisation.

Dans cet atelier, vous allez apprendre à créer un groupe de points de terminaison du réseau (NEG) à l'aide de deux machines virtuelles accessibles depuis un équilibreur de charge HTTP(S) externe global. Bien que le NEG du labo se trouve dans GCP, la même procédure est utilisée pour communiquer avec des ressources publiques ou sur site avec une accessibilité IP.
Points abordés
- Créer un VPC personnalisé
- Créer deux machines virtuelles (VM) utilisées comme groupe de points de terminaison du réseau (NEG)
- Créer un équilibreur de charge hybride, un service de backend et des vérifications de l'état associées
- Créer une règle de pare-feu qui autorise l'accès à l'équilibreur de charge
- Un routeur Cloud Router et une passerelle NAT seront créés pour permettre les mises à jour des packages depuis Internet.
- Valider l'accessibilité du groupe de points de terminaison du réseau
Prérequis
- Connaissance des équilibreurs de charge
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.)



- Le nom du projet est votre identifiant personnel pour ce projet. Tant que vous respectez ses conventions de dénomination, vous pouvez utiliser ce que vous voulez et le mettre à jour à tout moment.
- L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par
PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire ou essayer le vôtre pour voir s'il est disponible. Il est ensuite "gelé" une fois le projet créé.
- 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 sans frais. 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.
2. Avant de commencer
Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré.
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
3. Créer un réseau VPC en mode personnalisé
Dans cette tâche, vous allez créer un cloud privé virtuel (VPC), qui constitue la base du réseau.
Réseau VPC
Depuis Cloud Shell
gcloud compute networks create hybrid-network-lb --subnet-mode custom
Créer un sous-réseau
Depuis Cloud Shell
gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1
Créer une instance Cloud NAT
Bien que la connectivité Internet ne soit pas requise pour la mise en réseau hybride, l'instance de calcul en a besoin pour télécharger des applications et des mises à jour.
Dans cette tâche, vous allez créer une instance Cloud Router et NAT qui permet la connectivité Internet aux instances de VM.
Créer un routeur cloud
Depuis Cloud Shell
gcloud compute routers create crnat --network hybrid-network-lb --region us-west1
Créer Cloud NAT
Depuis Cloud Shell
gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1
4. Créer deux instances de VM
Dans cette tâche, vous allez créer deux instances de VM exécutant Apache. Plus tard dans l'atelier, ces instances de VM deviendront un groupe de points de terminaison du réseau (NEG).
Dans Cloud Shell, créez la première instance sur site, on-prem-neg-1.
gcloud compute instances create on-prem-neg-1 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--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://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
Dans Cloud Shell, créez la première instance sur site, on-prem-neg-2.
gcloud compute instances create on-prem-neg-2 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--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://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
5. Créer un NEG contenant votre point de terminaison sur site
Commencez par créer des NEG nommés "on-prem-neg-1" et "on-prem-neg-2". Vous indiquerez également que, pour le routage et l'équilibrage de charge, l'équilibreur de charge doit considérer que ces points de terminaison se trouvent dans la zone GCP us-west1-a. Nous vous recommandons de configurer la zone de sorte qu'elle corresponde à n'importe quelle zone associée à la région du rattachement Interconnect/de la passerelle VPN pour les mesures d'équilibrage de charge basées sur la proximité utilisées pour l'équilibrage de charge.
Depuis Cloud Shell, créez on-prem-neg-1.
gcloud compute network-endpoint-groups create on-prem-neg-1 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
Depuis Cloud Shell, créez on-prem-neg-2.
gcloud compute network-endpoint-groups create on-prem-neg-2 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
Dans l'atelier de programmation, le groupe de points de terminaison du réseau est une instance GCE exécutant Apache dans GCP. Vous pouvez également spécifier un point de terminaison Internet ou sur site comme point de terminaison réseau.
Dans Cloud Shell, identifiez les adresses IP GCE.
gcloud compute instances list | grep -i on-prem
Associez le groupe de points de terminaison du réseau à l'adresse IP de l'instance GCE identifiée à l'étape précédente : on-prem-neg-1 & on-prem-neg-2. pour chaque NEG.
Dans Cloud Shell, associez on-prem-neg-1, puis remplacez x.x.x.x par l'adresse IP que vous avez identifiée.
gcloud compute network-endpoint-groups update on-prem-neg-1 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
Dans Cloud Shell, associez on-prem-neg-2, puis remplacez x.x.x.x par l'adresse IP que vous avez identifiée.
gcloud compute network-endpoint-groups update on-prem-neg-2 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
6. Créer la vérification d'état HTTP, le service de backend et le pare-feu
Dans cette étape, vous allez créer un service de backend global nommé "on-prem-backend-service". Ce service de backend définit la manière dont votre plan de données enverra le trafic à votre NEG.
Commencez par créer une vérification d'état nommée "on-prem-health-check" pour surveiller l'état des points de terminaison appartenant à ce NEG (c'est-à-dire votre point de terminaison sur site).
Depuis Cloud Shell
gcloud compute health-checks create http on-prem-health-check
Créez un service de backend appelé "on-prem-backend-service" et associez-le à la vérification de l'état.
Depuis Cloud Shell
gcloud compute backend-services create on-prem-backend-service \
--global \
--load-balancing-scheme=EXTERNAL \
--health-checks on-prem-health-check
L'équilibreur de charge et le backend HTTP(S) externes effectuent des vérifications de l'état provenant des sous-réseaux 35.191.0.0/16 et 130.211.0.0/22. Par conséquent, une règle de pare-feu est requise pour autoriser le routage de l'équilibreur de charge vers le backend.
Depuis Cloud Shell
gcloud compute firewall-rules create fw-allow-health-check \
--network=hybrid-network-lb \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
7. Associer le NEG et le service de backend
Ajoutez le NEG on-prem-neg-1 à ce service de backend.
Depuis Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-1 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
Ajoutez le NEG on-prem-neg-2 à ce service de backend.
Depuis Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-2 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
Réserver une adresse IP statique IPv4 utilisée pour accéder au point de terminaison de votre réseau
Depuis Cloud Shell
gcloud compute addresses create hybrid-lb-ip --project=$projectid --global
La configuration de la CLI est terminée. Terminons la configuration dans la console Cloud.
8. Créer l'équilibreur de charge HTTP externe et associer le service de backend
Dans la console cloud, accédez à "Équilibrage de charge", puis sélectionnez "Créer un équilibreur de charge".
Identifiez l'équilibrage de charge HTTP(S) et cliquez sur "Démarrer la configuration".

Sélectionnez "D'Internet vers mes VM" comme indiqué sur la capture d'écran ci-dessous pour autoriser l'accès public à votre VM.

Indiquez "xlb" comme nom de l'équilibreur de charge, puis sélectionnez le service de backend "on-prem-backend-service" créé précédemment, puis cliquez sur "OK", comme indiqué sur la capture d'écran.

Sélectionnez "Configuration du frontend", modifiez le nom "xlb-fe", puis sélectionnez l'adresse IPv4 statique créée précédemment. Veillez à ce que l'écran soit identique à la capture d'écran fournie
.
Sélectionnez "Examiner et finaliser" pour que la capture d'écran fournie corresponde, puis sélectionnez "Créer".

Validation de l'état du backend
Dans la console Cloud, assurez-vous que le backend "xlb" est opérationnel (vert sur la capture d'écran fournie).

9. Valider que le NEG est accessible depuis Internet
Rappelez-vous que l'adresse IP externe statique utilisée lors de la création de l'équilibreur de charge est désormais l'adresse IP de l'interface de vos points de terminaison réseau. Effectuons une validation de l'adresse IP avant d'exécuter notre test final.
Depuis Cloud Shell
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
Résultat (votre adresse IP sera différente)
Sortie de Cloud Shell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
L'adresse IP de l'interface de l'équilibreur de charge global vous permet d'accéder au backend du point de terminaison réseau. Notez que, dans l'atelier de programmation, le point de terminaison est une instance GCE. Toutefois, vous pouvez l'utiliser avec des points de terminaison sur site, par exemple.
Depuis votre poste de travail local, lancez un terminal et effectuez un curl vers l'adresse IP de l'équilibreur de charge.
Depuis votre poste de travail, effectuez une requête curl sur l'adresse IP du frontend. Observez le code 200 OK et les détails de la page, qui comprennent le nom et la région de l'instance NEG.
myworkstation$ curl -v 34.96.103.132
* Trying 34.96.103.132...
* TCP_NODELAY set
* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)
> GET / HTTP/1.1
> Host: 34.96.103.132
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 10 Aug 2021 01:21:54 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT
< ETag: "24-5c929ae7384f4"
< Accept-Ranges: bytes
< Content-Length: 36
< Content-Type: text/html
< Via: 1.1 google
<
Page on on-prem-neg-2 in us-west1-a
* Connection #0 to host 34.96.103.132 left intact
* Closing connection 0
Félicitations, vous avez déployé un équilibreur de charge hybride de couche 7 avec des NEG.
Bravo ! Vous avez terminé cet atelier de programmation.
Points abordés
- Créer un VPC personnalisé
- Créer deux machines virtuelles (VM) utilisées comme groupe de points de terminaison du réseau (NEG)
- Créer un équilibreur de charge hybride, un service de backend et des vérifications de l'état associées
- Créer une règle de pare-feu qui autorise l'accès à l'équilibreur de charge
- Valider l'accessibilité du groupe de points de terminaison du réseau
10. Étapes de nettoyage
Dans l'interface utilisateur de la console Cloud, identifiez et cochez l'équilibreur de charge "xlb", puis sélectionnez "Supprimer" via Services réseau → Équilibrage de charge. Une fois sélectionnés, cochez "on-premise-backend service" et "on-premise-health-check", puis sélectionnez "Supprimer".

Dans l'UI de la console Cloud, accédez à Compute Engine → Groupes de points de terminaison du réseau. Une fois sélectionnées, cochez "on-prem-neg-1" et "on-prem-neg-2", puis sélectionnez "Supprimer".

Supprimer les composants de l'atelier depuis Cloud Shell
gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet gcloud compute routers delete crnat --region us-west1 --quiet gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet gcloud compute firewall-rules delete fw-allow-health-check --quiet gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet gcloud compute networks delete hybrid-network-lb --quiet gcloud compute addresses delete hybrid-lb-ip --global --quiet