Övning – Konfigurera en offentlig lastbalanserare
Du kan konfigurera Azure Load Balancer i Azure-portalen, med PowerShell eller med Azure CLI.
I din sjukvårdsorganisation vill du belastningsbelasta klienttrafik för att ge ett konsekvent svar baserat på patientportalens webbservrars hälsa. Du har två virtuella datorer (VM) i en tillgänglighetsuppsättning som fungerar som webbapp för hälso- och sjukvårdsportalen.
Här skapar du en lastbalanserarresurs och använder den för att distribuera en belastning mellan de virtuella datorerna.
Distribuera patientportalens webbapp
Distribuera först ditt patientportalprogram på två virtuella datorer i en enda tillgänglighetsuppsättning. I syfte att spara tid börjar vi med att köra ett skript för att skapa appen. Skriptet kommer att:
- Skapar ett virtuellt nätverk och en nätverksinfrastruktur för de virtuella datorerna.
- Skapar två virtuella datorer i det här virtuella nätverket.
Så här distribuerar du patientportalens webbapp:
Kör följande
git clone
-kommando i Azure Cloud Shell. Kommandot klonar lagringsplatsen som innehåller appens källkod och kör installationsskriptet från GitHub. Sedan ändras katalogen för den klonade lagringsplatsen.git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git cd mslearn-improve-app-scalability-resiliency-with-load-balancer
Som namnet antyder genererar skriptet två virtuella datorer i en enda tillgänglighetsuppsättning. Det tar ungefär två minuter att köra.
bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
När skriptet har slutförts går du till menyn i Azure-portalen eller till sidan Start. Där väljer du Resursgrupper och sedan resursgruppen
[namn på sandbox-miljöns resursgrupp] . Granska de resurser som skapats av skriptet.
Skapa en lastbalanserare
Nu ska vi skapa lastbalanseraren.
På menyn Azure Portal eller på startsidan går du till Azure-tjänster och väljer Skapa en resurs. Fönstret Skapa en resurs visas.
I sökrutan tjänsten Search s och marketplace anger du Load Balancer och trycker sedan på Retur.
I den efterföljande listan väljer du Load Balancer – Microsoft och sedan Skapa.
På fliken Grundläggande anger du följande värden för varje inställning:
Inställning Värde Projektinformation Prenumeration Din prenumeration Resursgrupp Välj [resursgruppsnamn för sandbox-miljö] Instansinformation Name Ange ett unikt namn. Till exempel Pub-LB-PatientsPortal. Region Välj den plats där de virtuella datorerna skapades. SKU Standard Typ Offentlig Nivå Regional
Lägga till en IP-konfiguration på klientsidan
Välj Nästa: IP-konfiguration för klientdelen.
Välj + Lägg till en IP-konfiguration för klientdelen. Fönstret Lägg till IP-klientdelskonfiguration visas.
Ange följande värden för varje inställning.
Inställning Värde Name Ange ett unikt namn för klientdelens IP-konfiguration. Till exempel myFrontendIP IP-version Välj IPv4 IP-typ Välj IP-adress Offentlig IP-adress Välj Skapa ny, ge ip-adressen ett namn och välj Spara Gateway Load Balancer Välj Ingen Stäng dialogrutan genom att välja Spara. Fönstret Skapa lastbalanserare visas.
Lägga till en serverdelspool
Välj Nästa: Serverdelspooler.
Välj + Lägg till en serverdelspool. Fönstret Lägg till serverdelspool visas.
Ange följande värden för varje inställning.
Inställning Värde Name Ange ett unikt namn på serverdelspoolen. Till exempel bepool-http. Virtuellt nätverk Bekräfta att bePortalVnet har valts. Under IP-konfigurationer väljer du Lägg till. Fönstret Lägg till IP-konfigurationer i serverdelspoolen visas.
Under Virtuell dator väljer du de virtuella datorerna webVM1 och webVM2 och väljer Lägg till.
Skärmen Lägg till serverdelspool visas igen. Under IP-konfigurationer väljer du de virtuella datorerna webVM1 och webVM2 och väljer Spara. Skärmen Skapa lastbalanserare visas igen.
Lägga till en belastningsutjämningsregel
Slutligen ska vi skapa en regel för lastbalanseraren.
Välj Nästa: Regler för inkommande trafik.
I avsnittet Belastningsutjämningsregel väljer du + Lägg till en belastningsutjämningsregel. Fönstret Lägg till belastningsutjämningsregel visas.
Ange följande värden för varje inställning.
Inställning Värde Name Ett namn på belastningsutjämningsregeln. Till exempel lbrule-http. IP-version IPv4 Klientdelens IP-adress Välj ip-adressen för klientdelen som du namngav tidigare. Serverdelspool Välj den serverdelspool som du namngav tidigare. Till exempel bepool-http. Protokoll TCP Port Ange 80 (standard). Serverdelsport Ange 80 (standard). Hälsoavsökning Välj länken Skapa ny . Dialogrutan Lägg till hälsoavsökning visas. Ange följande värden för varje inställning.
Inställning Värde Name Ett namn på hälsoavsökningen. Till exempel healthprobe-http. Protokoll TCP Port Ange 80 (standard). Intervall Ange 5 (standard). Det här värdet är tiden mellan avsökningarna. Välj Spara för att stänga dialogrutan. Fönstret Lägg till belastningsutjämningsregel visas igen.
Fortsätt att ange följande värden för varje inställning.
Inställning Värde Sessionspersistence* Ingen (standardvärde) Timeout för inaktivitet (minuter) Välj 4 (standard). Det här värdet är den tid det är dags att hålla en TCP-anslutning (Transmission Control Protocol) eller HTTP-anslutningen öppen utan att behöva förlita sig på klienter för att skicka keep-alive-meddelanden. Flytande IP Inaktiverad (standard). Välj Spara för att slutföra konfigurationen av belastningsutjämningsregeln.
Skärmen Skapa lastbalanserare visas igen. Välj Granska + skapa.
När valideringen har godkänts väljer du Skapa. När distributionen är klar väljer du Gå till resurs.
På sidan Översikt kopierar och sparar du den offentliga IP-adressen. Du kan behöva välja Visa mer... för att visa den offentliga IP-adressen.
Skapa IP-adresser
Först behöver vi en offentlig IP-adress för lastbalanseraren.
Starta PowerShell i Cloud Shell genom att köra det här kommandot:
pwsh
Skapa en ny offentlig IP-adress i PowerShell:
$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"
Skapa en IP-adress för klientdelen med cmdleten New-AzLoadBalancerFrontendIpConfig. Följande kod skapar en IP-konfiguration på klientsidan med namnet myFrontEnd och bifogar myPublicIP-adressen :
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
Skapa lastbalanseraren
När du använder PowerShell för att konfigurera en lastbalanserare måste du skapa serverdelsadresspoolen, hälsoavsökningen och regeln innan du skapar själva poolen.
Skapa en serverdelsadresspool genom att köra cmdleten New-AzLoadBalancerBackendAddressPoolConfig . Du ska koppla de virtuella datorerna till den här serverdelspoolen i de sista stegen. I följande exempel skapas en adresspool på serverdelen med namnet myBackEndPool:
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
Skapa en hälsoavsökning så att lastbalanseraren kan övervaka hälsoportalens status. Hälsoavsökningen lägger till eller tar bort virtuella datorer dynamiskt från lastbalanserarens rotation baserat på deras svar på hälsokontrollerna.
$probe = New-AzLoadBalancerProbeConfig ` -Name "myHealthProbe" ` -Protocol http ` -Port 80 ` -IntervalInSeconds 5 ` -ProbeCount 2 ` -RequestPath "/"
Nu behöver du en lastbalanseringsregel för att definiera hur trafiken distribueras till de virtuella datorerna. Du definierar IP-konfigurationen på klientdelen för inkommande trafik och IP-poolen på serverdelen för att ta emot trafik samt nödvändig käll- och målport. Du ser till att endast felfria virtuella datorer tar emot trafik genom att definiera vilken hälsoavsökning som ska användas.
$lbrule = New-AzLoadBalancerRuleConfig ` -Name "myLoadBalancerRule" ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 ` -Probe $probe
Nu kan du skapa den grundläggande lastbalanseraren genom att köra cmdleten New-AzLoadBalancer :
$lb = New-AzLoadBalancer ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule
Anslut de virtuella datorerna till serverdelspoolen genom att uppdatera nätverksgränssnitten som skriptet skapade med information om serverdelspoolen.
$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
Kör följande kommando för att hämta lastbalanserarens offentliga IP-adress och webbplatsens URL:
Write-Host http://$($(Get-AzPublicIPAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name "myPublicIP").IpAddress)
Skapa en lastbalanserare
Vi använder Azure CLI för att skapa lastbalanseraren och dess associerade resurser.
Skapa en ny offentlig IP-adress.
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
Skapa lastbalanseraren.
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
Skapa en hälsoavsökning som gör att lastbalanseraren kan övervaka hälsoportalens status. Hälsoavsökningen lägger till eller tar bort virtuella datorer dynamiskt från lastbalanserarens rotation baserat på deras svar på hälsokontroller.
az network lb probe create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80
Nu behöver du en lastbalanseringsregel för att definiera hur trafiken distribueras till de virtuella datorerna. Du definierar IP-konfigurationen på klientdelen för inkommande trafik och IP-poolen på serverdelen för att ta emot trafik samt nödvändig käll- och målport. Du ser till att endast felfria virtuella datorer tar emot trafik genom att definiera vilken hälsoavsökning som ska användas.
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
Anslut de virtuella datorerna till serverdelspoolen genom att uppdatera nätverksgränssnitten som skriptet skapade med information om serverdelspoolen.
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
Kör följande kommando för att hämta lastbalanserarens offentliga IP-adress och webbplatsens URL:
echo http://$(az network public-ip show \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myPublicIP \ --query ipAddress \ --output tsv)
Testa lastbalanserarens konfiguration
Nu ska vi testa konfigurationen av lastbalanseraren genom att visa hur den kan hantera tillgänglighets- och hälsoproblem dynamiskt.
Gå till den offentliga IP-adress du antecknade på en ny webbläsarflik. Ett svar från en av de virtuella datorerna visas i webbläsaren.
Prova en "force refresh" genom att trycka på Ctrl +F5 några gånger för att se att svaret returneras slumpmässigt från båda de virtuella datorerna.
I menyn i Azure-portalen eller på sidan Start väljer du Alla resurser. Välj sedan webVM1 och välj Stoppa.
Gå tillbaka till den flik som visar webbplatsen och tvångsuppdatera webbplatsen. Alla förfrågningar returneras nu från webVM2.