1. Introduction
Une stratégie hybride est une solution pragmatique qui vous permet de vous adapter à l'évolution de la demande du marché et de moderniser progressivement vos applications. La compatibilité hybride avec les équilibreurs de charge HTTP(S) internes et externes de Google Cloud étend l'équilibrage de charge cloud aux backends hébergés sur site et dans d'autres clouds. C'est un atout essentiel pour votre stratégie hybride. Cela peut être temporaire pour permettre la migration vers une solution cloud moderne ou 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 global HTTP(S) externe. Bien que le NEG de l'atelier se trouve dans GCP, la même procédure est utilisée pour communiquer avec des ressources publiques ou sur site avec une joignabilité 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 les vérifications d'état associées
- Créer une règle de pare-feu qui autorise l'accès à l'équilibreur de charge
- Cloud Router et NAT seront créés pour autoriser les mises à jour de packages depuis Internet
- Valider la joignabilité du groupe de points de terminaison du réseau
Prérequis
- Avoir des connaissances sur les é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 d'attribution de noms, vous pouvez utiliser ce que vous voulez et la mettre à jour à tout moment.
- L'ID du projet doit être unique parmi tous les projets Google Cloud et ne peut pas être modifié une fois qu'il est défini. La console Cloud génère automatiquement une chaîne unique. généralement, vous ne vous souciez
pas de ce que c’est. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (il est généralement identifié comme
PROJECT_ID
). Si cela ne vous convient pas, générez-en un autre au hasard ou essayez le vôtre pour voir s'il est disponible. Ensuite, il est « 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 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.
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 cela ne soit pas obligatoire pour la mise en réseau hybride, l'instance de calcul a besoin d'une connexion Internet pour télécharger des applications et des mises à jour.
Dans cette tâche, vous allez créer un routeur Cloud Router et une instance NAT qui permettent d'établir une connexion 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).
Depuis 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'
Depuis 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 incluant votre point de terminaison sur site
Commencez par créer un NEG nommé on-prem-neg-1 et on-prem-neg-2. Vous spécifierez également que l'équilibreur de charge doit tenir compte du fait que ces points de terminaison se trouvent dans la zone GCP us-west1-a à des fins de routage et d'équilibrage de charge. Pour les mesures de l'équilibrage de charge basé sur la proximité utilisées pour l'équilibrage de charge, nous vous recommandons de faire correspondre la zone configurée à n'importe quelle zone associée à la région du rattachement d'interconnexion ou de la passerelle VPN.
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 sur site ou Internet comme point de terminaison du réseau
Depuis 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 précédemment à l'étape précédente. pour chaque élément négatif, on-prem-neg-1 & on-prem-neg-2.
.
Dans l'associé Cloud Shell on-prem-neg-1, mettez à jour x.x.x.x avec votre adresse IP 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 l'associé Cloud Shell on-prem-neg-2, mettez à jour x.x.x.x avec 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 de l'état HTTP, le service de backend et pare-feu
Au cours de 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 du trafic à votre NEG.
Commencez par créer une vérification d'état nommée "on-prem-health-check" pour surveiller l'état de tous les 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 nommé 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 depuis les 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 au 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
Ajouter 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
Ajouter 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 du 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 depuis la console Cloud.
8. Créer l'équilibreur de charge HTTP externe associer le service de backend
Dans la console Cloud, accédez à "Équilibrage de charge" et 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". conformément à la capture d'écran ci-dessous, qui autorise l'accès public à votre VM
Fournir "xlb" comme nom de l'équilibreur de charge, puis sélectionnez le service de backend "on-prem-backend-service" créé précédemment puis sur "OK" conformément à la capture d'écran fournie
Sélectionnez "Configuration du frontend" et modifiez le nom "xlb-fe". et sélectionnez l'adresse IPv4 statique précédemment créée, veillez à mettre en miroir la capture d'écran fournie.
Sélectionnez "Vérifier et finaliser". correspondant à la capture d'écran fournie et sélectionnez "Créer".
Validation de l'état des backends
Dans la console Cloud, vérifiez que le backend "xlb" est opérationnel (vert, conformément à la capture d'écran fournie)
9. Vérifier que le NEG est accessible depuis Internet
Rappelez-vous que l'adresse IP statique externe utilisée lors de la création de l'équilibreur de charge est désormais l'adresse IP de frontend de vos points de terminaison réseau. Nous allons valider 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)
Résultat de Cloud Shell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
Vous pouvez accéder au backend du point de terminaison du réseau à l'aide de l'adresse IP de l'interface de l'équilibreur de charge global. Notez que dans l'atelier de programmation, le point de terminaison est une instance GCE, mais vous pouvez l'utiliser avec des points de terminaison sur site, par exemple.
Depuis votre poste de travail local, lancez un terminal et exécutez une commande curl sur l'adresse IP de l'équilibreur de charge.
Depuis votre poste de travail, exécutez une requête curl sur l'adresse IP de l'interface. Observez le code 200 OK ainsi que les détails de la page comprenant le nom d'instance à exclure et la région.
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 réussi à déployer un équilibreur de charge hybride L7 avec des NEG
Félicitations, vous avez terminé l'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 les vérifications d'état associées
- Créer une règle de pare-feu qui autorise l'accès à l'équilibreur de charge
- Valider la joignabilité du groupe de points de terminaison du réseau
10. Étapes de nettoyage
Dans l'UI de la console Cloud, identifiez et cochez la case "xlb" et sélectionnez "Supprimer" via Services réseau → Équilibrage de charge. Cochez la case "on-prem-backend service". & ‘on-premise-health-check' puis sélectionnez "Supprimer"
Dans l'interface utilisateur de la console Cloud, accédez à Compute Engine > Groupes de points de terminaison du réseau. Cochez la case "on-prem-neg-1". & ‘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