Schnellstart: Erstellen eines öffentlichen Lastenausgleichs für virtuelle Computer 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. Weitere Ressourcen, die Sie bereitstellen, sind Azure Bastion, NAT Gateway, ein virtuelles Netzwerk und die erforderlichen Subnetze.
Voraussetzungen
Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen
Azure PowerShell (lokal installiert) oder Azure Cloud Shell
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 = 'westus2'
}
New-AzResourceGroup @rg
Erstellen einer öffentlichen IP-Adresse
Verwenden Sie New-AzPublicIpAddress, um eine öffentliche IP-Adresse zu erstellen.
$publicip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
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 = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
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 Frontend-IP-Adresse für den Frontend-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 = $rg.name
}
$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 -EnableTcpReset -DisableOutboundSNAT
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = $rg.name
Name = 'myLoadBalancer'
Location = 'westus2'
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
Erstellen Sie mit New-AzVirtualNetwork ein virtuelles Netzwerk.
Erstellen Sie mit New-AzNetworkSecurityRuleConfig eine Netzwerksicherheitsgruppen-Regel.
Erstellen Sie mit New-AzBastion einen Azure Bastion-Host.
Erstellen Sie mit New-AzNetworkSecurityGroup eine Netzwerksicherheitsgruppe.
Erstellen Sie die NAT Gateway-Ressource mit New-AzNatGateway.
Verwenden von New-AzVirtualNetworkSubnetConfig, um das NAT-Gateway dem Subnetz des virtuellen Netzwerks zuzuordnen
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, nachdem Sie diese benutzt haben.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'myNATgatewayIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'myNATgateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'westus2'
PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat
## Create backend subnet config ##
$subnet = @{
Name = 'myBackendSubnet'
AddressPrefix = '10.1.0.0/24'
NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet. ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.1.1.0/24'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'myVNet'
ResourceGroupName = $rg.name
Location = 'westus2'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$ip = @{
Name = 'myBastionIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
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 = $rg.name
Location = 'westus2'
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.
Erstellen Sie mit New-AzNetworkInterface zwei Netzwerkschnittstellen.
Legen Sie mit Get-Credential den Benutzernamen und das Kennwort des Administrators der VMs fest.
Erstellen Sie die virtuellen Computer mit Folgendem:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'myLoadBalancer'
ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$ns = @{
Name = 'myNSG'
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 = "myNicVM$i"
ResourceGroupName = $rg.name
Location = 'westus2'
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'
}
$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 = $rg.name
Location = 'westus2'
VM = $vmConfig
Zone = "$i"
}
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 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 eines der folgenden Ereignisse auftritt:
- Dem virtuellen Computer wird eine öffentliche IP-Adresse zugewiesen.
- Die VM wird im Backendpool eines Standardlastenausgleichs platziert (mit oder ohne Ausgangsregeln).
- Dem Subnetz der VM wird eine Azure NAT Gateway-Ressource zugewiesen.
VMs, die Sie mithilfe von VM-Skalierungsgruppen im Orchestrierungsmodus „Flexibel“ erstellen, haben keinen ausgehenden Standardzugriff.
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 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 = $rg.name
VMName = "myVM$i"
Location = 'westus2'
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 = '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 $rg.name
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: