Självstudier: Belastningsutjämna virtuella Windows-datorer i Azure för att skapa ett program med hög tillgänglighet med Azure PowerShell

Gäller för: ✔️ Enhetliga skalningsuppsättningar för virtuella Windows-datorer ✔️

Med belastningsutjämning får du högre tillgänglighet genom att inkommande begäranden sprids över flera virtuella datorer. I den här kursen får du lära dig mer om de olika komponenterna i Azure Load Balancer som distribuerar trafik och ger hög tillgänglighet. Lär dig att:

  • skapa en Azure Load Balancer
  • skapa en hälsoavsökning för lastbalanseraren
  • skapa trafikregler för lastbalanseraren
  • skapa en grundläggande IIS-webbplats med tillägget för anpassat skript
  • skapa virtuella datorer och anslut dem till en lastbalanserare
  • visa en lastbalanserare i praktiken
  • lägga till och ta bort virtuella datorer från en lastbalanserare.

Översikt över Azure Load Balancer

En Azure-lastbalanserare är en Layer-4-lastbalanserare (TCP, UDP) som ger hög tillgänglighet genom att distribuera inkommande trafik till felfria virtuella datorer. Lastbalanseraren har en hälsoavsökningsfunktion som övervakar en given port på varje virtuell dator och ser till att trafik endast distribueras till virtuella datorer som fungerar.

Du definierar en IP-konfiguration på klientdelen som innehåller en eller flera offentliga IP-adresser. IP-konfigurationen på klientdelen gör att det går att komma åt lastbalanseraren och program via Internet.

Virtuella datorer ansluter till en lastbalanserare med ett virtuellt nätverkskort. För att distribuera trafik till de virtuella datorerna finns en adresspool på serverdelen som innehåller IP-adresserna för de virtuella nätverkskort som är anslutna till lastbalanseraren.

För att styra trafikflödet definierar du regler för lastbalanseraren för specifika portar och protokoll som mappar till dina virtuella datorer.

Starta Azure Cloud Shell

Azure Cloud Shell är ett interaktivt gränssnitt som du kan använda för att utföra stegen i den här artikeln. Den har vanliga Azure-verktyg förinstallerat och har konfigurerats för användning med ditt konto.

Om du vill öppna Cloud Shell väljer du bara Prova från det övre högra hörnet i ett kodblock. Du kan också starta Cloud Shell i en separat webbläsarflik genom att gå till https://shell.azure.com/powershell. Kopiera kodblocket genom att välja Kopiera, klistra in det i Cloud Shell och kör det genom att trycka på RETUR.

Skapa en Azure Load Balancer

I det här avsnittet beskrivs hur du skapar och konfigurerar varje komponent i lastbalanseraren. Innan du kan skapa lastbalanseraren skapar du en resursgrupp med hjälp av New-AzResourceGroup. I följande exempel skapas en resursgrupp med namnet myResourceGroupLoadBalancer på platsen EastUS (Östra USA):

New-AzResourceGroup `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS"

Skapa en offentlig IP-adress

För att kunna komma åt din app på Internet behöver du en offentlig IP-adress för lastbalanseraren. Skapa en offentlig IP-adress med hjälp av New-AzPublicIpAddress. I följande exempel skapas en offentlig IP-adress med namnet myPublicIP i resursgruppen myResourceGroupLoadBalancer:

$publicIP = New-AzPublicIpAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -AllocationMethod "Static" `
  -Name "myPublicIP"

Skapa en lastbalanserare

Skapa en IP-adresspool på klientdelen med hjälp av New-AzLoadBalancerFrontendIpConfig. I följande exempel skapas en IP-adresspool på klientdelen med namnet myFrontEndPool och adressen myPublicIP kopplas:

$frontendIP = New-AzLoadBalancerFrontendIpConfig `
  -Name "myFrontEndPool" `
  -PublicIpAddress $publicIP

Skapa en adresspool på serverdelen med hjälp av New-AzLoadBalancerBackendAddressPoolConfig. Virtuella datorer ansluter till den här adresspoolen i de resterande stegen. I följande exempel skapas en serverdelsadresspool med namnet myBackEndPool:

$backendPool = New-AzLoadBalancerBackendAddressPoolConfig `
  -Name "myBackEndPool"

Skapa nu lastbalanseraren med hjälp av New-AzLoadBalancer. I följande exempel skapas en lastbalanserare med namnet myLoadBalancer med de IP-pooler för klient- och serverdelen som skapades i föregående steg:

$lb = New-AzLoadBalancer `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myLoadBalancer" `
  -Location "EastUS" `
  -FrontendIpConfiguration $frontendIP `
  -BackendAddressPool $backendPool

Skapa en hälsoavsökning

Om du vill att lastbalanseraren ska övervaka status för din app kan du använda en hälsoavsökning. Hälsoavsökningen lägger till eller tar bort virtuella datorer dynamiskt från lastbalanserarens rotation baserat på deras svar på hälsokontroller. Som standard tas en virtuell dator bort från lastbalanserarens distribution efter två fel i följd inom ett intervall på 15 sekunder. Du skapar en hälsoavsökning baserat på ett protokoll eller en specifik hälsokontrollsida för din app.

I följande exempel skapas en TCP-avsökning. Du kan också skapa anpassade HTTP-avsökningar om du vill ha mer detaljerade hälsokontroller. När du använder en anpassad HTTP-avsökning måste du skapa en hälsokontrollsida, till exempel healthcheck.aspx. Avsökningen måste returnera svaret HTTP 200 OK för att lastbalanseraren ska behålla värden i rotation.

Du skapar en TCP-hälsoavsökning med hjälp av Add-AzLoadBalancerProbeConfig. I följande exempel skapas en hälsoavsökning med namnet myHealthProbe som övervakar alla virtuella datorer på TCP-port 80:

Add-AzLoadBalancerProbeConfig `
  -Name "myHealthProbe" `
  -LoadBalancer $lb `
  -Protocol tcp `
  -Port 80 `
  -IntervalInSeconds 15 `
  -ProbeCount 2

För att använda hälsoavsökningen uppdaterar du lastbalanseraren med hjälp av Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

Skapa en lastbalanseringsregel

En lastbalanseringsregel används för att definiera hur trafiken ska distribueras till de virtuella datorerna. Du definierar IP-konfigurationen för den inkommande trafiken och IP-poolen i serverdelen som ska ta emot trafiken, samt nödvändiga käll- och målportar. För att säkerställa att de virtuella datorerna endast tar emot felfri trafik definierar du också vilken hälsoavsökning som ska användas.

Skapa en lastbalanseringsregel med hjälp av Add-AzLoadBalancerRuleConfig. I följande exempel skapas en lastbalanseringsregel med namnet myLoadBalancerRule och trafiken utjämnas på TCP-port 80:

$probe = Get-AzLoadBalancerProbeConfig -LoadBalancer $lb -Name "myHealthProbe"

Add-AzLoadBalancerRuleConfig `
  -Name "myLoadBalancerRule" `
  -LoadBalancer $lb `
  -FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
  -BackendAddressPool $lb.BackendAddressPools[0] `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80 `
  -Probe $probe

Uppdatera lastbalanseraren med hjälp av Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

Konfigurera ett virtuellt nätverk

Innan du kan distribuera virtuella datorer och testa din belastningsutjämnare skapar du virtuella nätverksresurser. Mer information om virtuella nätverk finns i självstudiekursen Hantera virtuella Azure-nätverk.

Skapa nätverksresurser

Skapa ett virtuellt nätverk med hjälp av New-AzVirtualNetwork. I följande exempel skapas ett virtuellt nätverk med namnet myVnet med mySubnet:

# Create subnet config
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name "mySubnet" `
  -AddressPrefix 192.168.1.0/24

# Create the virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -Name "myVnet" `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

Virtuella nätverkskort skapas med hjälp av New-AzNetworkInterface. I följande exempel skapas tre virtuella nätverkskort. (Det vill säga ett virtuellt nätverkskort för varje virtuell dator som du skapar för din app i följande steg.) Du kan skapa ytterligare virtuella nätverkskort och virtuella datorer när du vill och lägga till dem i lastbalanseraren:

for ($i=1; $i -le 3; $i++)
{
   New-AzNetworkInterface `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -Name myVM$i `
     -Location "EastUS" `
     -Subnet $vnet.Subnets[0] `
     -LoadBalancerBackendAddressPool $lb.BackendAddressPools[0]
}

Skapa virtuella datorer

Placera dina virtuella datorer i en tillgänglighetsuppsättning för att förbättra tillgängligheten för din app.

Skapa en tillgänglighetsuppsättning med hjälp av New-AzAvailabilitySet. I följande exempel skapas en tillgänglighetsuppsättning med namnet myAvailabilitySet:

$availabilitySet = New-AzAvailabilitySet `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myAvailabilitySet" `
  -Location "EastUS" `
  -Sku aligned `
  -PlatformFaultDomainCount 2 `
  -PlatformUpdateDomainCount 2

Ange ett administratörsanvändarnamn och lösenord för de virtuella datorerna med Get-Credential:

$cred = Get-Credential

Nu kan du skapa de virtuella datorerna med hjälp av New-AzVM. I följande exempel skapas tre virtuella datorer och de virtuella nätverkskomponenter som krävs, om de inte redan finns:

for ($i=1; $i -le 3; $i++)
{
    New-AzVm `
        -ResourceGroupName "myResourceGroupLoadBalancer" `
        -Name "myVM$i" `
        -Location "East US" `
        -VirtualNetworkName "myVnet" `
        -SubnetName "mySubnet" `
        -SecurityGroupName "myNetworkSecurityGroup" `
        -OpenPorts 80 `
        -AvailabilitySetName "myAvailabilitySet" `
        -Credential $cred `
        -AsJob
}

Parametern -AsJob skapar den virtuella datorn som en bakgrundsaktivitet så att PowerShell-kommandotolkarna återgår till dig. Du kan visa information om bakgrundsjobb med cmdleten Job. Det tar några minuter att skapa och konfigurera de tre virtuella datorerna.

Installera IIS med tillägget för anpassat skript

I en tidigare självstudiekurs om hur du anpassar en virtuell Windows-dator lärde du dig hur du automatiserar VM-anpassning med tillägget för anpassat skript för Windows. Du kan använda samma tillvägagångssätt för att installera och konfigurera IIS på dina virtuella datorer.

Använd Set-AzVMExtension för att installera Anpassat skripttillägg. Tillägget kör powershell Add-WindowsFeature Web-Server för att installera IIS-webbservern och uppdaterar sedan sidan Default.htm till att visa värddatornamnet för den virtuella datorn:

for ($i=1; $i -le 3; $i++)
{
   Set-AzVMExtension `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -ExtensionName "IIS" `
     -VMName myVM$i `
     -Publisher Microsoft.Compute `
     -ExtensionType CustomScriptExtension `
     -TypeHandlerVersion 1.8 `
     -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
     -Location EastUS
}

Testa lastbalanseraren

Hämta den offentliga IP-adressen för lastbalanseraren med hjälp av Get-AzPublicIPAddress. I följande exempel hämtas IP-adressen för myPublicIP som skapades tidigare:

Get-AzPublicIPAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myPublicIP" | select IpAddress

Du kan sedan ange den offentliga IP-adressen i en webbläsare. Webbplatsen visas, inklusive värddatornamnet för den virtuella dator som lastbalanseraren distribuerade trafik till, som i följande exempel:

Köra IIS-webbplatsen

Om du vill se hur lastbalanseraren distribuerar trafik över alla tre virtuella datorer som kör din app, kan du framtvinga uppdatering av webbläsaren.

Lägga till och ta bort virtuella datorer

Du kan behöva utföra underhåll på de virtuella datorerna som kör appen, till exempel installera uppdateringar av operativsystemet. För att klara ökad trafik till din app kan du behöva lägga till fler virtuella datorer. I det här avsnittet visas hur du tar bort eller lägger till en virtuell dator från lastbalanseraren.

Ta bort en virtuell dator från lastbalanseraren

Hämta nätverkskortet med hjälp av Get-AzNetworkInterface och ange sedan egenskapen LoadBalancerBackendAddressPools för det virtuella nätverkskortet till $null. Uppdatera slutligen det virtuella nätverkskortet:

$nic = Get-AzNetworkInterface `
    -ResourceGroupName "myResourceGroupLoadBalancer" `
    -Name "myVM2"
$nic.Ipconfigurations[0].LoadBalancerBackendAddressPools=$null
Set-AzNetworkInterface -NetworkInterface $nic

Om du vill se hur lastbalanseraren distribuerar trafik över de två återstående virtuella datorerna som kör din app, kan du framtvinga uppdatering av webbläsaren. Nu kan du utföra underhåll på den virtuella datorn, till exempel installera uppdateringar av operativsystemet eller göra en omstart av den virtuella datorn.

Lägga till en virtuell dator i lastbalanseraren

Om du behöver utöka kapaciteten efter underhåll av den virtuella datorn anger du egenskapen LoadBalancerBackendAddressPools för det virtuella nätverkskortet till BackendAddressPool från Get-AzLoadBalancer:

Hämta lastbalanseraren:

$lb = Get-AzLoadBalancer `
    -ResourceGroupName myResourceGroupLoadBalancer `
    -Name myLoadBalancer 
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$lb.BackendAddressPools[0]
Set-AzNetworkInterface -NetworkInterface $nic

Nästa steg

I den här kursen har du skapat en lastbalanserare och kopplat virtuella datorer till den. Du har lärt dig att:

  • skapa en Azure Load Balancer
  • skapa en hälsoavsökning för lastbalanseraren
  • skapa trafikregler för lastbalanseraren
  • skapa en grundläggande IIS-webbplats med tillägget för anpassat skript
  • skapa virtuella datorer och anslut dem till en lastbalanserare
  • visa en lastbalanserare i praktiken
  • lägga till och ta bort virtuella datorer från en lastbalanserare.

Gå vidare till nästa självstudie där du får lära dig hur du hanterar VM-nätverk.