Schnellstart: Erstellen Sie einen öffentlichen Load Balancer für den Lastenausgleich von VMs mithilfe von Azure PowerShell

Beginnen Sie mit der Verwendung von Azure Load Balancer, indem Sie mithilfe von Azure PowerShell einen öffentlichen Lastenausgleich und zwei virtuelle Computer erstellen. Sie stellen auch andere Ressourcen bereit, einschließlich Azure Bastion, NAT-Gateway, einem virtuellen Netzwerk und den erforderlichen Subnetzen.

Diagramm der für einen standardmäßigen öffentlichen Lastenausgleich bereitgestellten Ressourcen.

Voraussetzungen

Wenn Sie PowerShell lokal installieren und verwenden möchten, müssen Sie für diesen Artikel mindestens Version 5.4.1 des Azure PowerShell-Moduls verwenden. Führen Sie Get-Module -ListAvailable Az aus, um die installierte Version zu ermitteln. Wenn Sie ein Upgrade ausführen müssen, finden Sie unter Installieren des Azure PowerShell-Moduls Informationen dazu. Wenn Sie PowerShell lokal ausführen, müssen Sie auch Connect-AzAccount ausführen, um eine Verbindung mit Azure herzustellen.

Erstellen einer Ressourcengruppe

Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Sie Azure-Ressourcen bereitstellen und verwalten.

Erstellen Einer Ressourcengruppe mithilfe von New-AzResourceGroup:

$rg = @{
    Name = 'load-balancer-ps-rg'
    Location = 'eastus'
}
New-AzResourceGroup @rg

Erstellen einer öffentlichen IP-Adresse

Verwenden Sie New-AzPublicIpAddress, um eine öffentliche IP-Adresse zu erstellen.

$publicip = @{
    Name = 'lb-frontend-ip'
    ResourceGroupName = $rg.name
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1,2,3
}
New-AzPublicIpAddress @publicip

Verwenden Sie den folgenden Befehl, um in Zone 1 eine zonale öffentliche IP-Adresse zu erstellen:

$publicip = @{
    Name = 'lb-frontend-ip'
    ResourceGroupName = $rg.name
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1
}
New-AzPublicIpAddress @publicip

Einrichten eines Lastenausgleichs

In diesem Abschnitt wird erläutert, wie Sie die folgenden Komponenten des Lastenausgleichs erstellen und konfigurieren:

  • Erstellen Sie mit New-AzLoadBalancerFrontendIpConfig eine Frontend-IP-Adresse für den Frontend-IP-Pool. Diese IP nimmt den eingehenden Datenverkehr auf dem Load Balancer entgegen.

  • Erstellen Sie mit New-AzLoadBalancerBackendAddressPoolConfig einen Back-End-Adresspool für Datenverkehr, der vom Front-End des Lastenausgleichs gesendet wird. Stellen Sie Ihre virtuellen Back-End-Computer in diesem Pool bereit.

  • Erstellen Sie einen Integritätstest mit Add-AzLoadBalancerProbeConfig , der den Zustand der Back-End-VM-Instanzen bestimmt.

  • Erstellen Sie eine Lastenausgleichsregel mit Add-AzLoadBalancerRuleConfig , die definiert, wie Datenverkehr an die virtuellen Computer verteilt wird.

  • Erstellen Sie einen öffentlichen Lastenausgleich mit New-AzLoadBalancer.

## Place public IP created in previous steps into variable. ##
$pip = @{
    Name = 'lb-frontend-ip'
    ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip

## Create load balancer frontend configuration and place in variable. ##
$fip = @{
    Name = 'lb-frontend'
    PublicIpAddress = $publicIp 
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip

## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'lb-backend-pool'

## Create the health probe and place in variable. ##
$probe = @{
    Name = 'lb-health-probe'
    Protocol = 'tcp'
    Port = '80'
    IntervalInSeconds = '360'
    ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe

## Create the load balancer rule and place in variable. ##
$lbrule = @{
    Name = 'lb-HTTP-rule'
    Protocol = 'tcp'
    FrontendPort = '80'
    BackendPort = '80'
    IdleTimeoutInMinutes = '15'
    FrontendIpConfiguration = $feip
    BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset -DisableOutboundSNAT

## Create the load balancer resource. ##
$loadbalancer = @{
    ResourceGroupName = $rg.name
    Name = 'load-balancer'
    Location = 'eastus'
    Sku = 'Standard'
    FrontendIpConfiguration = $feip
    BackendAddressPool = $bePool
    LoadBalancingRule = $rule
    Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer

Konfigurieren eines virtuellen Netzwerks

Erstellen Sie zunächst die unterstützenden virtuellen Netzwerkressourcen, bevor Sie virtuelle Computer bereitstellen und Ihren Lastenausgleich testen.

Erstellen Sie ein virtuelles Netzwerk für die virtuellen Back-End-Computer.

Erstellen Sie eine Netzwerksicherheitsgruppe, um eingehende Verbindungen für Ihr virtuelles Netzwerk zu definieren.

Erstellen Sie einen Azure Bastion-Host, um die virtuellen Computer im Back-End-Pool sicher zu verwalten.

Verwenden Sie ein NAT-Gateway, um ausgehenden Internetzugriff auf Ressourcen im Back-End-Pool Ihres Lastenausgleichs bereitzustellen.

Erstellen Sie ein virtuelles Netzwerk, eine Netzwerk-Sicherheitsgruppe, einen Bastion-Host und ein NAT-Gateway

Wichtig

Die Stundenpreise gelten ab dem Zeitpunkt der Bereitstellung von Bastion, unabhängig von der Nutzung ausgehender Daten. Weitere Informationen dazu finden Sie unter Preise und SKUs. Wenn Sie Bastion im Rahmen eines Tutorials oder Tests bereitstellen, empfiehlt es sich, diese Ressource zu löschen, sobald Sie sie nicht mehr benötigen.

## Create public IP address for NAT gateway ##
$ip = @{
    Name = 'nat-gw-public-ip'
    ResourceGroupName = $rg.name
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip

## Create NAT gateway resource ##
$nat = @{
    ResourceGroupName = $rg.name
    Name = 'lb-nat-gateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'eastus'
    PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat

## Create backend subnet config ##
$subnet = @{
    Name = 'backend-subnet'
    AddressPrefix = '10.1.0.0/24'
    NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet 

## Create Azure Bastion subnet. ##
$bastsubnet = @{
    Name = 'AzureBastionSubnet' 
    AddressPrefix = '10.1.1.0/27'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet

## Create the virtual network ##
$net = @{
    Name = 'lb-vnet'
    ResourceGroupName = $rg.name
    Location = 'eastus'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

## Create public IP address for bastion host. ##
$ip = @{
    Name = 'lb-vnet-bastion-ip'
    ResourceGroupName = $rg.name
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip

## Create bastion host ##
$bastion = @{
    ResourceGroupName = $rg.name
    Name = 'lb-vnet-bastion'
    PublicIpAddress = $publicip
    VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob

## Create rule for network security group and place in variable. ##
$nsgrule = @{
    Name = 'lb-nsg-rule'
    Description = 'Allow HTTP'
    Protocol = '*'
    SourcePortRange = '*'
    DestinationPortRange = '80'
    SourceAddressPrefix = 'Internet'
    DestinationAddressPrefix = '*'
    Access = 'Allow'
    Priority = '200'
    Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule

## Create network security group ##
$nsg = @{
    Name = 'lb-nsg'
    ResourceGroupName = $rg.name
    Location = 'eastus'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

Erstellen von virtuellen Computern

In diesem Abschnitt werden die zwei virtuellen Computer für den Back-End-Pool des Lastenausgleichs erstellt.

# Set the administrator and password for the VMs. ##
$cred = Get-Credential

## Place the virtual network into a variable. ##
$net = @{
    Name = 'lb-vnet'
    ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net

## Place the load balancer into a variable. ##
$lb = @{
    Name = 'load-balancer'
    ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb  | Get-AzLoadBalancerBackendAddressPoolConfig

## Place the network security group into a variable. ##
$ns = @{
    Name = 'lb-nsg'
    ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @ns

## For loop with variable to create virtual machines for load balancer backend pool. ##
for ($i=1; $i -le 2; $i++){

    ## Command to create network interface for VMs ##
    $nic = @{
        Name = "lb-nic-VM$i"
        ResourceGroupName = $rg.name
        Location = 'eastus'
        Subnet = $vnet.Subnets[0]
        NetworkSecurityGroup = $nsg
        LoadBalancerBackendAddressPool = $bepool
    }
    $nicVM = New-AzNetworkInterface @nic

    ## Create a virtual machine configuration for VMs ##
    $vmsz = @{
        VMName = "lb-VM$i"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "lb-VM$i"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'MicrosoftWindowsServer'
        Offer = 'WindowsServer'
        Skus = '2019-Datacenter'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Windows `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id

    ## Create the virtual machine for VMs ##
    $vm = @{
        ResourceGroupName = $rg.name
        Location = 'eastus'
        VM = $vmConfig
        Zone = "$i"
    }
    New-AzVM @vm -AsJob
}

Übermitteln Sie die Bereitstellungen der virtuellen Computer und des Bastionhosts als PowerShell-Aufträge. Verwenden Sie Get-Job, um den Status der Aufträge anzuzeigen:

Get-Job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzBastion
2      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzVM
3      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzVM

Stellen Sie sicher, dass der Zustand der VM-Erstellung Abgeschlossen lautet, bevor Sie mit den nächsten Schritten fortfahren.

Hinweis

Azure stellt eine ausgehende Standardzugriffs-IP für VMs bereit, denen keine öffentliche IP-Adresse zugewiesen ist oder die sich im Backendpool eines internen grundlegenden Azure-Lastenausgleichs befinden. Der Mechanismus für Standard-IP-Adressen für den ausgehenden Zugriff stellt eine ausgehende IP-Adresse bereit, die nicht konfigurierbar ist.

Die Standard-IP-Adresse für ausgehenden Zugriff ist deaktiviert, wenn eins der folgenden Ereignisse auftritt:

  • Der VM wird eine öffentliche IP-Adresse zugewiesen.
  • Die VM wird im Back-End-Pool eines Standardlastenausgleichs platziert (mit oder ohne Ausgangsregeln).
  • Dem Subnetz der VM wird eine Azure NAT Gateway-Ressource zugewiesen.

VMs, die von VM-Skalierungsgruppen im Orchestrierungsmodus „Flexibel“ erstellt werden, haben keinen standardmäßigen ausgehenden Zugriff.

Weitere Informationen zu ausgehenden Verbindungen in Azure finden Sie unter Standardzugriff in ausgehender Richtung in Azure und Verwenden von SNAT (Source Network Address Translation) für ausgehende Verbindungen.

Installieren von IIS

Verwenden Sie Set-AzVMExtension, um die benutzerdefinierte Skripterweiterung zu installieren.

Die Erweiterung wird ausgeführt PowerShell Add-WindowsFeature Web-Server , um den IIS-Webserver zu installieren, und aktualisiert dann die Default.htm Seite, um den Hostnamen der VM anzuzeigen:

Wichtig

Stellen Sie sicher, dass die Bereitstellungen des virtuellen Computers aus den vorherigen Schritten abgeschlossen sind, bevor Sie fortfahren. Verwenden Sie Get-Job, um den Status der VM-Bereitstellungsaufträge zu überprüfen.

## For loop with variable to install custom script extension on virtual machines. ##
for ($i=1; $i -le 2; $i++)
{
$ext = @{
    Publisher = 'Microsoft.Compute'
    ExtensionType = 'CustomScriptExtension'
    ExtensionName = 'IIS'
    ResourceGroupName = $rg.name
    VMName = "lb-VM$i"
    Location = 'eastus'
    TypeHandlerVersion = '1.8'
    SettingString = '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
}
Set-AzVMExtension @ext -AsJob
}

Die Erweiterungen werden als PowerShell-Aufträge bereitgestellt. Verwenden Sie Get-Job, um den Status der Installationsaufträge anzuzeigen:

Get-Job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
8      Long Running O… AzureLongRunni… Running       True            localhost            Set-AzVMExtension
9      Long Running O… AzureLongRunni… Running       True            localhost            Set-AzVMExtension

Stellen Sie sicher, dass der Zustand des Auftrags Abgeschlossen lautet, bevor Sie mit den nächsten Schritten fortfahren.

Testen des Lastenausgleichs

Rufen Sie mit Get-AzPublicIpAddress die öffentliche IP-Adresse des Lastenausgleichs ab:

$ip = @{
    ResourceGroupName = $rg.name
    Name = 'lb-frontend-ip'
}  
Get-AzPublicIPAddress @ip | select IpAddress

Kopieren Sie die öffentliche IP-Adresse, und fügen Sie sie in die Adressleiste des Browsers ein. Die Standardseite des IIS-Webservers wird im Browser angezeigt.

Screenshot der Webseite „Lastenausgleichstest“.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen nicht mehr benötigen, verwenden Sie den Befehl "Remove-AzResourceGroup ", um die Ressourcengruppe, den Lastenausgleich und die verbleibenden Ressourcen zu entfernen.

Remove-AzResourceGroup -Name $rg.name

Nächste Schritte

In dieser Schnellstartanleitung führen Sie die folgenden Schritte aus:

  • Erstellen eines Azure Load Balancers

  • Zwei VMs dem Load-Balancer zuordnen

  • Testen des Lastenausgleichs

Fahren Sie mit dem folgenden Artikel fort, um sich weiter über Azure Load Balancer zu informieren: