Équilibrage de charge interrégional avec des backends Microsoft IIS

Ce tutoriel explique comment distribuer le trafic vers les serveurs Web de Microsoft Internet Information Services (IIS) dans différentes régions Compute Engine à l'aide du service d'équilibrage de charge HTTP(S) de Google Compute Engine.

Scénario

Vous devez effectuer l'équilibrage de charge du trafic pour le site www.example.com. Vous souhaitez vous assurer que les requêtes entrantes sont acheminées vers la région la plus proche. Cependant, vous voulez également être sûr qu'en cas d'interruption ou d'instances dans une région atteignant leur capacité maximale, les requêtes peuvent basculer sur une instance saine dans la région la plus proche.

Lorsque vous avez terminé la configuration de ce scénario, vous obtenez un équilibreur de charge HTTP(S) qui achemine les requêtes via une seule adresse IP globale. Cette adresse IP peut acheminer chaque requête entrante par type de connexion, à savoir HTTP ou HTTPS. Pour les requêtes HTTPS, l'équilibreur de charge met en œuvre le chiffrement SSL/TLS entre le client envoyant la requête et l'équilibreur de charge.

Le diagramme suivant illustre l'architecture de l'équilibreur de charge :

Diagramme de l'équilibrage de charge interrégional

Notez que l'équilibreur de charge comprend plusieurs composants pour une configurabilité maximale. Pour obtenir une description de chaque composant, consultez la présentation de l'équilibrage de charge HTTP(S).

Conditions préalables

Pour suivre ce tutoriel, vous devez remplir les conditions ci-dessous :

Configurer les instances backend

Dans cette section, vous allez créer deux services de backend dans différentes régions. Chaque service de backend inclut deux instances backend, chacune exécutant un serveur Web Microsoft IIS sur Windows Server 2012. Pour éviter une configuration manuelle laborieuse de chaque serveur, vous allez créer une image disque à partir d'une instance de serveur, puis créer les autres instances de serveur à l'aide de cette image.

Créer l'instance d'image source

Pour créer l'instance que vous utiliserez comme image source, procédez comme suit :

  1. Sur votre machine Windows locale, ouvrez PowerShell.
  2. Créez une instance Windows Server 2012 dans la région us-central1, puis ajoutez les tags rdp-tag et www-tag à l'instance. Par la suite, vous activerez l'accès externe à l'instance en créant des règles de pare-feu qui ciblent ces tags :

    PS C:\> gcloud compute instances create src-img ^
         --zone us-central1-f --image windows-2012-r2 ^
         --tags rdp-tag,www-tag

Après avoir créé l'instance d'image source, configurez des règles de pare-feu pour autoriser l'accès externe à l'instance :

  1. Créez une règle de pare-feu pour autoriser l'accès externe au port 3389 sur toutes les instances présentant le tag rdp-tag. Cette règle autorise l'accès à l'instance d'image source et à toute instance ultérieure utilisant le tag rdp-tag à l'aide de RDP :

    PS C:\> gcloud compute firewall-rules create rdp-rule ^
         --allow tcp:3389 --source-ranges 0.0.0.0/0 ^
         --target-tags rdp-tag
  2. Créez une autre règle de pare-feu pour autoriser un accès externe au port 80 sur toutes les instances présentant le tag www-tag. Cette règle autorise l'instance d'image source et toute instance ultérieure utilisant le tag www-tag à envoyer et recevoir le trafic HTTP :

     PS C:> gcloud compute firewall-rules create www-rule ^
         --allow tcp:80 --source-ranges 0.0.0.0/0 ^
         --target-tags www-tag

Configurer l'instance d'image source

Créez ensuite un utilisateur Windows sur l'instance d'image source, puis établissez une connexion RDP :

  1. Dans votre navigateur Web, accédez à la page Instances de VM dans la console GCP et cliquez sur le nom de l'instance d'image source (src-img).
  2. Cliquez sur le bouton Définir un mot de passe Windows.
  3. Dans la boîte de dialogue Définir un nouveau mot de passe Windows, ajoutez votre nom d'utilisateur et cliquez sur Définir pour créer le compte utilisateur sur votre instance.
  4. Copiez le mot de passe fourni, puis fermez la boîte de dialogue.
  5. Sur la page de la console de l'instance, cliquez sur RDP.

    • Si vous avez installé l'extension Chrome RDP, la fenêtre de l'extension s'ouvre. Confirmez que vous souhaitez vous connecter à l'instance, saisissez votre nom d'utilisateur et votre mot de passe, puis cliquez sur OK pour vous connecter à votre instance.
    • Si vous avez choisi de ne pas installer l'extension Chrome RDP, vous avez la possibilité de télécharger le fichier RDP correspondant à votre instance. Servez-vous de ce fichier pour vous connecter à l'instance à l'aide de la connexion Bureau à distance Windows ou du client tiers de votre choix.

Après avoir établi une connexion RDP avec l'instance d'image source, installez IIS et ajoutez une page d'accueil par défaut :

  1. Sur l'instance d'image source, ouvrez PowerShell en tant qu'administrateur.
  2. Dans PowerShell, collez les éléments suivants pour installer les services et dépendances IIS :

    PS C:\> Dism /Online /Enable-Feature /FeatureName:IIS-WebServerRole /FeatureName:IIS-WebServer /FeatureName:IIS-StaticContent /FeatureName:IIS-DefaultDocument /FeatureName:IIS-DirectoryBrowsing /FeatureName:IIS-HttpErrors /FeatureName:IIS-HealthAndDiagnostics /FeatureName:IIS-HttpLogging /FeatureName:IIS-LoggingLibraries /FeatureName:IIS-RequestMonitor /FeatureName:IIS-Security /FeatureName:IIS-RequestFiltering /FeatureName:IIS-HttpCompressionStatic /FeatureName:IIS-WebServerManagementTools /FeatureName:IIS-ManagementConsole /FeatureName:WAS-WindowsActivationService /FeatureName:WAS-ProcessModel /FeatureName:WAS-NetFxEnvironment /FeatureName:WAS-ConfigurationAPI /All
  3. Une fois les services installés, créez une page d'accueil dans C:\inetpub\wwwroot, le répertoire Web par défaut d'IIS :

    PS C:\> Echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' > C:\inetpub\wwwroot\index.html

Vérifier la capacité de diffusion de contenu de l'instance d'image source

Dans votre navigateur Web, accédez à la page Instances de VM. Cliquez sur l'adresse IP externe de l'instance pour vérifier qu'elle diffuse bien la page d'accueil que vous avez créée tout à l'heure.

Créer une image Windows Server 2012 réutilisable à partir de l'instance d'image source

Après avoir vérifié que l'instance d'image source est correctement configurée et capable de diffuser du contenu, créez une image disque réutilisable à partir du disque persistant racine de l'instance :

  1. Sur l'instance d'image source, ouvrez PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante pour préparer le système au clonage :

     PS C:> GCESysprep

    Une fois l'opération GCESysprep terminée, vous êtes automatiquement déconnecté de la session RDP.

  3. Sur votre machine locale, exécutez la commande suivante pour supprimer l'instance source tout en conservant son disque persistant racine :

     PS C:> gcloud compute instances delete src-img --keep-disks boot

  4. Une fois l'instance supprimée, créez une image à partir du disque persistant racine que vous avez conservé :

     PS C:> gcloud compute images create win-be-img --source-disk src-img --source-disk-zone us-central1-f

Créer un modèle d'instance à l'aide de l'image source

Maintenant que vous avez créé une image disque à partir du serveur Windows configuré, vous pouvez l'utiliser comme image source pour un modèle d'instance. Par la suite, vous configurerez deux groupes d'instances gérés qui se serviront de ce modèle pour créer des instances.

Sur votre ordinateur local, exécutez la commande suivante pour créer un modèle d'instance en utilisant win-be-img comme image source, ainsi que rdp-tag et www-tag comme tags des instances :

PS C:\> gcloud compute instance-templates create win-be-tmpl ^
    --tags rdp-tag,www-tag ^
    --image win-be-img

Créer un groupe d'instances géré dans chaque région

Ensuite, créez des groupes d'instances gérés dans chaque région. Une fois que vous avez créé chaque groupe d'instances, deux instances identiques basées sur le modèle d'instance défini précédemment sont ajoutées au groupe. Par la suite, vous configurerez l'équilibrage de charge pour traiter ces groupes d'instances comme des cibles de backend.

Pour créer les groupes d'instances gérés, procédez comme suit :

  1. Sur votre machine locale, exécutez la commande suivante pour créer un groupe d'instances géré dans la zone us-central1-f et y ajouter deux instances identiques :

     PS C:> gcloud compute instance-groups managed create us-be-group ^
          --base-instance-name us ^
          --size 2 ^
          --zone us-central1-f ^
          --template win-be-tmpl

  2. Suivez la même procédure dans la zone europe-west1-d :

    PS C:\> gcloud compute instance-groups managed create eu-be-group ^
          --base-instance-name eu ^
          --size 2 ^
          --zone europe-west1-d ^
          --template win-be-tmpl

Vérifier l'exécution des instances backend

Dans votre navigateur Web, accédez à la page Instances de VM. Cliquez sur l'adresse IP externe de chaque backend pour vérifier qu'il diffuse bien la page d'accueil que vous avez créée tout à l'heure.

Créer et configurer le service d'équilibrage de charge

Le service d'équilibrage de charge de Compute Engine comprend plusieurs composants. Dans cette section, vous allez créer ces composants et les connecter.

  1. Sur votre machine locale, exécutez la commande suivante pour créer une vérification de l'état. L'équilibreur de charge s'en servira pour vérifier l'état des instances backend :

    PS C:\> gcloud compute http-health-checks create basic-check
  2. Créez un service de backend :

    PS C:\> gcloud compute backend-services create be-srv ^
          --protocol HTTP --http-health-check basic-check
  3. Ajoutez vos groupes d'instances en tant que cibles de backend pour le service de backend :

    PS C:\> gcloud beta compute backend-services add-backend be-srv ^
          --instance-group us-be-group --zone us-central1-f
    PS C:\> gcloud beta compute backend-services add-backend be-srv ^
          --instance-group eu-be-group --zone europe-west1-d
  4. Créez un mappage d'URL par défaut qui redirige toutes les requêtes entrantes vers vos instances :

    PS C:\> gcloud compute url-maps create lb-map --default-service be-srv
  5. Créez une ressource de certificat SSL. L'équilibreur de charge se sert de cette ressource pour chiffrer et déchiffrer le trafic.

    Si vous possédez déjà une clé privée et un certificat SSL provenant d'une autorité de certification, vous pouvez les utiliser afin de créer une ressource SSLCertificate en exécutant la commande ci-dessous. Sinon, vous pouvez créer et utiliser un certificat autosigné pour le test. Consultez la section sur les certificats SSL pour plus d'informations.

    Exécutez la commande suivante pour créer une ressource de certificat SSL. Remplacez <crt_file_path> par le chemin d'accès du fichier local de votre certificat et <key_file_path> par le chemin d'accès du fichier de votre clé privée.

    PS C:\> gcloud beta compute ssl-certificates create www-cert ^
    --certificate  --private-key 
  6. Créez des serveurs proxy HTTP et HTTPS cibles pour acheminer les requêtes vers votre mappage d'URL. 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 :

     PS C:> gcloud compute target-http-proxies create http-lb-proxy ^
          --url-map lb-map
     PS C:> gcloud beta compute target-https-proxies create https-lb-proxy ^
          --url-map lb-map --ssl-certificate www-cert

  7. Pour que l'équilibreur de charge reçoive le trafic de manière fiable, vous devez attribuer une adresse IP statique globale à la règle de transfert globale de l'équilibreur de charge. Pour créer une ressource IP statique globale, exécutez la commande suivante :

     PS C:> gcloud compute addresses create lb-ip --global

    Notez l'adresse IP.

  8. Créez deux règles de transfert globales pour gérer les requêtes HTTP et HTTPS entrantes. Chaque règle de transfert envoie le trafic à l'un des serveurs proxy cibles que vous avez créés en fonction de l'adresse IP, du protocole IP et du port spécifiés.

    Remplacez <lb_ip_addr> dans les commandes suivantes par l'adresse IP statique que vous avez créée à l'étape précédente :

    PS C:\> gcloud compute forwarding-rules create http-fwd-rule ^
          --address  --global ^
          --target-http-proxy http-lb-proxy --port-range 80
    PS C:\> gcloud beta compute forwarding-rules create https-fwd-rule ^
          --address  --global ^
          --target-https-proxy https-lb-proxy --port-range 443

Une fois que vous avez créé les règles de transfert globales, la propagation de votre configuration peut prendre plusieurs minutes. Pour vérifier la progression de la propagation, vous pouvez soit surveiller votre configuration dans la console Google Cloud Platform, soit exécuter la commande suivante sur votre ordinateur local :

PS C:\> gcloud compute backend-services get-health be-srv

Envoyer le trafic aux backends

Maintenant que vous avez configuré le service d'équilibrage de charge, vous pouvez commencer à envoyer le trafic vers la règle de transfert et surveiller la répartition du trafic dans différentes instances.

Pour envoyer le trafic aux backends, procédez comme suit :

  1. Ouvrez la page Équilibreur de charge HTTP(S) dans la console GCP.
  2. Cliquez sur les adresses IP dans la colonne Trafic entrant. Votre page d'accueil par défaut doit s'afficher.

Restreindre l'accès aux backends

Après avoir vérifié que tout fonctionne comme prévu, modifiez les règles du pare-feu afin que le trafic HTTP(S) ne puisse provenir que du service d'équilibrage de charge :

  1. Sur votre machine locale, exécutez la commande suivante pour mettre à jour votre règle de pare-feu www-rule. Restreignez les adresses IP sources autorisées à la plage 130.211.0.0/22, qui correspond à la plage d'adresses IP de vérification de l'état de l'équilibrage de charge HTTP(S) :

    PS C:\> gcloud compute firewall-rules update www-rule ^
           --source-ranges 130.211.0.0/22 ^
           --target-tags www-tag
  2. Dans votre navigateur Web, accédez à la page Instances de VM.

  3. Cliquez sur chaque instance pour vérifier que l'instance est désormais inaccessible.

Simuler une interruption

Vous pouvez simuler une interruption sur une ou plusieurs instances d'une région afin de pouvoir observer comment la charge sera équilibrée parmi les instances saines restantes.

Pour empêcher une instance de recevoir d'autres requêtes, procédez comme suit :

  1. Établissez une connexion RDP à l'instance.
  2. Sur l'instance, ouvrez PowerShell en tant qu'administrateur.
  3. Exécutez la commande suivante pour créer une règle de pare-feu sur l'instance. Cette commande bloque le trafic de vérification de l'état du vérificateur d'état et empêche toutes les nouvelles connexions HTTP de l'équilibreur de charge à l'instance :

    PS C:\> netsh advfirewall firewall add rule name="Outage Test" protocol=tcp dir=in localport=80 action=block remoteip=130.211.0.0/22
  4. Sur votre machine locale, exécutez la commande suivante pour vérifier que l'instance signale désormais un état UNHEALTHY :

    PS C:\> gcloud compute backend-services get-health be-srv
  5. Une fois que l'instance a commencé à signaler un état UNHEALTHY, envoyez une requête à votre équilibreur de charge. Seules les instances opérationnelles doivent répondre.

  6. Après la simulation de l'interruption, vous pouvez restaurer la connectivité de l'instance en supprimant la règle de pare-feu. Ouvrez PowerShell en tant qu'administrateur sur l'instance non opérationnelle, puis exécutez la commande suivante pour supprimer la règle :

    PS C:\> netsh advfirewall firewall delete rule name="Outage Test"

Effectuer un nettoyage

Une fois que vous avez terminé le tutoriel Microsoft IIS, vous pouvez nettoyer les ressources que vous avez créées sur Google Cloud Platform afin d'éviter qu'elles ne vous soient facturées par la suite. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.

Supprimer le projet Cloud Platform

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet, procédez comme suit :

  1. Dans la console GCP, accédez à la page Projets.

    Accéder à la page Projets

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer delete.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer les instances

Pour supprimer une instance Compute Engine, procédez comme suit :

  1. Dans la console GCP, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cochez la case à côté de l'instance que vous souhaitez supprimer.
  3. Cliquez sur le bouton Supprimer delete situé en haut de la page pour supprimer l'instance.

Supprimer les disques persistants

Pour supprimer un disque Compute Engine, procédez comme suit :

  1. Dans la console GCP, accédez à la page Disques.

    Accéder à la page Disques

  2. Cochez la case à côté du disque que vous souhaitez supprimer.
  3. Cliquez sur le bouton Supprimer delete situé en haut de la page pour supprimer le disque.

Étapes suivantes

En savoir plus sur l'utilisation de Windows sur Compute Engine

Consultez la documentation relative aux instances Windows sur Compute Engine.

Consulter d'autres tutoriels

Testez par vous-même d'autres fonctionnalités de Google Cloud Platform Découvrez nos tutoriels.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine