Ce document fournit des instructions de configuration d'un équilibreur de charge réseau proxy externe global avec un proxy SSL cible et des backends de groupe d'instances de VM. Avant de commencer, consultez la page Présentation de l'équilibreur de charge réseau proxy externe pour en savoir plus sur le fonctionnement de ces équilibreurs de charge.
Vue d'ensemble de la configuration
Cet exemple montre comment configurer un équilibreur de charge réseau proxy externe pour un service existant dans deux régions: la région A et la région B. Vous allez configurer les éléments suivants :
- Quatre instances réparties dans deux régions
- Des groupes d'instances pour organiser les instances
- Plusieurs composants backend, parmi lesquels :
- Vérification d'état : permet de surveiller l'état de santé des instances
- Service de backend : surveille les groupes d'instances et empêche le dépassement du taux d'utilisation configuré
- Backends : pour organiser les groupes d'instances
- Plusieurs composants frontend, parmi lesquels :
- Une ressource de certificat SSL. Vous pouvez soit utiliser un certificat autogéré (configuration dans laquelle vous fournissez votre propre certificat SSL), soit un certificat géré par Google (auquel cas Google émet un certificat valide pour tous vos domaines). Pour en savoir plus, consultez la documentation concernant les Types de certificats SSL.
- Le proxy SSL proprement dit et son certificat SSL
- Une adresse IPv4 externe statique et une règle de transfert permettant d'envoyer le trafic utilisateur au proxy
- Une adresse IPv6 externe statique et une règle de transfert permettant d'envoyer le trafic utilisateur au proxy
- Une règle de pare-feu qui autorise le trafic provenant de l'équilibreur de charge et du vérificateur d'état à accéder aux instances
- Vous pouvez également définir une règle SSL pour contrôler les fonctionnalités SSL que votre équilibreur de charge négocie avec les clients.
Ensuite, vous allez pouvoir tester votre configuration.
Autorisations
Pour suivre ce guide, vous devez savoir comment 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
Configurer le réseau et les sous-réseaux
Pour créer les exemples de réseau et de sous-réseaux, procédez comme suit :
Console
Pour assurer la compatibilité avec le trafic IPv4 et IPv6, procédez comme suit:
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Saisissez un Nom pour le réseau.
Facultatif : Si vous souhaitez configurer des plages d'adresses IPv6 internes sur les sous-réseaux de ce réseau, procédez comme suit :
- Dans le champ Plage IPv6 interne ULA du réseau VPC, sélectionnez Activée.
Dans le champ Allouer une plage IPv6 interne, sélectionnez Automatiquement ou Manuellement.
Si vous sélectionnez Manuellement, saisissez une plage
/48
comprise dans la plagefd20::/20
. Si la plage est utilisée, vous êtes invité à en fournir une autre.
Dans le champ Mode de création du sous-réseau, sélectionnez Personnalisé.
Dans la section Nouveau sous-réseau, configurez les champs suivants :
- Dans le champ Nom, indiquez un nom pour le sous-réseau.
- Dans le champ Région, sélectionnez une région.
- Dans le champ Type de pile d'adresses IP, sélectionnez IPv4 et IPv6 (double pile).
Dans le champ Plage d'adresses IP, saisissez une plage d'adresses IP. Il s'agit de la plage d'adresses IPv4 principale du sous-réseau.
Bien que vous puissiez configurer une plage d'adresses IPv4 pour le sous-réseau, vous ne pouvez pas choisir la plage d'adresses IPv6 pour le sous-réseau. Google fournit un bloc CIDR IPv6 de taille fixe (
/64
).Dans le champ Type d'accès IPv6, sélectionnez Externe.
Cliquez sur OK.
Pour ajouter un sous-réseau dans une autre région, cliquez sur Ajouter un sous-réseau et répétez les étapes précédentes.
Cliquez sur Créer.
Pour assurer la compatibilité avec le trafic IPv4 uniquement, procédez comme suit :
Dans la console Google Cloud, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Dans le champ Nom, saisissez un nom pour le réseau.
Dans le champ Mode de création du sous-réseau, sélectionnez Personnalisé.
Dans la section Nouveau sous-réseau, configurez les champs suivants :
- Dans le champ Nom, indiquez un nom pour le sous-réseau.
- Dans le champ Région, sélectionnez une région.
- Pour Type de pile IP, sélectionnez IPv4 (pile simple).
- Dans le champ Plage d'adresses IP, saisissez la plage d'adresses IPv4 principale du sous-réseau.
Cliquez sur OK.
Pour ajouter un sous-réseau dans une autre région, cliquez sur Ajouter un sous-réseau et répétez les étapes précédentes.
Cliquez sur Créer.
gcloud
Créez le réseau VPC en mode personnalisé:
gcloud compute networks create NETWORK \ [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \ --switch-to-custom-subnet-mode
Dans le réseau, créez un sous-réseau pour les backends.
Pour le trafic IPv4 et IPv6, utilisez la commande suivante pour mettre à jour un sous-réseau:
gcloud compute networks subnets create SUBNET \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=NETWORK \ --region=REGION_A
gcloud compute networks subnets create SUBNET_B \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=NETWORK \ --region=REGION_B
Pour le trafic IPv4 uniquement, utilisez la commande suivante:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION_A
gcloud compute networks subnets create SUBNET_B \ --stack-type=IPV4_ONLY \ --ipv6-access-type=EXTERNAL \ --network=NETWORK \ --region=REGION_B
Remplacez les éléments suivants :
NETWORK
: nom du réseau VPC.ULA_IPV6_RANGE
: préfixe/48
de la plagefd20::/20
utilisée par Google pour les plages de sous-réseaux IPv6 internes. Si vous n'utilisez pas l'option--internal-ipv6-range
, Google sélectionne un préfixe/48
pour le réseau.SUBNET
: nom du sous-réseau
REGION_A
ouREGION_B
: nom de la région
Configurer des instances et des groupes d'instances
Cette section explique comment créer des instances et des groupes d'instances, puis ajouter les instances aux groupes d'instances. Un système de production utilise normalement des groupes d'instances gérés qui s'appuient sur des modèles d'instances, mais cette configuration-ci est plus rapide pour la phase de test initiale.
Créer des instances
Créez ces instances avec le tag ssl-lb
. Celui-ci sera utilisé par la suite par la règle de pare-feu.
Console
Créer des instances
Dans Google Cloud Console, accédez à la page Instances de VM.
Cliquez sur Créer une instance.
Pour Nom, définissez
vm-a1
.Définissez le paramètre Zone sur ZONE_A.
Cliquez sur Options avancées.
Cliquez sur Mise en réseau et configurez les champs suivants :
- Dans le champ Tags réseau, saisissez
ssl-lb
etallow-health-check-ipv6
.
- Dans le champ Tags réseau, saisissez
Dans la section Interfaces réseau, cliquez sur Modifier et apportez les modifications suivantes :
- Sélectionnez le réseau.
Sélectionnez un sous-réseau.
Dans le champ Type de pile d'adresses IP, sélectionnez IPv4 et IPv6 (double pile).
Cliquez sur OK.
Cliquez sur Gestion. Saisissez le script suivant dans le champ Script de démarrage.
sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
Conservez les valeurs par défaut des autres champs.
Cliquez sur Créer.
Créez une instance nommée
vm-a2
en réutilisant les mêmes paramètres, excepté pour le script de démarrage que vous définissez comme suit :sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html
Créez une instance nommée
vm-b1
en réutilisant les mêmes paramètres, excepté pour le champ Zone que vous définissez surZONE_B
et pour le script de démarrage que vous définissez comme suit :sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html
Créez une instance nommée
vm-b2
en réutilisant les mêmes paramètres, excepté pour le champ Zone que vous définissez surZONE_B
et pour le script de démarrage que vous définissez comme suit :sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Créez
vm-a1
dans la zoneZONE_A
.gcloud compute instances create vm-a1 \ --image-family debian-12 \ --image-project debian-cloud \ --tags ssl-lb \ --zone ZONE_A \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html EOF"
Créez
vm-a2
dans la zoneZONE_A
.gcloud compute instances create vm-a2 \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=ssl-lb \ --zone=ZONE_A \ --metadata=startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html EOF"
Créez
vm-b1
dans la zoneZONE_B
.gcloud compute instances create vm-b1 \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=ssl-lb \ --zone=ZONE_B \ --metadata=startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html EOF"
Créez
vm-b2
dans la zoneZONE_B
.gcloud compute instances create vm-b2 \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=ssl-lb \ --zone=ZONE_B \ --metadata=startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html EOF"
Créer un groupe d'instances dans chaque zone et ajouter des instances
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur Créer un groupe d'instances.
Définissez le paramètre Nom sur
instance-group-a
.Définissez le paramètre Zone sur
ZONE_A
.Sous Mappage des ports, cliquez sur Ajouter un port. Un équilibreur de charge envoie le trafic à un groupe d'instances via un port nommé. Créez un port nommé pour mapper le trafic entrant sur un numéro de port spécifique.
- Saisissez
ssl-lb
pour le Nom du port et443
dans le champ Numéros de ports.
- Saisissez
Sous Définition de l'instance, cliquez sur Sélectionner des instances existantes.
Dans la liste des instances de VM, sélectionnez
vm-a1
etvm-a2
.Ne modifiez pas les autres paramètres.
Cliquez sur Créer.
Répétez ces étapes, mais définissez les paramètres suivants :
- Nom :
instance-group-b
- Zone :
ZONE_B
- Nom du port :
ssl-lb
et Numéros de ports :443
- Instances : vm-b1 et vm-b2.
- Nom :
Vérifiez que vous disposez désormais de deux groupes d'instances, chacun d'entre eux comportant deux instances.
gcloud
Créez le groupe d'instances instance-group-a.
gcloud compute instance-groups unmanaged create instance-group-a --zone ZONE_A
Définissez un port nommé pour le groupe d'instances :
gcloud compute instance-groups set-named-ports instance-group-a \ --named-ports=ssl-lb:443 \ --zone=ZONE_A
Ajouter
vm-a1
etvm-a2
à instance-group-agcloud compute instance-groups unmanaged add-instances instance-group-a \ --instances=vm-a1,vm-a2 \ --zone=ZONE_A
Créez le groupe d'instances
instance-group-b
.gcloud compute instance-groups unmanaged create instance-group-b --zone ZONE_B
Définissez un port nommé pour le groupe d'instances :
gcloud compute instance-groups set-named-ports instance-group-b \ --named-ports=ssl-lb:443 \ --zone=ZONE_B
Ajouter
vm-b1
etvm-b2
à instance-group-bgcloud compute instance-groups unmanaged add-instances instance-group-b \ --instances=vm-b1,vm-b2 \ --zone=ZONE_B
Vous disposez désormais d'un groupe d'instances dans chacune des deux régions, chacun d'entre eux contenant deux instances.
Créer une règle de pare-feu pour l'équilibreur de charge SSL
Configurez le pare-feu pour autoriser le trafic provenant de l'équilibreur de charge et du vérificateur d'état à accéder aux instances.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Cliquez sur Créer une règle de pare-feu.
Dans le champ Nom, saisissez
allow-ssl-lb-and-health
.Sélectionnez le réseau.
Sous Cibles, sélectionnez Tags cibles spécifiés.
Définissez Tags cibles sur
ssl-lb
.Définissez Filtre source sur Plages IPv4.
Définissez Plages IPv4 sources sur
130.211.0.0/22
et35.191.0.0/16
.Sous Protocoles et ports, définissez le paramètre Protocoles et ports spécifiés sur
tcp:443
.Cliquez sur Créer.
gcloud
gcloud compute firewall-rules create allow-ssl-lb-and-health \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=ssl-lb \ --allow=tcp:443
Si vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIVE. Pour plus d'informations, consultez la section État d'une ressource de certificat SSL géré par Google.
gcloud compute ssl-certificates list
Créer une règle de pare-feu de vérification d'état IPv6
Assurez-vous de disposer d'une règle d'entrée applicable aux instances faisant l'objet d'un équilibrage de charge et qui autorise le trafic issu des systèmes de vérification d'état Google Cloud (2600:2d00:1:b029::/64
). Cet exemple utilise le tag cible allow-health-check-ipv6
pour identifier les instances de VM auxquelles la règle s'applique.
Sans cette règle de pare-feu, la règle d'entrée interdite par défaut bloque les entrées au trafic vers les instances backend.
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Pour autoriser le trafic de sous-réseau IPv6, cliquez à nouveau sur Créer une règle de pare-feu, puis saisissez les informations suivantes :
- Nom :
fw-allow-lb-access-ipv6
- Réseau :
NETWORK
- Priorité :
1000
- Sens du trafic : entrée
- Cibles : Tags cibles spécifiés
- Dans le champ Tags cibles, saisissez
allow-health-check-ipv6
. - Filtre source : Plages IPv6
- Plages IPv4 sources :
2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
- Protocoles et ports : tout autoriser
- Nom :
Cliquez sur Créer.
gcloud
Créez la règle de pare-feu fw-allow-lb-access-ipv6
pour autoriser la communication depuis le sous-réseau :
gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \ --rules=all
Configurer l'équilibreur de charge
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 proxy, puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
- Pour Déploiement mondial ou dans une seule région, sélectionnez Recommandé pour les charges de travail à l'échelle mondiale, puis cliquez sur Suivant.
- Pour Génération d'équilibreur de charge, sélectionnez Équilibreur de charge réseau proxy externe global, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
Définissez le paramètre Nom sur my-ssl-lb
.
Configurer le backend
- Cliquez sur Configuration du backend.
- Sous Type de backend, sélectionnez Groupes d'instances.
- Définissez le paramètre Protocole sur SSL.
- Dans la liste Règle de sélection des adresses IP, sélectionnez Préférer IPv6.
- Pour le Port nommé, saisissez
ssl-lb
. - Acceptez la valeur par défaut pour le champ Délai avant expiration.
- Laissez le paramètre Type de backend défini sur Groupes d'instances.
- Configurez le premier backend :
- Sous Nouveau backend, sélectionnez le groupe d'instances
instance-group-a
. - Définissez le paramètre Numéros de ports sur
443
. - Conservez les valeurs par défaut restantes.
- Sous Nouveau backend, sélectionnez le groupe d'instances
- Configurez le deuxième backend :
- Cliquez sur Ajouter un backend.
- Sélectionnez le groupe d'instances
instance-group-b
. - Définissez le paramètre Numéros de ports sur
443
. - Cliquez sur OK.
- Configurez la vérification d'état :
- Sous Vérification d'état, sélectionnez Créer une vérification d'état.
- Définissez le paramètre Nom de la vérification d'état sur
my-ssl-health-check
. - Sous Protocole, sélectionnez SSL.
- Conservez les valeurs par défaut restantes.
- Cliquez sur Save and continue (Enregistrer et continuer).
- Dans la console Google Cloud, vérifiez qu'une coche apparaît à côté de Configuration du backend. Si ce n'est pas le cas, vérifiez que vous avez bien suivi la procédure ci-dessous dans son intégralité.
Configuration du frontend
- Cliquez sur Configuration de l'interface.
- Saisissez le nom
my-ssl-lb-forwarding-rule
. - Sous Protocole, sélectionnez SSL.
- Sous Adresse IP, sélectionnez Créer une adresse IP :
- Saisissez le nom
ssl-lb-static-ipv4
. - Cliquez sur Réserver.
- Saisissez le nom
- Sous Certificat, sélectionnez Créer un certificat.
- Saisissez le nom
my-ssl-cert
. - Si vous choisissez Importer mon certificat, procédez comme suit :
- Collez votre certificat ou cliquez sur Importer pour accéder au fichier de votre certificat.
- Collez votre clé privée ou cliquez sur Importer pour accéder au fichier de votre clé privée.
- Si vous avez choisi de Créer un certificat géré par Google, saisissez un Domaine.
- Pour saisir des domaines supplémentaires, cliquez sur Ajouter un domaine.
- Cliquez sur Créer.
- Pour ajouter des ressources de certificat en plus de la ressource de certificat SSL principale, cliquez sur Certificats supplémentaires. Sélectionnez ensuite un autre certificat dans le menu Certificats ou cliquez sur Créer un certificat, puis suivez les instructions ci-dessus.
- (Facultatif) Pour créer une règle SSL :
- Sous Règle SSL, sélectionnez Créer une règle.
- Saisissez le nom
my-ssl-policy
. - Sous Version minimale de TLS, sélectionnez TLS 1.0.
- Dans le champ Profil, sélectionnez Moderne. Les Fonctionnalités activées et les Fonctionnalités désactivées s'affichent.
- Cliquez sur Enregistrer.
- Facultatif : Activez le protocole de proxy.
- Cliquez sur OK.
- Vérifiez qu'une coche verte est affichée à côté de Configuration du frontend dans la console Google Cloud. Dans le cas contraire, vérifiez que vous avez bien suivi la procédure ci-dessus dans son intégralité.
- Cliquez sur OK.
- Ajoutez la première règle de transfert :
Vérifier et finaliser
- Cliquez sur Vérifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui sera utilisée pour créer l'équilibreur de charge.
- Cliquez sur Créer.
gcloud
- Créez une vérification d'état.
gcloud compute health-checks create ssl my-ssl-health-check --port=443
- Créez un service de backend.
gcloud beta compute backend-services create my-ssl-lb \ --load-balancing-scheme EXTERNAL_MANAGED \ --global-health-checks \ --protocol=SSL \ --port-name=ssl-lb \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=my-ssl-health-check \ --timeout=5m \ --global
Vous pouvez également configurer une communication non chiffrée entre l'équilibreur de charge et les instances à l'aide de l'indicateur
--protocol=TCP
. Ajoutez des groupes d'instances au service de backend.
gcloud compute backend-services add-backend my-ssl-lb \ --instance-group=instance-group-a \ --instance-group-zone=ZONE_A \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --global
gcloud compute backend-services add-backend my-ssl-lb \ --instance-group=instance-group-b \ --instance-group-zone=ZONE_B \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --global
- Configurez votre ressource de certificat SSL.
Si vous utilisez des certificats autogérés, vous devez déjà disposer d'au moins un certificat SSL à importer. Si ce n'est pas le cas, consultez la présentation des certificats SSL. Lorsque vous utilisez plusieurs certificats SSL, vous devez les créer un par un.
Si vous utilisez des certificats SSL autogérés et que vous ne disposez ni d'une clé privée ni d'un certificat signé, vous pouvez créer et utiliser un certificat autosigné à des fins de test.
Pour créer une ressource de certificat SSL autogéré, procédez comme suit :
gcloud compute ssl-certificates create my-ssl-cert \ --certificate=CRT_FILE_PATH \ --private-key=KEY_FILE_PATH
Pour créer une ressource de certificat SSL géré par Google, procédez comme suit :
gcloud compute ssl-certificates create www-ssl-cert \ --domains=DOMAIN_1,DOMAIN_2
- Configurez un proxy SSL cible.
Les équilibreurs de charge réseau proxy externes permettent de créer un proxy SSL cible comportant de un à quinze certificats SSL. Avant d'exécuter cette commande, vous devez créer une ressource de certificat SSL pour chaque certificat.
Si vous souhaitez activer l'en-tête de proxy, définissez le paramètre --proxy-header sur
PROXY_V1
au lieu denone
. Vous pouvez éventuellement associer une règle SSL au proxy cible. Commencez par créer la règle.gcloud compute ssl-policies create my-ssl-policy \ --profile=MODERN \ --min-tls-version=1.0
Ensuite, associez la règle au proxy cible :
gcloud beta compute target-ssl-proxies create my-ssl-lb-target-proxy \ --backend-service=my-ssl-lb \ --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \ --ssl-policy=my-ssl-policy \ --proxy-header=NONE
- Réservez des adresses IP statiques globales.
Vos clients utilisent ces adresses IP pour accéder à votre service avec équilibrage de charge.
gcloud compute addresses create ssl-lb-static-ipv4 \ --ip-version=IPV4 \ --global
gcloud compute addresses create ssl-lb-static-ipv6 \ --ip-version=IPV6 \ --global
- Configurez des règles de transfert globales.
Créez des règles de transfert globales associées au proxy cible. Remplacez LB_STATIC_IP et LB_STATIC_IPV6 par les adresses IP que vous avez générées lorsque vous avez réservé les adresses IP statiques globales.
gcloud beta compute forwarding-rules create my-ssl-lb-forwarding-rule \ --load-balancing-scheme EXTERNAL_MANAGED \ --global \ --target-ssl-proxy=my-ssl-lb-target-proxy \ --address=LB_STATIC_IP \ --ports=443
Connecter un domaine à votre équilibreur de charge
Une fois l'équilibreur de charge créé, notez l'adresse IP associée à celui-ci (par exemple, 30.90.80.100
). Pour faire pointer votre domaine vers votre équilibreur de charge, créez un enregistrement A
à l'aide de votre service d'enregistrement de domaine. Si vous avez ajouté plusieurs domaines à votre certificat SSL, vous devez ajouter un enregistrement A
à chacun d'eux, tous pointant vers l'adresse IP de l'équilibreur de charge. Par exemple, pour créer des enregistrements A
pour www.example.com
et example.com
, utilisez le code suivant :
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Si vous utilisez Cloud DNS comme fournisseur DNS, consultez la section Ajouter, modifier et supprimer des enregistrements.
Tester l'équilibreur de charge
Dans votre navigateur Web, connectez-vous à votre adresse IP statique via HTTPS. Dans cette configuration de test, les instances utilisent des certificats autosignés. C'est pourquoi vous voyez un avertissement dans votre navigateur la première fois que vous accédez à cette page. Cliquez sur l'avertissement pour afficher la page. Remplacez IP_ADDRESS par l'adresse IPv4 ou IPv6 que vous avez créée précédemment.
https://IP_ADDRESS
Vous devriez voir l'un des hôtes de la région la plus proche de vous. Actualisez la page jusqu'à ce que l'autre instance présente dans cette région apparaisse. Pour afficher les instances de l'autre région, arrêtez celles de la région la plus proche de vous.
Vous pouvez également utiliser curl
depuis l'interface de ligne de commande de votre machine locale.
Si vous utilisez un certificat autosigné sur le proxy SSL, vous devez également spécifier l'option -k
. L'option curl -k
permet à curl de fonctionner même lorsque vous utilisez un certificat autosigné ou lorsque vous n'utilisez pas de certificat du tout. Si vous disposez d'un certificat normal, vous pouvez supprimer ce paramètre. Vous ne devez utiliser l'option -k
que pour tester votre propre site. Dans des circonstances normales, un certificat valide est une mesure de sécurité importante. Souvenez-vous que vous ne devez pas ignorer les avertissements concernant les certificats.
Remplacez IP_ADDRESS par l'adresse IPv4 ou IPv6 que vous avez créée précédemment.
curl -k https://IP_ADDRESS
Si vous ne parvenez pas à atteindre l'équilibreur de charge, suivez la procédure décrite dans la section Résoudre les problèmes de configuration.
Options de configuration supplémentaires
Cette section développe l'exemple de configuration et propose d'autres options de configuration. Toutes les tâches décrites ici sont facultatives. Vous pouvez les exécuter dans n'importe quel ordre.
Protocole de PROXY pour la conservation des informations de connexion client
L'équilibreur de charge réseau proxy met fin aux connexions TCP du client et crée des connexions aux instances. Par défaut, l'adresse IP et les informations de port d'origine du client ne sont pas conservées.
Pour conserver et envoyer les informations de connexion d'origine à vos instances, activez le protocole de PROXY (version 1). Dans le cadre de la requête, ce protocole envoie à l'instance un en-tête supplémentaire contenant les éléments d'origine : l'adresse IP source, l'adresse IP de destination, ainsi que les numéros de ports.
Assurez-vous que les instances backend de l'équilibreur de charge réseau proxy exécutent des serveurs compatibles avec les en-têtes de protocole de PROXY. Si les serveurs ne sont pas configurés pour accepter les en-têtes de protocole de PROXY, les instances backend renvoient des réponses vides.
Si vous définissez le protocole de PROXY pour le trafic utilisateur, vous pouvez également le définir pour vos vérifications de l'état. Si vous effectuez la vérification d'état et la diffusion de contenu sur le même port, définissez l'en-tête --proxy-header
de la vérification d'état pour qu'il corresponde aux paramètres de votre équilibreur de charge.
L'en-tête de protocole de PROXY est généralement constitué d'une seule ligne de texte parfaitement lisible, au format suivant :
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
L'exemple suivant illustre un protocole de PROXY :
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
Dans l'exemple précédent, l'adresse IP du client est 192.0.2.1
, l'adresse IP d'équilibrage de charge est 198.51.100.1
, le port client est 15221
et le port de destination est 110
.
Lorsque l'adresse IP du client n'est pas connue, l'équilibreur de charge génère un en-tête de protocole de PROXY au format suivant :
PROXY UNKNOWN\r\n
Mettre à jour l'en-tête du protocole de PROXY pour le proxy cible
L'exemple de configuration d'équilibreur de charge de cette page vous montre comment activer l'en-tête du protocole de PROXY lors de la création de l'équilibreur de charge réseau proxy. Pour modifier l'en-tête du protocole de PROXY pour un proxy cible existant, suivez les instructions suivantes.
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Modifier à côté du nom de votre équilibreur de charge.
- Cliquez sur Configuration de l'interface.
- Définissez la valeur du champ Protocole de proxy sur On (Activé).
- Cliquez sur Mettre à jour pour enregistrer vos modifications.
gcloud
Dans la commande suivante, modifiez le champ --proxy-header
et définissez-le sur NONE
ou PROXY_V1
en fonction de vos besoins.
gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \ --proxy-header=[NONE | PROXY_V1]
Configurer l'affinité de session
Les procédures qui suivent montrent comment mettre à jour un service de backend pour l'exemple d'équilibreur de charge proxy SSL afin que le service de backend utilise l'affinité basée sur les adresses IP client.
Lorsque l'affinité basée sur les adresses IP client est activée, l'équilibreur de charge dirige les requêtes d'un client particulier toujours vers la même VM de backend, grâce à un hachage créé à partir de l'adresse IP du client et de l'adresse IP de l'équilibreur de charge (l'adresse IP externe d'une règle de transfert externe).
Console
Pour activer l'affinité de session basée sur les adresses IP client, procédez comme suit :
Dans la console Google Cloud, accédez à la page Équilibrage de charge.
Cliquez sur Backends.
Cliquez sur my-ssl-lb (nom du service de backend que vous avez créé pour cet exemple), puis sur Modifier.
Sur la page Détails du service backend, cliquez sur Configuration avancée.
Sous Affinité de session, sélectionnez IP client dans le menu.
Cliquez sur Mettre à jour.
gcloud
Exécutez la commande my-ssl-lb
suivante pour mettre à jour le service de backend, en spécifiant l'affinité de session basée sur les adresses IP client :
gcloud compute backend-services update my-ssl-lb \ --global \ --session-affinity=CLIENT_IP
API
Pour définir l'affinité de session basée sur les adresses IP client, envoyez une requête PATCH
à la méthode backendServices/patch
.
PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-ssl-lb
{
"sessionAffinity": "CLIENT_IP"
}
Activer le drainage de connexion
Vous pouvez activer le drainage de connexion sur les services de backend afin de garantir à vos utilisateurs un temps d'interruption minimal lorsqu'une instance assurant la diffusion du trafic est arrêtée, supprimée manuellement ou supprimée par un autoscaler. Pour en savoir plus sur le drainage de connexion, consultez la documentation Activer le drainage de connexion.
Étape suivante
- Convertir l'équilibreur de charge réseau proxy en IPv6
- Journalisation et surveillance de l'équilibreur de charge réseau proxy externe
- Règles SSL pour les protocoles SSL et TLS
- Utiliser des règles SSL pour les protocoles SSL et TLS
- Convertir en backends à double pile
- Nettoyer une configuration d'équilibrage de charge