Configurer un équilibreur de charge HTTP(S) externe global (classique) avec une connectivité hybride

Cette page explique comment déployer un équilibreur de charge HTTP(S) externe global (classique) pour équilibrer le trafic sur les points de terminaison du réseau qui sont sur site ou dans d'autres clouds publics, et qui sont accessibles via une connectivité hybride.

Une fois ces tâches terminées, vous pouvez explorer la possibilité d'activer des services supplémentaires (tels que Cloud CDN et Google Cloud Armor) et des fonctionnalités avancées de gestion du trafic.

Si vous ne l'avez pas déjà fait, consultez la page Présentation des NEG de connectivité hybride pour comprendre la configuration réseau requise pour mettre en œuvre l'équilibrage de charge hybride.

Vue d'ensemble de la configuration

L'exemple de cette page configure l'exemple de déploiement suivant :

Exemple d'équilibreur de charge HTTP(S) externe pour la connectivité hybride (cliquez pour agrandir)
Exemple d'équilibreur de charge HTTP(S) externe pour la connectivité hybride (cliquez pour agrandir)

Vous devez configurer la connectivité hybride avant de tenter de mettre en œuvre un déploiement d'équilibrage de charge hybride. Cette rubrique n'inclut pas la configuration de la connectivité hybride.

Pour cette étape de configuration, utilisez la documentation correspondant à votre choix de produit de connectivité hybride (Cloud VPN ou Cloud Interconnect, en interconnexion dédiée ou partenaire).

Autorisations

Vous devez disposer des autorisations suivantes pour configurer l'équilibrage de charge hybride :

  • Sur Google Cloud

  • Sur votre environnement situé sur site ou sur un cloud différent de Google Cloud

    • Autorisation permettant de configurer des points de terminaison du réseau pour accéder depuis Google Cloud aux services situés dans vos environnements sur site ou sur d'autres cloud grâce à une combinaison IP:Port. Pour plus de précisions, contactez l'administrateur réseau de votre environnement.
    • Autorisation permettant de créer des règles de pare-feu dans vos environnements situés sur site ou sur d'autres cloud, afin de permettre aux vérifications d'état de Google d'atteindre les points de terminaison.

En outre, pour suivre les instructions de cette page, vous devez créer un NEG de connectivité hybride, un équilibreur de charge et des NEG zonaux (et leurs points de terminaison) allant servir de backends basés sur Google Cloud pour l'équilibreur de charge.

Vous devez être propriétaire ou éditeur du projet, ou disposer des rôles IAM Compute Engine suivants.

Tâche Rôle requis
Créer et modifier des composants d'équilibreur de charge Administrateur réseau
Créer et modifier des NEG Administrateur d'instances de Compute
Ajouter et supprimer des règles de pare-feu Administrateur de sécurité

Établir une connectivité hybride

Votre environnement Google Cloud et vos environnements situés sur site ou sur d'autres cloud doivent être connectés via une connectivité hybride, en utilisant des rattachements de VLAN Cloud Interconnect ou des tunnels Cloud VPN avec Cloud Router. Nous vous recommandons d'utiliser une connexion à haute disponibilité.

Lorsque le routage dynamique global est activé, le routeur Cloud Router apprend le point de terminaison spécifique par l'intermédiaire de BGP et le programme dans votre réseau VPC Google Cloud. Le routage dynamique régional n'est pas pris en charge. De même, les routes statiques ne sont pas prises en charge.

Le réseau VPC Google Cloud que vous utilisez pour configurer Cloud Interconnect ou Cloud VPN est le même que celui que vous utilisez pour configurer le déploiement d'équilibrage de charge hybride. Assurez-vous que les plages CIDR de sous-réseau de votre réseau VPC n'entrent pas en conflit avec vos plages CIDR distantes. Lorsque les adresses IP se chevauchent, les routes de sous-réseau sont prioritaires sur la connectivité à distance.

Pour savoir comment procéder, consultez les articles suivants :

Ne suivez pas les instructions de la présente page tant que vous n'avez pas configuré la connectivité hybride entre vos environnements.

Configurer votre environnement sur site ou autre environnement cloud

Pour configurer votre équilibrage de charge hybride sur site ou dans un autre environnement cloud, procédez comme suit :

  • Configurez les points de terminaison du réseau pour exposer les services sur site à Google Cloud (IP:Port).
  • Configurez des règles de pare-feu dans votre environnement situé sur site ou sur un autre cloud
  • Configurez Cloud Router pour annoncer les routes requises vers votre environnement privé.

Configurer des points de terminaison du réseau

Une fois que vous avez configuré la connectivité hybride, vous configurez un ou plusieurs points de terminaison du réseau dans vos environnements situés sur site ou dans d'autres cloud et accessibles via Cloud Interconnect ou Cloud VPN en utilisant une combinaison IP:port. Cette combinaison IP:port sera configurée en tant que point(s) de terminaison pour le NEG de connectivité hybride que nous créerons ultérieurement dans Google Cloud.

S'il existe plusieurs chemins d'accès au point de terminaison IP, le routage suit le comportement décrit dans la présentation de Cloud Router.

Configurer les règles de pare-feu

Les règles de pare-feu suivantes doivent être créées dans votre environnement sur site ou sur un autre environnement cloud :

  • Règles de pare-feu d'entrée autorisant le trafic en provenance des vérifications d'état de Google et à destination de vos points de terminaison. Pour les équilibreurs de charge HTTP(S) externes, HTTP(S) internes, proxy TCP et proxy SSL, les plages à autoriser sont : 35.191.0.0/16 et 130.211.0.0/22. Pour plus de détails, consultez la section plages d'adresses IP de vérification et règles de pare-feu.
  • Règles d'autorisation du pare-feu d'entrée permettant au trafic qui fait l'objet d'un équilibrage de charge d'atteindre les points de terminaison.

Configurez Cloud Router pour annoncer les routes suivantes vers votre environnement situé sur site ou sur un autre cloud :

  • Plages utilisées par les vérifications d'état de Google : 35.191.0.0/16 et 130.211.0.0/22

Configurer l'environnement Google Cloud

Pour les étapes suivantes, assurez-vous d'utiliser le même réseau VPC que celui utilisé pour configurer la connectivité hybride entre les environnements.

Créer une règle de pare-feu

Dans cet exemple, vous devez créer la règle de pare-feu suivante :

  • fw-allow-health-check : règle d'entrée, applicable aux instances Google Cloud soumises à l'équilibrage de charge, qui autorise le trafic provenant de l'équilibreur de charge et des systèmes de vérification d'état de Google Cloud (130.211.0.0/22 et 35.191.0.0/16). Cet exemple utilise le tag cible allow-health-check pour identifier les VM de backend auxquelles il doit s'appliquer.

Console

  1. Accédez à la page "Pare-feu" de Google Cloud Console.
    Accéder à la page Pare-feu
  2. Cliquez sur Create Firewall Rule (Créer une règle de pare-feu) :
    1. Saisissez le nom fw-allow-health-check.
    2. Sous Réseau, sélectionnez NETWORK.
    3. Sous Cibles, sélectionnez Tags cibles spécifiés.
    4. Dans le champ Tags cibles, saisissez allow-health-check.
    5. Définissez Filtre source sur Plages IPv4.
    6. Définissez Plages IPv4 sources sur 130.211.0.0/22 et 35.191.0.0/16.
    7. Dans Protocoles et ports, sélectionnez Protocoles et ports spécifiés.
    8. Cochez la case en regard de tcp et saisissez 80 comme numéros de port.
    9. Cliquez sur Créer.

gcloud

  1. Créez la règle fw-allow-health-check-and-proxy pour autoriser l'équilibreur de charge et les vérifications d'état de Google Cloud à communiquer avec les instances backend sur les ports TCP 80.

    Remplacez NETWORK par le nom de votre réseau VPC.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    

Configurer le NEG zonal

Pour les backends basés sur Google Cloud, nous vous recommandons de configurer plusieurs NEG zonaux dans la même région que celle où vous avez configuré la connectivité hybride.

Pour cet exemple, nous avons configuré un NEG zonal (avec des points de terminaison de type GCE_VM_IP_PORT) dans la région REGION. Commencez par créer les VM. Créez ensuite un NEG zonal et ajoutez-y les points de terminaison du réseau des VM.

Créer des VM

Console

  1. Accédez à la page "Instances de VM" de Google Cloud Console.
    Accéder à la page Instances de VM
  2. Cliquez sur Créer une instance.
  3. Dans le champ Nom, spécifiez vm-a1.
  4. Dans le champ Région, choisissez REGION, puis sélectionnez une zone.
  5. Dans la section Disque de démarrage, assurez-vous que les options sélectionnées sont Debian pour le système d'exploitation et 10 (Buster) pour la version. Si nécessaire, cliquez sur Sélectionner pour modifier l'image.
  6. Cliquez sur Gestion, sécurité, disques, mise en réseau et location unique et apportez les modifications suivantes :

    • Cliquez sur Mise en réseau et ajoutez les tags réseau suivants : allow-ssh et allow-health-check.
    • Cliquez sur le bouton Modifier () sous Interfaces réseau, apportez les modifications suivantes, puis cliquez sur OK :
      • Réseau : NETWORK
      • Sous-réseau : SUBNET
      • Adresse IP interne principale : éphémère (automatique)
      • Adresse IP externe : Éphémère
    • Cliquez sur Gestion. Dans le champ Script de démarrage, copiez et collez le contenu de script suivant. Le contenu du script est identique pour les quatre VM :

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      
  7. Cliquez sur Create (Créer).

  8. Répétez les étapes ci-dessous pour créer une deuxième VM en utilisant la combinaison de nom et de zone suivante :

    • Nom : vm-a2, zone : ZONE

gcloud

Créez les VM en exécutant la commande suivante deux fois, en utilisant les combinaisons suivantes pour VM_NAME et ZONE. Le contenu du script est identique pour les deux VM.

  • VM_NAME de vm-a1 et la ZONE de votre choix
  • VM_NAME de vm-a2 et la même ZONE

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=SUBNET \
        --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://169.254.169.254/computeMetadata/v1/instance/name)"
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html
         systemctl restart apache2'
    

Créer le NEG zonal

gcloud

  1. Créez un NEG zonal (avec des points de terminaison GCE_VM_IP_PORT) à l'aide de la commande gcloud compute network-endpoint-groups create :

    gcloud compute network-endpoint-groups create GCP_NEG_NAME \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=GCP_NEG_ZONE \
        --network=NETWORK \
        --subnet=SUBNET
        [--default-port=DEFAULT_PORT]
    

    Vous pouvez spécifier un DEFAULT_PORT lors de la création du NEG ou spécifier un numéro de port pour chaque point de terminaison à l'étape suivante.

  2. Ajoutez des points de terminaison à GCP_NEG_NAME.

    gcloud compute network-endpoint-groups update GCP_NEG_NAME \
        --zone=GCP_NEG_ZONE \
        --add-endpoint='instance=vm-a1,[port=PORT_VM_A1]' \
        --add-endpoint='instance=vm-a2,[port=PORT_VM_A2]'
    

Configurer le NEG de connectivité hybride

Lorsque vous créez le NEG, utilisez un ZONE qui réduit la distance géographique entre Google Cloud et votre environnement sur site ou autre environnement cloud. Par exemple, si vous hébergez un service dans un environnement sur site à Francfort, en Allemagne, vous pouvez spécifier la zone Google Cloud europe-west3-a lorsque vous créez le NEG.

De plus, si vous utilisez Cloud Interconnect, la ZONE utilisé pour créer le NEG doit se trouver dans la même région que le rattachement de VLAN Cloud Interconnect de connectivité hybride.

Pour connaître les régions et les zones disponibles, consultez la documentation Compute Engine : Régions et zones disponibles.

Console

gcloud

  1. Créez un NEG de connectivité hybride à l'aide de la commande gcloud compute network-endpoint-groups create.

    gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ON_PREM_NEG_ZONE \
        --network=NETWORK
    
  2. Ajoutez le point de terminaison à on-prem-neg :

    gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \
        --zone=ON_PREM_NEG_ZONE \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1"
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
    

Vous pouvez utiliser cette commande pour ajouter les points de terminaison du réseau précédemment configurés dans votre environnement situé sur site ou sur un autre cloud. Répétez --add-endpoint autant de fois que nécessaire.

Vous pouvez répéter ces étapes pour créer plusieurs NEG hybrides si nécessaire.

Configurer l'équilibreur de charge

Console

gcloud

  1. Créer une adresse IP externe statique globale vers laquelle les clients externes envoient le trafic
      gcloud compute addresses create LB_IP_ADDRESS_NAME \
          --global
      
  2. Créez une vérification d'état pour les backends.
      gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \
          --use-serving-port
      
  3. Créez un service de backend. Ajoutez à la fois le NEG zonal et le NEG de connectivité hybride en tant que backends à ce service de backend.
      gcloud compute backend-services create BACKEND_SERVICE \
          --health-checks=HTTP_HEALTH_CHECK_NAME \
          --global
      
  4. Ajoutez le NEG zonal en tant que backend au service de backend :
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=GCP_NEG_NAME \
          --network-endpoint-group-zone=GCP_NEG_ZONE
       
  5. Ajoutez le NEG hybride en tant que backend au service de backend :
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=ON_PREM_NEG_NAME \
          --network-endpoint-group-zone=ON_PREM_NEG_ZONE
      
  6. Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend.
      gcloud compute url-maps create URL_MAP_NAME \
          --default-service BACKEND_SERVICE
      
  7. N'effectuez cette étape que si vous souhaitez créer un équilibreur de charge HTTPS. Cette opération n'est pas requise pour les équilibreurs de charge HTTP.
    Pour créer un équilibreur de charge HTTPS, vous devez disposer d'une ressource de certificat SSL à utiliser dans le proxy cible HTTPS. Vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré. L'utilisation de certificats gérés par Google est recommandée, car Google Cloud obtient, gère et renouvelle automatiquement ces certificats.

    Pour créer un certificat géré par Google, vous devez disposer d'un domaine. Si ce n'est pas le cas, vous pouvez utiliser un certificat SSL auto-signé pour les tests.

    Pour créer une ressource de certificat SSL géré par Google, procédez comme suit :
    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --domains DOMAIN
    
    Pour créer une ressource de certificat SSL autogéré, procédez comme suit :
    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
    
  8. Créez un proxy HTTP(S) cible, qui va rediriger les requêtes vers votre mappage d'URL.

    Pour un équilibreur de charge HTTP, créez un proxy cible HTTP :
    gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
        --url-map=URL_MAP_NAME
    
    Pour un équilibreur de charge HTTPS, créez un proxy cible HTTPS. Le serveur proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour l'équilibrage de charge HTTPS. Vous chargez donc également votre certificat à cette étape :
    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
        --ssl-certificates=SSL_CERTIFICATE_NAME \
        --url-map=URL_MAP_NAME
    
  9. Créez une règle de transfert pour acheminer les requêtes entrantes vers le proxy.

    Pour un équilibreur de charge HTTP, procédez comme suit :
    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
        --address=LB_IP_ADDRESS_NAME \
        --target-http-proxy=TARGET_HTTP_PROXY_NAME \
        --global \
        --ports=80
    
    Pour un équilibreur de charge HTTPS, utilisez ce qui suit :
    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
        --address=LB_IP_ADDRESS_NAME \
        --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
        --global \
        --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, procédez comme suit :

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Si vous utilisez Google Domains, consultez la page d'aide Google Domains pour obtenir plus d'informations.

Tester l'équilibreur de charge

Maintenant que vous avez configuré votre équilibreur de charge, vous pouvez commencer à envoyer du trafic vers son adresse IP.

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur l'équilibreur de charge que vous venez de créer.
  3. Notez l'adresse IP de l'équilibreur de charge.
  4. Si vous avez créé un équilibreur de charge HTTP, vous pouvez le tester à l'aide d'un navigateur Web en accédant à http://IP_ADDRESS. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers le service que vous avez exposé via le point de terminaison.

    Si vous avez créé un équilibreur de charge HTTPS, vous pouvez le tester à l'aide de curl comme suit. Remplacez IP_ADDRESS par l'adresse IP de l'équilibreur de charge. Vous devriez être redirigé vers le service que vous avez exposé via le point de terminaison.

   curl -k https://IP_ADDRESS
   

Pour vérifier que les points de terminaison autres que Google Cloud répondent, exécutez la commande suivante :

   curl -k https://IP_ADDRESS/on-prem-service
   

Si cela ne fonctionne pas et que vous utilisez un certificat géré par Google, vérifiez que l'état de votre ressource de certificat est ACTIF. Pour en savoir plus, consultez la section Vérifier l'état du certificat SSL géré par Google.

Si vous utilisez un certificat géré par Google, testez le domaine pointant vers l'adresse IP de l'équilibreur de charge. Exemple :

   curl -s https://test.example.com
   

Étape suivante