Exercice – Configurer un équilibreur de charge public
Vous pouvez configurer Azure Load Balancer à partir du portail Azure, de PowerShell ou d’Azure CLI.
Dans votre organisation médicale, vous souhaitez équilibrer la charge du trafic client afin de fournir une réponse homogène en fonction de l’intégrité des serveurs web du portail des patients. Vous disposez de deux machines virtuelles (VM) dans un même groupe à haute disponibilité qui doivent jouer le rôle d’application web du portail médical.
Ici, vous allez créer une ressource d’équilibreur de charge et l’utiliser pour répartir une charge entre les machines virtuelles.
Déployer l’application web du portail des patients
Pour commencer, déployez l’application de portail des patients sur deux machines virtuelles dans un même groupe à haute disponibilité. Pour gagner du temps, commençons par exécuter un script qui va créer cette application. Le script :
- Crée un réseau virtuel et une infrastructure réseau pour les machines virtuelles.
- Crée deux machines virtuelles dans ce réseau virtuel.
Pour déployer l’application web du portail des patients :
Exécutez la commande
git clone
suivante dans Azure Cloud Shell. La commande clone le dépôt qui contient la source de l’application et exécute le script d’installation à partir de GitHub. Vous passez ensuite au répertoire du référentiel cloné.git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git cd mslearn-improve-app-scalability-resiliency-with-load-balancer
Comme son nom l’indique, le script génère deux machines virtuelles dans un même groupe à haute disponibilité. Son exécution prend environ deux minutes.
bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
Une fois le script terminé, dans le menu du portail Azure ou dans la page Accueil, sélectionnez Groupes de ressources, puis choisissez le groupe de ressources
[nom du groupe de ressources de bac à sable] . Examinez les ressources créées par le script.
Créer un équilibreur de charge
À présent, créons l’équilibreur de charge.
Dans le menu du portail Azure ou la page Accueil, sous Services Azure, sélectionnez Créer une ressource. Le volet Créer une ressource apparaît.
Dans la zone de recherche dans les services et la marketplace, entrez Load Balancer, puis appuyez sur Entrée.
Dans la liste suivante, sélectionnez Load Balancer – Microsoft, puis sélectionnez Créer.
Sous l’onglet Informations de base, entrez les valeurs suivantes pour chaque paramètre :
Paramètre Valeur Détails du projet Abonnement Votre abonnement Resource group Sélectionnez [nom du groupe de ressources de bac à sable] Détails de l’instance Nom Entrez un nom unique. Par exemple, Pub-LB-PatientsPortal. Région Sélectionnez l’emplacement où les machines virtuelles ont été créées. Référence (SKU) Standard Type Public Niveau Regional
Ajouter une configuration IP frontale
Sélectionnez Suivant : Configuration d’adresse IP frontale.
Sélectionnez + Ajouter une configuration IP front-end. Le volet Ajouter une configuration IP front-end s’affiche.
Entrez les valeurs suivantes pour chaque paramètre.
Paramètre Valeur Nom Entrez un nom unique pour la configuration IP front-end. Par exemple, myFrontendIP Version IP Sélectionnez IPv4 Type IP Sélectionnez Adresse IP Adresse IP publique Sélectionnez Créer une nouvelle adresse IP, puis donnez un nom à votre adresse IP. Ensuite, sélectionnez Enregistrer Équilibreur de charge de passerelle Sélectionnez Aucun Pour fermer la boîte de dialogue, sélectionnez Enregistrer. Le volet Créer un équilibreur de charge s’affiche.
Ajouter un pool principal
Sélectionnez Suivant : Pools principaux.
Sélectionnez + Ajouter un pool de back-ends. Le volet Ajouter un pool principal s’affiche.
Entrez les valeurs suivantes pour chaque paramètre.
Paramètre Valeur Nom Entrez un nom unique pour le pool de back-ends. Par exemple, bepool-http. Réseau virtuel Vérifiez que bePortalVnet est sélectionné. Sous Configurations IP, sélectionnez Ajouter. Le volet Ajouter des configurations IP au pool de back-ends s’affiche.
Sous Machine virtuelle, sélectionnez les machines virtuelles webVM1 et webVM2, puis sélectionnez Ajouter.
L’écran Ajouter un pool de back-ends. réapparaît. Sous Configurations IP, sélectionnez les machines virtuelles webVM1 et webVM2, puis sélectionnez Enregistrer. L’écran Créer un équilibreur de charge réapparaît.
Ajouter une règle d’équilibrage de charge
Pour finir, nous allons créer une règle pour l’équilibreur de charge.
Sélectionnez Suivant : Règles de trafic entrant.
Dans la section Règle d’équilibrage de charge, sélectionnez + Ajouter une règle d’équilibrage de charge. Le volet Ajouter une règle d’équilibrage de charge s’affiche.
Entrez les valeurs suivantes pour chaque paramètre.
Paramètre Valeur Nom Nom de la règle d’équilibrage de charge. Par exemple, lbrule-http. Version de l’adresse IP IPv4 Adresse IP du serveur frontal Sélectionnez l’adresse IP front-end que vous avez nommée précédemment. Pool principal Sélectionnez le pool de back-ends que vous avez nommé précédemment. Par exemple, bepool-http. Protocol TCP Port Entrez 80 (valeur par défaut). Port principal Entrez 80 (valeur par défaut). Sonde d’intégrité Sélectionnez le lien Créer nouveau. La boîte de dialogue Ajouter une sonde d’intégrité s’affiche. Entrez les valeurs suivantes pour chaque paramètre.
Paramètre Valeur Nom Nom de la sonde d’intégrité. Par exemple, healthprobe-http. Protocol TCP Port Entrez 80 (valeur par défaut). Intervalle Entrez 5 (valeur par défaut). Cette valeur correspond au temps qui s’écoule entre les sondes. Sélectionnez Enregistrer pour fermer la boîte de dialogue. Le volet Ajouter une règle d’équilibrage de charge réapparaît.
Entrez les valeurs suivantes pour chaque paramètre.
Paramètre Valeur Persistance de session* Aucun (par défaut) Délai d’inactivité (minutes) Sélectionnez 4 (valeur par défaut). Cette valeur correspond au temps nécessaire pour maintenir une connexion du protocole TCP ou HTTP ouverte sans que les clients n’envoient de messages keep-alive. IP flottante Désactivé (valeur par défaut). Sélectionnez Enregistrer pour achever la configuration de la règle d’équilibrage de charge.
L’écran Créer un équilibreur de charge réapparaît. Sélectionnez Revoir + créer.
Quand la validation réussit, sélectionnez Créer. Une fois le déploiement terminé, sélectionnez Accéder à la ressource.
Dans la page Vue d’ensemble, copiez et enregistrez l’Adresse IP publique. Vous devrez peut-être sélectionner Afficher plus... pour voir l’adresse IP publique.
Créer des adresses IP
Pour commencer, nous avons besoin d’une adresse IP publique pour l’équilibreur de charge.
Dans Cloud Shell, démarrez PowerShell en exécutant cette commande :
pwsh
Dans PowerShell, créez une adresse IP publique :
$Location = $(Get-AzureRmResourceGroup -ResourceGroupName <rgn>[sandbox resource group name]</rgn>).Location $publicIP = New-AzPublicIpAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Location $Location ` -AllocationMethod "Static" ` -Name "myPublicIP"
Créez un IP front-end en utilisant l’applet de commande New-AzLoadBalancerFrontendIpConfig. Le code suivant crée une configuration IP front-end nommée myFrontEnd et joint l’adresse myPublicIP :
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
Créer l’équilibreur de charge
Quand vous utilisez PowerShell pour configurer un équilibreur de charge, vous devez créer le pool d’adresses back-end, la sonde d’intégrité et la règle avant de créer l’équilibreur lui-même.
Créez un pool d’adresses back-end en exécutant l’applet de commande New-AzLoadBalancerBackendAddressPoolConfig. Vous attacherez les machines virtuelles à ce pool de back-ends au cours des dernières étapes. L’exemple suivant crée un pool d’adresses back-end nommé myBackEndPool :
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
Créez une sonde d’intégrité pour permettre à l’équilibreur de charge de superviser l’état du portail médical. La sonde d’intégrité ajoute ou supprime dynamiquement des machines virtuelles de la rotation de l’équilibreur de charge en fonction de leur réponse aux vérifications d’intégrité.
$probe = New-AzLoadBalancerProbeConfig ` -Name "myHealthProbe" ` -Protocol http ` -Port 80 ` -IntervalInSeconds 5 ` -ProbeCount 2 ` -RequestPath "/"
Vous avez maintenant besoin d’une règle d’équilibreur de charge pour définir le mode de distribution du trafic aux machines virtuelles. Vous définissez la configuration IP frontale pour le trafic entrant et le pool d’adresses IP principal pour recevoir le trafic, ainsi que le port source et le port de destination requis. Pour faire en sorte que seules les machines virtuelles saines reçoivent le trafic, vous devez aussi définir la sonde d’intégrité à utiliser.
$lbrule = New-AzLoadBalancerRuleConfig ` -Name "myLoadBalancerRule" ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 ` -Probe $probe
Maintenant, vous pouvez créer l’équilibreur de charge de base en exécutant l’applet de commande New-AzLoadBalancer :
$lb = New-AzLoadBalancer ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule
Connectez les machines virtuelles au pool de back-ends en mettant à jour les interfaces réseau que le script a créées pour utiliser les informations du pool de back-ends.
$nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1" $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic2" $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob
Exécutez la commande suivante pour obtenir l’adresse IP publique de l’équilibreur de charge et l’URL de votre site web :
Write-Host http://$($(Get-AzPublicIPAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name "myPublicIP").IpAddress)
Créer un équilibreur de charge
Utilisons Azure CLI pour créer l’équilibreur de charge et ses ressources associées.
Créez une adresse IP publique.
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
Créez l’équilibreur de charge.
az network lb create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myLoadBalancer \ --public-ip-address myPublicIP \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool
Créez une sonde d’intégrité qui permet à l’équilibreur de charge de surveiller l’état du portail de santé. La sonde d’intégrité ajoute ou supprime dynamiquement des machines virtuelles de la rotation de l’équilibreur de charge en fonction de leur réponse aux vérifications d’intégrité.
az network lb probe create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80
Il vous faut maintenant une règle d’équilibreur de charge pour définir le mode de distribution du trafic aux machines virtuelles. Vous définissez la configuration IP frontale pour le trafic entrant et le pool d’adresses IP principal pour recevoir le trafic, ainsi que le port source et le port de destination requis. Pour faire en sorte que seules les machines virtuelles saines reçoivent le trafic, vous devez aussi définir la sonde d’intégrité à utiliser.
az network lb rule create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe
Connectez les machines virtuelles au pool de back-ends en mettant à jour les interfaces réseau que le script a créées pour utiliser les informations du pool de back-ends.
az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic1 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic2 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool
Exécutez la commande suivante pour obtenir l’adresse IP publique de l’équilibreur de charge et l’URL de votre site web :
echo http://$(az network public-ip show \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myPublicIP \ --query ipAddress \ --output tsv)
Tester la configuration de l’équilibreur de charge
Testons la configuration de l’équilibreur de charge pour voir comment il peut gérer les problèmes de disponibilité et d’intégrité de manière dynamique.
Sous un nouvel onglet du navigateur, accédez à l’adresse IP publique que vous avez notée. Une réponse de l’une des machines virtuelles s’affiche dans le navigateur.
Tentez une « actualisation forcée » en appuyant plusieurs fois sur Ctrl+F5 pour vérifier que la réponse est bien retournée de manière aléatoire par les deux machines virtuelles.
Dans le menu du portail Azure ou dans la page Accueil, sélectionnez Toutes les ressources. Sélectionnez ensuite webVM1, puis Arrêter.
Revenez à l’onglet où figure le site web et forcez une actualisation de la page web. Toutes les requêtes sont retournées par webVM2.