Delen via


Zelfstudie: Taken verdelen over virtuele Windows-machines in Azure om een maximaal beschikbare toepassing te maken met Azure PowerShell

Van toepassing op: ✔️ Uniforme schaalsets voor Windows-VM's ✔️

Taakverdeling biedt een hoger beschikbaarheidsniveau door binnenkomende aanvragen over meerdere virtuele machines te spreiden. In deze zelfstudie leert u meer over de verschillende onderdelen van de Azure Load Balancer die verkeer distribueren en hoge beschikbaarheid bieden. U leert het volgende:

  • Een Azure Load Balancer maken
  • Een load balancer-statustest maken
  • Verkeersregels voor load balancer maken
  • De aangepaste scriptextensie gebruiken om een eenvoudige IIS-site te maken
  • Virtuele machines maken en koppelen aan een load balancer
  • Een load balancer in actie weergeven
  • VM's toevoegen aan en verwijderen uit een load balancer

Overzicht van Azure Load Balancer

Een Azure Load Balancer is een Layer-4-load balancer (TCP, UDP) die hoge beschikbaarheid biedt door binnenkomend verkeer te distribueren tussen gezonde VM's. Een statuscontrole van de load balancer controleert een bepaalde poort op elke VM en distribueert alleen verkeer naar een operationele VM.

U definieert een front-end-IP-configuratie die een of meer openbare IP-adressen bevat. Met deze front-end-IP-configuratie kunnen uw load balancer en toepassingen toegankelijk zijn via internet.

Virtuele machines maken verbinding met een load balancer met behulp van hun virtuele netwerkinterfacekaart (NIC). Als u verkeer naar de VM's wilt distribueren, bevat een back-endadresgroep de IP-adressen van de virtuele (NIC's) die zijn verbonden met de load balancer.

Als u de verkeersstroom wilt beheren, definieert u load balancer-regels voor specifieke poorten en protocollen die zijn toegewezen aan uw VM's.

Azure Cloud Shell starten

Azure Cloud Shell is een gratis interactieve shell waarmee u de stappen in dit artikel kunt uitvoeren. Veelgebruikte Azure-hulpprogramma's zijn vooraf geïnstalleerd en geconfigureerd voor gebruik met uw account.

Als u Cloud Shell wilt openen, selecteert u Proberen in de rechterbovenhoek van een codeblok. U kunt Cloud Shell ook openen in een afzonderlijk browsertabblad door naar https://shell.azure.com/powershell te gaan. Klik op Kopiëren om de codeblokken te kopiëren, plak deze in Cloud Shell en druk vervolgens op Enter om de code uit te voeren.

Azure Load Balancer maken

In deze sectie wordt beschreven hoe u elk onderdeel van de load balancer kunt maken en configureren. Voordat u de load balancer kunt maken, maakt u een resourcegroep met New-AzResourceGroup. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroupLoadBalancer gemaakt op de locatie EastUS :

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

Een openbaar IP-adres maken

Voor toegang tot uw app op internet hebt u een openbaar IP-adres nodig voor de load balancer. Maak een openbaar IP-adres met New-AzPublicIpAddress. In het volgende voorbeeld wordt een openbaar IP-adres gemaakt met de naam myPublicIP in de myResourceGroupLoadBalancer resourcegroep:

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

Een load balancer maken

Maak een front-end-IP-pool met New-AzLoadBalancerFrontendIpConfig. In het volgende voorbeeld wordt een frontend IP-pool met de naam myFrontEndPool gemaakt en wordt het adres myPublicIP gekoppeld.

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

Maak een back-end-adresgroep met New-AzLoadBalancerBackendAddressPoolConfig. In de resterende stappen worden de VM’s aan deze back-end-groep gekoppeld. In het volgende voorbeeld wordt een back-endadresgroep met de naam myBackEndPool gemaakt:

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

Maak nu de load balancer met New-AzLoadBalancer. In het volgende voorbeeld wordt een load balancer met de naam myLoadBalancer gemaakt met behulp van de front-end- en back-end-IP-adresgroepen die in de voorgaande stappen zijn gemaakt:

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

Een gezondheidstest maken

Om de load balancer in staat te stellen de status van uw app te monitoren, gebruikt u een gezondheidscontrole. De statustest voegt dynamisch VM's toe aan of verwijdert deze uit de load balancer-rotatie op basis van hun reactie op statuscontroles. Standaard wordt een VIRTUELE machine verwijderd uit de load balancer-distributie na twee opeenvolgende fouten met intervallen van 15 seconden. U maakt een statustest op basis van een protocol of een specifieke statuscontrolepagina voor uw app.

In het volgende voorbeeld wordt een TCP-test gemaakt. U kunt ook aangepaste HTTP-tests maken voor gedetailleerdere statuscontroles. Wanneer u een aangepaste HTTP-test gebruikt, moet u de gezondheidscontrolepagina maken, zoals healthcheck.aspx. De test moet een HTTP 200 OK retourneren antwoord voor de load balancer om de host in rotatie te houden.

Als u een TCP-statustest wilt maken, gebruikt u Add-AzLoadBalancerProbeConfig. In het volgende voorbeeld wordt een statustest gemaakt met de naam myHealthProbe die elke VM bewaakt op TCP-poort80:

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

Werk de load balancer bij met Set-AzLoadBalancer om de statustest toe te passen:

Set-AzLoadBalancer -LoadBalancer $lb

Een load balancer-regel maken

Een load balancer-regel wordt gebruikt om de verdeling van het verkeer over de VM's te definiëren. U definieert de front-end-IP-configuratie voor het inkomende verkeer en de back-end-IP-groep om het verkeer te ontvangen, samen met de gewenste bron- en doelpoort. Om ervoor te zorgen dat alleen vm's in orde verkeer ontvangen, definieert u ook de statustest die moet worden gebruikt.

Maak een load balancer-regel met Add-AzLoadBalancerRuleConfig. In het volgende voorbeeld wordt een load balancer-regel met de naam myLoadBalancerRule gemaakt en wordt verkeer op TCP-poort80 verdeeld:

$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

Werk de load balancer bij met Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

Virtueel netwerk configureren

Voordat u enkele VM's implementeert en uw balancer kunt testen, maakt u de ondersteunende virtuele netwerkbronnen. Zie de zelfstudie Azure Virtual Networks beheren voor meer informatie over virtuele netwerken.

Netwerkbronnen maken

Maak een virtueel netwerk met New-AzVirtualNetwork. In het volgende voorbeeld wordt een virtueel netwerk gemaakt met de naam myVnet met 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

Virtuele NIC's worden gemaakt met New-AzNetworkInterface. In het volgende voorbeeld worden drie virtuele NIC's gemaakt. (Eén virtuele NIC voor elke VM die u in de volgende stappen voor uw app maakt). U kunt op elk gewenst moment extra virtuele NIC's en VM's maken en deze toevoegen aan de load balancer:

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

Virtuele machines maken

Verbeter de hoge beschikbaarheid van uw app door uw VM's in een beschikbaarheidsset te plaatsen.

Maak een beschikbaarheidsset met New-AzAvailabilitySet. In het volgende voorbeeld wordt een beschikbaarheidsset met de naam myAvailabilitySet gemaakt:

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

Stel een beheerdersnaam en -wachtwoord voor de VM’s in met Get-Credential:

$cred = Get-Credential

Nu kunt u de VM’s maken met New-AzVM. In het volgende voorbeeld worden drie VM's en de vereiste onderdelen van het virtuele netwerk gemaakt als deze nog niet bestaan:

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
}

De parameter -AsJob creëert de virtuele machine als een achtergrondtaak, zodat de PowerShell-prompts naar u terugkeren. U kunt details van achtergrondtaken weergeven met de Job cmdlet. Het duurt enkele minuten om alle drie de VM's te maken en te configureren.

IIS installeren met aangepaste scriptextensie

In een vorige zelfstudie over het aanpassen van een virtuele Windows-machine hebt u geleerd hoe u VM-aanpassing automatiseert met de aangepaste scriptextensie voor Windows. U kunt dezelfde methode gebruiken om IIS op uw VM's te installeren en te configureren.

Gebruik Set-AzVMExtension om de aangepaste scriptextensie te installeren. De extensie voert powershell Add-WindowsFeature Web-Server uit om de IIS-webserver te installeren en werkt vervolgens de paginaDefault.htm bij om de hostnaam van de virtuele machine weer te geven.

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
}

Load balancer testen

Haal het openbare IP-adres van uw load balancer op met Get-AzPublicIPAddress. In het volgende voorbeeld wordt het IP-adres voor myPublicIP- die u eerder hebt gemaakt, verkregen:

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

Vervolgens kunt u het openbare IP-adres invoeren in een webbrowser. De website wordt weergegeven, inclusief de hostnaam van de virtuele machine waarnaar de load balancer verkeer heeft gedistribueerd, zoals in het volgende voorbeeld:

Iis-website uitvoeren

Als u wilt zien dat de load balancer verkeer distribueert over alle drie de VM's waarop uw app wordt uitgevoerd, kunt u het vernieuwen van uw webbrowser afdwingen.

VM's toevoegen en verwijderen

Mogelijk moet u onderhoud uitvoeren op de VM's waarop uw app wordt uitgevoerd, zoals het installeren van besturingssysteemupdates. Als u meer verkeer naar uw app wilt verwerken, moet u mogelijk extra VM's toevoegen. In deze sectie wordt beschreven hoe u een VM uit de load balancer verwijdert of toevoegt.

Een VIRTUELE machine verwijderen uit de load balancer

Haal de netwerkinterfacekaart op met Get-AzNetworkInterface en stel vervolgens de eigenschap LoadBalancerBackendAddressPools van de virtuele NIC in op $null. Werk ten slotte de virtuele NIC bij:

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

Als u wilt zien dat de load balancer verkeer distribueert over de resterende twee VM's waarop uw app wordt uitgevoerd, kunt u het vernieuwen van uw webbrowser afdwingen. U kunt nu onderhoud uitvoeren op de virtuele machine, zoals het installeren van besturingssysteemupdates of het opnieuw opstarten van een virtuele machine.

Een VIRTUELE machine toevoegen aan de load balancer

Nadat u VM-onderhoud hebt uitgevoerd of als u de capaciteit wilt uitbreiden, stelt u de eigenschap LoadBalancerBackendAddressPools van de virtuele NIC in op de BackendAddressPool van Get-AzLoadBalancer:

Haal de load balancer op:

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

Volgende stappen

In deze zelfstudie hebt u een load balancer gemaakt en er VM's aan gekoppeld. U hebt geleerd hoe u het volgende kunt doen:

  • Een Azure Load Balancer maken
  • Een load balancer-statustest maken
  • Verkeersregels voor load balancer maken
  • De aangepaste scriptextensie gebruiken om een eenvoudige IIS-site te maken
  • Virtuele machines maken en koppelen aan een load balancer
  • Een load balancer in actie weergeven
  • VM's toevoegen aan en verwijderen uit een load balancer

Ga naar de volgende zelfstudie voor meer informatie over het beheren van VM-netwerken.