Tutorial: Vornehmen eines Lastausgleichs bei virtuellen Windows-Computern in Azure zum Erstellen einer hochverfügbaren Anwendung mit Azure PowerShellTutorial: Load balance Windows virtual machines in Azure to create a highly available application with Azure PowerShell

Lastenausgleich bietet ein höheres Maß an Verfügbarkeit durch Verteilung der eingehenden Anforderungen auf mehrere virtuelle Computer.Load balancing provides a higher level of availability by spreading incoming requests across multiple virtual machines. In diesem Tutorial lernen Sie die verschiedenen Komponenten von Azure Load Balancer kennen, die den Datenverkehr verteilen und Hochverfügbarkeit bereitstellen.In this tutorial, you learn about the different components of the Azure load balancer that distribute traffic and provide high availability. Folgendes wird vermittelt:You learn how to:

  • Erstellen einer Azure Load Balancer-InstanzCreate an Azure load balancer
  • Erstellen des Integritätstests für den Load BalancerCreate a load balancer health probe
  • Erstellen von Regeln für den LastenausgleichCreate load balancer traffic rules
  • Verwenden der Benutzerdefinierten Skripterweiterung zum Erstellen einer einfachen IIS-WebsiteUse the Custom Script Extension to create a basic IIS site
  • Erstellen und Anfügen von virtuellen Computern an einen LastenausgleichCreate virtual machines and attach to a load balancer
  • Anzeigen eines Load Balancers im BetriebView a load balancer in action
  • Hinzufügen und Entfernen von virtuellen Computern zu bzw. aus einem Load BalancerAdd and remove VMs from a load balancer

Übersicht über den Azure Load BalancerAzure load balancer overview

Ein Azure Load Balancer ist ein Load Balancer der Schicht 4 (TCP, UDP), der Hochverfügbarkeit durch Verteilen des eingehenden Datenverkehrs auf fehlerfreie virtuelle Computer bietet.An Azure load balancer is a Layer-4 (TCP, UDP) load balancer that provides high availability by distributing incoming traffic among healthy VMs. Der Integritätstest eines Load Balancers überwacht einen bestimmten Port auf jedem virtuellen Computer und verteilt Datenverkehr nur an einen betriebsbereiten virtuellen Computer.A load balancer health probe monitors a given port on each VM and only distributes traffic to an operational VM.

Sie definieren eine Front-End-IP-Konfiguration, die eine oder mehrere öffentliche IP-Adressen enthält.You define a front-end IP configuration that contains one or more public IP addresses. Mit dieser Front-End-IP-Konfiguration sind der Load Balancer und Ihre Anwendungen über das Internet zugänglich.This front-end IP configuration allows your load balancer and applications to be accessible over the Internet.

Virtuelle Computer werden über die zugehörige virtuelle Netzwerkschnittstelle (NIC) mit einem Load Balancer verbunden.Virtual machines connect to a load balancer using their virtual network interface card (NIC). Zum Verteilen von Datenverkehr auf die virtuellen Computer enthält ein Back-End-Adresspool die IP-Adressen der virtuellen NICs, die mit dem Load Balancer verbunden sind.To distribute traffic to the VMs, a back-end address pool contains the IP addresses of the virtual (NICs) connected to the load balancer.

Zur Steuerung des Datenverkehrsflusses definieren Sie Load Balancer-Regeln für spezifische Ports und Protokolle, die den virtuellen Computern zugeordnet sind.To control the flow of traffic, you define load balancer rules for specific ports and protocols that map to your VMs.

Starten von Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel ausführen können.The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert.It has common Azure tools preinstalled and configured to use with your account.

Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock einfach die Option Ausprobieren.To open the Cloud Shell, just select Try it from the upper right corner of a code block. Sie können Cloud Shell auch auf einer separaten Browserregisterkarte starten, indem Sie zu https://shell.azure.com/powershell navigieren.You can also launch Cloud Shell in a separate browser tab by going to https://shell.azure.com/powershell. Wählen Sie Kopieren, um die Blöcke mit dem Code zu kopieren. Fügen Sie ihn anschließend in Cloud Shell ein, und drücken Sie die EINGABETASTE, um ihn auszuführen.Select Copy to copy the blocks of code, paste it into the Cloud Shell, and press enter to run it.

Erstellen eines Azure Load BalancersCreate Azure load balancer

In diesem Abschnitt wird erläutert, wie Sie die einzelnen Komponenten des Load Balancers erstellen und konfigurieren können.This section details how you can create and configure each component of the load balancer. Um Ihren Lastenausgleich erstellen zu können, müssen Sie zunächst mit New-AzResourceGroup eine Ressourcengruppe erstellen.Before you can create your load balancer, create a resource group with New-AzResourceGroup. Das folgende Beispiel erstellt am Standort EastUS eine Ressourcengruppe mit dem Namen myResourceGroupLoadBalancer:The following example creates a resource group named myResourceGroupLoadBalancer in the EastUS location:

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

Erstellen einer öffentlichen IP-AdresseCreate a public IP address

Um über das Internet auf Ihre App zugreifen zu können, benötigen Sie eine öffentliche IP-Adresse für den Load Balancer.To access your app on the Internet, you need a public IP address for the load balancer. Erstellen Sie mit New-AzPublicIpAddress eine öffentliche IP-Adresse.Create a public IP address with New-AzPublicIpAddress. Das folgende Beispiel erstellt in der Ressourcengruppe MyResourceGroupLoadBalancer eine öffentliche IP-Adresse mit dem Namen MyPublicIP:The following example creates a public IP address named myPublicIP in the myResourceGroupLoadBalancer resource group:

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

Einrichten eines Load BalancersCreate a load balancer

Erstellen Sie mit New-AzLoadBalancerFrontendIpConfig einen Front-End-IP-Pool.Create a frontend IP pool with New-AzLoadBalancerFrontendIpConfig. Im folgenden Beispiel wird ein Front-End-IP-Pools namens myFrontEndPool erstellt und die Adresse myPublicIP angefügt:The following example creates a frontend IP pool named myFrontEndPool and attaches the myPublicIP address:

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

Erstellen Sie mit New-AzLoadBalancerBackendAddressPoolConfig einen Back-End-Adresspool.Create a backend address pool with New-AzLoadBalancerBackendAddressPoolConfig. In den verbleibenden Schritten werden die virtuellen Computer an diesen Back-End-Pool angefügt.The VMs attach to this backend pool in the remaining steps. Im folgenden Beispiel wird ein Back-End-Adresspool namens myBackEndPool erstellt:The following example creates a backend address pool named myBackEndPool:

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

Erstellen Sie nun mit New-AzLoadBalancer den Lastenausgleich.Now, create the load balancer with New-AzLoadBalancer. Im folgenden Beispiel wird mithilfe der in den vorherigen Schritten erstellten Front-End- und Back-End-IP-Pools ein Lastenausgleich namens myLoadBalancer erstellt:The following example creates a load balancer named myLoadBalancer using the frontend and backend IP pools created in the preceding steps:

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

Erstellen eines IntegritätstestsCreate a health probe

Damit der Load Balancer den Status Ihrer App überwachen kann, verwenden Sie einen Integritätstest.To allow the load balancer to monitor the status of your app, you use a health probe. Abhängig von der Reaktion auf Integritätsüberprüfungen werden der Load Balancer-Rotation durch den Integritätstest dynamisch virtuelle Computer hinzugefügt oder daraus entfernt.The health probe dynamically adds or removes VMs from the load balancer rotation based on their response to health checks. Falls bei einem virtuellen Computer innerhalb eines Intervalls von 15 Sekunden zwei aufeinanderfolgende Fehler auftreten, wird er standardmäßig aus der Load Balancer-Verteilung entfernt.By default, a VM is removed from the load balancer distribution after two consecutive failures at 15-second intervals. Integritätstests werden auf der Grundlage eines Protokolls oder einer spezifischen Integritätsprüfungsseite für Ihre App erstellt.You create a health probe based on a protocol or a specific health check page for your app.

Im folgenden Beispiel wird ein TCP-Test erstellt.The following example creates a TCP probe. Sie können auch benutzerdefinierte HTTP-Tests für differenziertere Integritätsprüfungen erstellen.You can also create custom HTTP probes for more fine grained health checks. Bei Verwendung eines benutzerdefinierten HTTP-Tests müssen Sie die Integritätsprüfungsseite erstellen, z.B. healthcheck.aspx.When using a custom HTTP probe, you must create the health check page, such as healthcheck.aspx. Der Test muss die HTTP-Antwort 200 OK zurückgeben, damit der Load Balancer den Host nicht aus der Rotation entfernt.The probe must return an HTTP 200 OK response for the load balancer to keep the host in rotation.

Erstellen Sie mithilfe von Add-AzLoadBalancerProbeConfig einen TCP-Integritätstest.To create a TCP health probe, you use Add-AzLoadBalancerProbeConfig. Im folgenden Beispiel wird ein Integritätstest namens myHealthProbe erstellt, der die einzelnen virtuellen Computer an TCP-Port 80 überwacht:The following example creates a health probe named myHealthProbe that monitors each VM on TCP port 80:

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

Aktualisieren Sie den Lastenausgleich mit Set-AzLoadBalancer, um den Integritätstest anzuwenden:To apply the health probe, update the load balancer with Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

Erstellen einer Load Balancer-RegelCreate a load balancer rule

Mithilfe einer Load Balancer-Regel wird definiert, wie Datenverkehr auf die virtuellen Computer verteilt werden soll.A load balancer rule is used to define how traffic is distributed to the VMs. Sie definieren die Front-End-IP-Konfiguration für den eingehenden Datenverkehr und den Back-End-IP-Pool zum Empfangen des Datenverkehrs zusammen mit dem erforderlichen Quell- und Zielport.You define the front-end IP configuration for the incoming traffic and the back-end IP pool to receive the traffic, along with the required source and destination port. Um sicherzustellen, dass nur fehlerfreie virtuelle Computer Datenverkehr empfangen, definieren Sie zudem den zu verwendenden Integritätstest.To make sure only healthy VMs receive traffic, you also define the health probe to use.

Erstellen Sie mit Add-AzLoadBalancerRuleConfig eine Lastenausgleichsregel.Create a load balancer rule with Add-AzLoadBalancerRuleConfig. Im folgenden Beispiel wird eine Lastenausgleichsregel mit dem Namen myLoadBalancerRule erstellt und der Datenverkehr an TCP-Port 80 ausgeglichen:The following example creates a load balancer rule named myLoadBalancerRule and balances traffic on 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

Aktualisieren Sie den Lastenausgleich mit Set-AzLoadBalancer:Update the load balancer with Set-AzLoadBalancer:

Set-AzLoadBalancer -LoadBalancer $lb

Konfigurieren eines virtuellen NetzwerksConfigure virtual network

Vor der Bereitstellung mehrerer virtueller Computer und dem Testen des Load Balancers müssen Sie zunächst die unterstützenden virtuellen Netzwerkressourcen erstellen.Before you deploy some VMs and can test your balancer, create the supporting virtual network resources. Weitere Informationen zu virtuellen Netzwerken finden Sie im Tutorial Verwalten von virtuellen Azure-Netzwerken.For more information about virtual networks, see the Manage Azure Virtual Networks tutorial.

Erstellen von NetzwerkressourcenCreate network resources

Erstellen Sie mit New-AzVirtualNetwork ein virtuelles Netzwerk.Create a virtual network with New-AzVirtualNetwork. Im folgenden Beispiel wird ein virtuelles Netzwerk namens myVnet mit einem Subnetz namens mySubnet erstellt:The following example creates a virtual network named myVnet with 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

Virtuelle NICs werden mit New-AzNetworkInterface erstellt.Virtual NICs are created with New-AzNetworkInterface. Im folgenden Beispiel werden drei virtuelle NICs erstelltThe following example creates three virtual NICs. (jeweils eine virtuelle NIC pro virtuellem Computer, den Sie in den folgenden Schritten für Ihre App erstellen).(One virtual NIC for each VM you create for your app in the following steps). Sie können jederzeit weitere virtuelle NICs und virtuelle Computer erstellen und dem Load Balancer hinzufügen:You can create additional virtual NICs and VMs at any time and add them to the 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]
}

Erstellen von virtuellen ComputernCreate virtual machines

Fügen Sie die virtuellen Computer in eine Verfügbarkeitsgruppe ein, um die Hochverfügbarkeit Ihrer App zu optimieren.To improve the high availability of your app, place your VMs in an availability set.

Erstellen Sie mithilfe von New-AzAvailabilitySet eine Verfügbarkeitsgruppe.Create an availability set with New-AzAvailabilitySet. Im folgenden Beispiel wird eine Verfügbarkeitsgruppe namens myAvailabilitySet erstellt:The following example creates an availability set named myAvailabilitySet:

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

Legen Sie mit Get-Credential den Benutzernamen und das Kennwort des Administrators der VMs fest:Set an administrator username and password for the VMs with Get-Credential:

$cred = Get-Credential

Nun können Sie mit New-AzVM die virtuellen Computer erstellen.Now you can create the VMs with New-AzVM. Im folgenden Beispiel werden drei VMs und die erforderlichen Komponenten des virtuellen Netzwerks erstellt, falls sie nicht bereits vorhanden sind:The following example creates three VMs and the required virtual network components if they do not already exist:

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
}

Mit dem Parameter -AsJob wird die VM als Hintergrundaufgabe erstellt, sodass die PowerShell-Aufforderungen für Sie zurückgegeben werden.The -AsJob parameter creates the VM as a background task, so the PowerShell prompts return to you. Sie können die Details von Hintergrundaufträgen mit dem Job-Cmdlet anzeigen.You can view details of background jobs with the Job cmdlet. Die Erstellung und Konfiguration aller drei virtuellen Computer dauert einige Minuten.It takes a few minutes to create and configure all three VMs.

Installieren von IIS mit benutzerdefinierter SkripterweiterungInstall IIS with Custom Script Extension

In einem vorherigen Tutorial zum Anpassen eines virtuellen Windows-Computers haben Sie erfahren, wie die Anpassung für virtuelle Computer mit der benutzerdefinierten Skripterweiterung für Windows automatisiert wird.In a previous tutorial on How to customize a Windows virtual machine, you learned how to automate VM customization with the Custom Script Extension for Windows. Sie können den gleichen Ansatz verwenden, um IIS für Ihre virtuellen Computer zu installieren und konfigurieren.You can use the same approach to install and configure IIS on your VMs.

Verwenden Sie Set-AzVMExtension, um die benutzerdefinierte Skripterweiterung zu installieren.Use Set-AzVMExtension to install the Custom Script Extension. Die Erweiterung führt powershell Add-WindowsFeature Web-Server zum Installieren des IIS-Webservers aus und aktualisiert dann die Seite Default.htm mit dem Hostnamen der VM:The extension runs powershell Add-WindowsFeature Web-Server to install the IIS webserver and then updates the Default.htm page to show the hostname of the VM:

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
}

Testen des Load BalancersTest load balancer

Rufen Sie mit Get-AzPublicIPAddress die öffentliche IP-Adresse Ihres Lastenausgleichs ab.Obtain the public IP address of your load balancer with Get-AzPublicIPAddress. Im folgenden Beispiel wird die IP-Adresse für myPublicIP abgerufen, die wir zuvor erstellt haben:The following example obtains the IP address for myPublicIP created earlier:

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

Geben Sie die öffentliche IP-Adresse in einem Webbrowser ein.You can then enter the public IP address in to a web browser. Die Website wird mit dem Hostnamen der VM angezeigt, an die der Load Balancer den Datenverkehr wie im folgenden Beispiel verteilt hat:The website is displayed, including the hostname of the VM that the load balancer distributed traffic to as in the following example:

Ausführen der IIS-Website

Sie können eine erzwungene Aktualisierung Ihres Webbrowsers durchführen, um zu verfolgen, wie der Load Balancer den Datenverkehr auf alle drei virtuellen Computer verteilt, auf denen Ihre App ausgeführt wird.To see the load balancer distribute traffic across all three VMs running your app, you can force-refresh your web browser.

VMs hinzufügen und entfernenAdd and remove VMs

Für die virtuellen Computer, auf denen Ihre App ausgeführt wird, sind unter Umständen gelegentlich Wartungsarbeiten erforderlich (etwa die Installation von Betriebssystemupdates).You may need to perform maintenance on the VMs running your app, such as installing OS updates. Zur Bewältigung eines höheren Datenverkehrsaufkommens für Ihre App müssen gegebenenfalls weitere virtuelle Computer hinzugefügt werden.To deal with increased traffic to your app, you may need to add additional VMs. In diesem Abschnitt erfahren Sie, wie Sie einen virtuellen Computer aus dem Load Balancer entfernen oder dem Load Balancer einen virtuellen Computer hinzufügen.This section shows you how to remove or add a VM from the load balancer.

Entfernen eines virtuellen Computers aus dem Load BalancerRemove a VM from the load balancer

Rufen Sie mit Get-AzNetworkInterface die NIC ab, und legen Sie dann die Eigenschaft LoadBalancerBackendAddressPools der virtuellen NIC auf $null fest.Get the network interface card with Get-AzNetworkInterface, then set the LoadBalancerBackendAddressPools property of the virtual NIC to $null. Zum Schluss aktualisieren Sie die virtuelle NIC:Finally, update the virtual NIC.:

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

Sie können eine erzwungene Aktualisierung Ihres Webbrowsers durchführen, um zu verfolgen, wie der Load Balancer den Datenverkehr auf die beiden verbleibenden virtuellen Computer verteilt, auf denen Ihre App ausgeführt wird.To see the load balancer distribute traffic across the remaining two VMs running your app you can force-refresh your web browser. Nun können Sie Wartungsarbeiten für den virtuellen Computer durchführen und beispielsweise Betriebssystemupdates installieren oder den virtuellen Computer neu starten.You can now perform maintenance on the VM, such as installing OS updates or performing a VM reboot.

Hinzufügen eines virtuellen Computers zum Load BalancerAdd a VM to the load balancer

Wenn Sie eine VM-Wartung durchgeführt haben oder die Kapazität erweitern möchten, legen Sie die Eigenschaft LoadBalancerBackendAddressPools der virtuellen NIC auf den Back-End-Adresspool (BackendAddressPool) von Get-AzLoadBalancer fest:After performing VM maintenance, or if you need to expand capacity, set the LoadBalancerBackendAddressPools property of the virtual NIC to the BackendAddressPool from Get-AzLoadBalancer:

Rufen Sie den Load Balancer ab:Get the load balancer:

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

Nächste SchritteNext steps

In diesem Tutorial haben Sie einen Load Balancer erstellt und ihm einen virtuellen Computer angefügt.In this tutorial, you created a load balancer and attached VMs to it. Es wurde Folgendes vermittelt:You learned how to:

  • Erstellen einer Azure Load Balancer-InstanzCreate an Azure load balancer
  • Erstellen des Integritätstests für den Load BalancerCreate a load balancer health probe
  • Erstellen von Regeln für den LastenausgleichCreate load balancer traffic rules
  • Verwenden der Benutzerdefinierten Skripterweiterung zum Erstellen einer einfachen IIS-WebsiteUse the Custom Script Extension to create a basic IIS site
  • Erstellen und Anfügen von virtuellen Computern an einen LastenausgleichCreate virtual machines and attach to a load balancer
  • Anzeigen eines Load Balancers im BetriebView a load balancer in action
  • Hinzufügen und Entfernen von virtuellen Computern zu bzw. aus einem LastenausgleichAdd and remove VMs from a load balancer

Im nächsten Tutorial erfahren Sie, wie Sie VM-Netzwerke verwalten.Advance to the next tutorial to learn how to manage VM networking.