Schnellstart: Erstellen eines einfachen internen Lastenausgleichs für den Lastenausgleich virtueller Computer mithilfe von Azure PowerShell

Beginnen Sie mit der Verwendung von Azure Load Balancer, indem Sie mithilfe von PowerShell einen öffentlichen Lastenausgleich und zwei virtuelle Computer erstellen.

Hinweis

Ein Lastenausgleich mit Standard-SKU wird für Produktionsworkloads empfohlen. Weitere Informationen zu SKUs finden Sie unter Azure Load Balancer-SKUs .

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 Azure-Ressourcen bereitgestellt und verwaltet werden.

Erstellen Sie mit New-AzResourceGroup eine Ressourcengruppe:

$rg = @{
    Name = 'CreatePubLBQS-rg'
    Location = 'westus3'
}
New-AzResourceGroup @rg

Erstellen einer öffentlichen IP-Adresse

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

$publicip = @{
    Name = 'myPublicIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'westus3'
    Sku = 'Basic'
    AllocationMethod = 'static'
}
New-AzPublicIpAddress @publicip

Einrichten eines Load Balancers

In diesem Abschnitt erfahren Sie, wie Sie die folgenden Komponenten des Lastenausgleichs erstellen und konfigurieren:

  • Erstellen Sie mit New-AzLoadBalancerFrontendIpConfig eine Front-End-IP-Adresse für den Front-End-IP-Pool. An dieser IP-Adresse wird der eingehende Datenverkehr für den Lastenausgleich empfangen.

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

  • Erstellen Sie mit Add-AzLoadBalancerProbeConfig einen Integritätstest, der die Integrität der Back-End-VM-Instanzen ermittelt.

  • Erstellen Sie mit Add-AzLoadBalancerRuleConfig eine Lastenausgleichsregel, die die Verteilung von Datenverkehr an die virtuellen Computer definiert.

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

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

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

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

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

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

## Create the load balancer resource. ##
$loadbalancer = @{
    ResourceGroupName = 'CreatePubLBQS-rg'
    Name = 'myLoadBalancer'
    Location = 'westus3'
    Sku = 'Basic'
    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.

Erstellen von virtuellem Netzwerk, Netzwerksicherheitsgruppe und Bastionhost.

## Create backend subnet config ##
$subnet = @{
    Name = 'myBackendSubnet'
    AddressPrefix = '10.1.0.0/24'
}
$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 = 'myVNet'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'westus3'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

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

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

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

## Create network security group ##
$nsg = @{
    Name = 'myNSG'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'westus3'
    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 = 'myVNet'
    ResourceGroupName = 'CreatePubLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net

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

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

## Create availability set for the virtual machines. ##
$set = @{
    Name = 'myAvSet'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'westus3'
    Sku = 'Aligned'
    PlatformFaultDomainCount = '2'
    PlatformUpdateDomainCount =  '2'
}
$avs = New-AzAvailabilitySet @set

## 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 = "myNicVM$i"
        ResourceGroupName = 'CreatePubLBQS-rg'
        Location = 'westus3'
        Subnet = $vnet.Subnets[0]
        NetworkSecurityGroup = $nsg
        LoadBalancerBackendAddressPool = $bepool
    }
    $nicVM = New-AzNetworkInterface @nic

    ## Create a virtual machine configuration for VMs ##
    $vmsz = @{
        VMName = "myVM$i"
        VMSize = 'Standard_DS1_v2'
        AvailabilitySetId = $avs.Id 
    }
    $vmos = @{
        ComputerName = "myVM$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 = 'CreatePubLBQS-rg'
        Location = 'westus3'
        VM = $vmConfig
    }
    New-AzVM @vm -AsJob
}

Die Bereitstellungen der virtuellen Computer und des Bastionhosts werden als PowerShell-Aufträge übermittelt. 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 Standard-IP-Adresse für den ausgehenden Zugriff für VMs bereit, denen keine öffentliche IP-Adresse zugewiesen ist oder die sich im Back-End-Pool einer internen Azure Load Balancer-Instanz vom Typ „Basic“ befinden. Der Mechanismus für Standard-IP-Adressen für den ausgehenden Zugriff stellt eine ausgehende IP-Adresse bereit, die nicht konfigurierbar ist.

Weitere Informationen finden Sie unter Standardzugriff in ausgehender Richtung in Azure.

Die IP-Adresse für den ausgehenden Standardzugriff wird deaktiviert, wenn entweder der VM eine öffentliche IP-Adresse zugewiesen wird oder die VM im Back-End-Pool einer Load Balancer Standard-Instanz mit oder ohne Ausgangsregeln platziert wird. Wird dem Subnetz des virtuellen Computers eine Gatewayressource vom Typ Azure Virtual Network-NAT (Network Address Translation, Netzwerkadressenübersetzung) zugewiesen, wird die Standard-IP-Adresse für den ausgehenden Zugriff deaktiviert.

VMs, die von VM-Skalierungsgruppen im Orchestrierungsmodus „Flexibel“ erstellt werden, haben keinen ausgehenden Standardzugriff.

Weitere Informationen zu ausgehenden Verbindungen in Azure finden Sie unter Verwendung 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 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:

Wichtig

Vergewissern Sie sich, dass die VM-Bereitstellungen 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 = 'CreatePubLBQS-rg'
    VMName = "myVM$i"
    Location = 'westus3'
    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 = 'CreatePubLBQS-rg'
    Name = 'myPublicIP'
}  
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.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen nicht mehr benötigen, führen Sie den Befehl Remove-AzResourceGroup aus, um die Ressourcengruppe, den Lastenausgleich und alle übrigen Ressourcen zu löschen.

Remove-AzResourceGroup -Name 'CreatePubLBQS-rg'

Nächste Schritte

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

  • Erstellen eines Azure Load Balancers

  • Zwei virtuelle Computer an den Lastenausgleich angefügt

  • Testen des Lastenausgleichs

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