Dela via


Självstudie: Belastningsutjämning av 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 ✔️

Belastningsutjämning ger en högre tillgänglighetsnivå genom att sprida inkommande begäranden över flera virtuella datorer. I den här självstudien får du lära dig mer om de olika komponenterna i Azure-lastbalanseraren som distribuerar trafik och ger hög tillgänglighet. Du lär dig att:

  • Skapa en Azure-lastbalanserare
  • Skapa en hälsokontroll för lastbalanserare
  • Skapa trafikregler för lastbalanserare
  • Använd tillägget för anpassat skript för att skapa en grundläggande IIS-webbplats
  • Skapa virtuella datorer och koppla 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 mellan felfria virtuella datorer. En hälsokontroll för lastbalanserare övervakar en viss port på varje virtuell dator och distribuerar endast trafik till en funktionell virtuell dator.

Du definierar en IP-konfiguration på klientsidan som innehåller en eller flera offentliga IP-adresser. Med den här IP-konfigurationen på klientsidan kan lastbalanseraren och programmen vara tillgängliga via Internet.

Virtuella datorer ansluter till en lastbalanserare med sitt virtuella nätverkskort (NIC). För att fördela trafik till de virtuella datorerna innehåller en backend-adresspool IP-adresserna för de nätverkskort som är anslutna till lastbalanseraren.

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

Starta Azure Cloud Shell

Azure Cloud Shell är ett kostnadsfritt interaktivt gränssnitt som du kan använda för att köra stegen i den här artikeln. Den har vanliga Azure-verktyg förinstallerade och konfigurerade 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 på 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-lastbalanserare

Det här avsnittet beskriver hur du kan skapa och konfigurera varje komponent i lastbalanseraren. Innan du kan skapa lastbalanseraren skapar du en resursgrupp med New-AzResourceGroup. I följande exempel skapas en resursgrupp med namnet myResourceGroupLoadBalancer på platsen EastUS :

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

Skapa en offentlig IP-adress

För att få åtkomst till din app på Internet behöver du en offentlig IP-adress för lastbalanseraren. Skapa en offentlig IP-adress med 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 frontend-IP-pool med New-AzLoadBalancerFrontendIpConfig. I följande exempel skapas en IP-pool på klientsidan med namnet myFrontEndPool och myPublicIP-adressen bifogas:

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

Skapa en adresspool på serverdelen med hjälp av New-AzLoadBalancerBackendAddressPoolConfig. Virtuella datorer ansluter till denna backend-pool i de återstående stegen. I följande exempel skapas en serverdelsadresspool med namnet myBackEndPool:

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

Skapa nu lastbalanseraren med New-AzLoadBalancer. I följande exempel skapas en lastbalanserare med namnet myLoadBalancer med hjälp av ip-poolerna för klientdelen 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 kunna övervaka statusen för din app använder du en hälsokontroll. Hälsoproben lägger till eller tar bort virtuella datorer dynamiskt från lastbalanserarens rotation baserat på deras svar på hälsokontrollerna. Som standard tas en virtuell dator bort från lastbalanserarens distribution efter två på varandra följande fel med 15 sekunders intervall. 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-sond. Du kan också skapa anpassade HTTP-avsökningar för mer detaljerade hälsokontroller. När du använder en anpassad HTTP-avsökning måste du skapa hälsokontrollsidan, till exempel healthcheck.aspx. Proben måste returnera ett HTTP 200 OK-svar för att lastbalanseraren ska hålla värden i rotation.

Om du vill skapa en TCP-hälsoavsökning använder du Add-AzLoadBalancerProbeConfig. I följande exempel skapas en hälsoavsökning med namnet myHealthProbe som övervakar varje virtuell dator på TCP-port80:

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

För att tillämpa hälsoavsökningen uppdaterar du lastbalanseraren med 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 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. För att se till att endast felfria virtuella datorer tar emot trafik definierar du även hälsoavsökningen som ska användas.

Skapa en lastbalanseringsregel med hjälp av Add-AzLoadBalancerRuleConfig. I följande exempel skapas en lastbalanserare med namnet myLoadBalancerRule och trafiken balanseras på TCP-port80:

$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 Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

Konfigurera ett virtuellt nätverk

Innan du distribuerar några virtuella datorer och kan testa din lastbalanserare, skapar du de virtuella nätverksresurser som behövs. Mer information om virtuella nätverk finns i självstudien 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 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 som helst 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 nödvändiga virtuella nätverkskomponenter 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å PowerShell-prompterna återgår till dig. Du kan visa information om bakgrundsjobb med cmdleten Job . Det tar några minuter att skapa och konfigurera alla tre virtuella datorerna.

Installera IIS med anpassat skripttillägg

I en tidigare självstudie om Hur du anpassar en virtuell Windows-dator har du lärt dig hur du automatiserar anpassningen av virtuella datorer med tillägget för anpassat skript för Windows. Du kan använda samma metod 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örs powershell Add-WindowsFeature Web-Server för att installera IIS-webbservern och uppdaterar sedan sidanDefault.htm för att visa värdnamnet 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 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ärdnamnet för den virtuella dator som lastbalanseraren distribuerade trafik till som i följande exempel:

Driva IIS-webbplats

Om du vill se lastbalanseraren distribuera 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 datorer som kör din app, till exempel för att installera OS-uppdateringar. För att hantera ökad trafik till din app kan du behöva lägga till ytterligare virtuella datorer. Det här avsnittet visar 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ätverksgränssnittskortet med 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 lastbalanseraren distribuera trafik över de återstående två 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 OS-uppdateringar eller utföra en omstart av den virtuella datorn.

Lägga till en virtuell dator i lastbalanseraren

När du har utfört vm-underhåll, eller om du behöver utöka kapaciteten, 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 självstudien skapade du en lastbalanserare och kopplade virtuella datorer till den. Du har lärt dig att:

  • Skapa en Azure-lastbalanserare
  • Skapa en hälsokontroll för lastbalanserare
  • Skapa trafikregler för lastbalanserare
  • Använd tillägget för anpassat skript för att skapa en grundläggande IIS-webbplats
  • Skapa virtuella datorer och koppla 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 handledning för att lära dig hur du hanterar virtuella nätverk.