Erstellen eines öffentlichen Lastenausgleichs mit IPv6 mithilfe der Azure-Befehlszeilenschnittstelle
Hinweis
In diesem Artikel wird eine Einführungsfunktion von IPv6 beschrieben, mit der Lastenausgleichsmodule im Basic-Tarif sowohl IPv4- als auch IPv6-Konnektivität bereitstellen können. Umfassende IPv6-Konnektivität ist jetzt mit IPv6 für Azure VNETs verfügbar, das IPv6-Konnektivität in Ihre virtuellen Netzwerke integriert und wichtige Funktionen wie Regeln für IPv6-Netzwerksicherheitsgruppen, benutzerdefiniertes IPv6-Routing, IPv6-Lastenausgleich in den Tarifen Standard und Basic und mehr umfasst. IPv6 für Azure VNETs ist der empfohlene Standard für IPv6-Anwendungen in Azure. Weitere Informationen finden Sie im Artikel zur IPv6-Bereitstellung für Azure VNet über PowerShell.
Ein Azure Load Balancer ist ein Layer-4-Load Balancer (TCP, UDP). Lastenausgleichsmodule sorgen für Hochverfügbarkeit, indem sie eingehenden Datenverkehr zwischen funktionierenden Dienstinstanzen in Clouddiensten oder auf virtuelle Computer in einer Lastenausgleichsgruppe verteilen. Lastenausgleichsmodule können diese Dienste auch auf mehreren Ports, mehreren IP-Adressen oder beidem leisten.
Beispielszenario für die Bereitstellung
Das folgende Diagramm veranschaulicht die Lösung mit Lastenausgleich, die mithilfe der in diesem Artikel beschriebenen Beispielvorlage bereitgestellt wird.
In diesem Szenario erstellen Sie die folgenden Azure-Ressourcen:
- zwei virtuelle Computer (VMs)
- eine virtuelle Netzwerkschnittstelle für jeden virtuellen Computer mit zugewiesenen IPv4- und IPv6-Adressen
- einen öffentlichen Lastenausgleich mit je einer öffentlichen IPv4- und IPv6-IP-Adresse
- eine Verfügbarkeitsgruppe, die die zwei virtuellen Computer enthält
- zwei Lastenausgleichsregeln, um die öffentlichen virtuellen IP-Adressen den privaten Endpunkten zuzuordnen
Bereitstellen der Lösung mithilfe der Azure-Befehlszeilenschnittstelle
Die folgenden Schritte zeigen, wie Sie einen öffentlichen Lastenausgleich mithilfe der Azure-Befehlszeilenschnittstelle erstellen. Mit der Befehlszeilenschnittstelle werden die einzelnen Objekt getrennt erstellt und konfiguriert und dann zusammengeführt, um eine Ressource zu erstellen.
Erstellen und konfigurieren Sie die folgenden Objekte, um einen Lastenausgleich bereitzustellen:
- Front-End-IP-Konfiguration: enthält öffentliche IP-Adressen für eingehenden Netzwerkdatenverkehr.
- Back-End-Adresspool: enthält Netzwerkschnittstellen (NICs), die VMs den Empfang von Netzwerkdatenverkehr des Lastenausgleichs ermöglichen.
- Lastenausgleichsregeln: enthält Regeln, die einen öffentlichen Port des Lastenausgleichs einem Port im Back-End-Adresspool zuordnen.
- NAT-Regeln für eingehenden Datenverkehr: enthält Regeln für die Netzwerkadressenübersetzung (Network Address Translation, NAT), die einen öffentlichen Port des Lastenausgleichs einem Port für eine bestimmte VM im Back-End-Adresspool zuordnen.
- Tests: enthält Integritätstests zum Prüfen der Verfügbarkeit von VM-Instanzen im Back-End-Adresspool.
Einrichten der Azure-Befehlszeilenschnittstelle
In diesem Beispiel führen Sie die Azure CLI-Tools in einem PowerShell-Befehlsfenster aus. Sie verwenden nicht die Azure PowerShell-Cmdlets, sondern die PowerShell-Skriptfunktionen, um Lesbarkeit und Wiederverwendung zu verbessern.
Installieren und konfigurieren Sie die Azure CLI anhand der Schritte im verlinkten Artikel, und melden Sie sich dann bei Ihrem Azure-Konto an.
Richten Sie PowerShell-Variablen für die Verwendung mit den Azure CLI-Befehlen ein:
$subscriptionid = "########-####-####-####-############" # enter subscription id $location = "southcentralus" $rgName = "pscontosorg1southctrlus09152016" $vnetName = "contosoIPv4Vnet" $vnetPrefix = "10.0.0.0/16" $subnet1Name = "clicontosoIPv4Subnet1" $subnet1Prefix = "10.0.0.0/24" $subnet2Name = "clicontosoIPv4Subnet2" $subnet2Prefix = "10.0.1.0/24" $dnsLabel = "contoso09152016" $lbName = "myIPv4IPv6Lb"
Erstellen einer Ressourcengruppe, eines Load Balancers, eines virtuellen Netzwerks und der Subnetze
Erstellen Sie eine Ressourcengruppe:
az group create --name $rgName --location $location
Erstellen Sie einen Lastenausgleich:
$lb = az network lb create --resource-group $rgname --location $location --name $lbName
Erstellen Sie ein virtuelles Netzwerk:
$vnet = az network vnet create --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
Erstellen Sie in diesem virtuellen Netzwerk zwei Subnetze:
$subnet1 = az network vnet subnet create --resource-group $rgname --name $subnet1Name --address-prefix $subnet1Prefix --vnet-name $vnetName $subnet2 = az network vnet subnet create --resource-group $rgname --name $subnet2Name --address-prefix $subnet2Prefix --vnet-name $vnetName
Erstellen öffentlicher IP-Adressen für den Front-End-Pool
Richten Sie die PowerShell-Variablen ein:
$publicIpv4Name = "myIPv4Vip" $publicIpv6Name = "myIPv6Vip"
Erstellen Sie eine öffentliche IP-Adresse für den Front-End-IP-Pool:
$publicipV4 = az network public-ip create --resource-group $rgname --name $publicIpv4Name --location $location --version IPv4 --allocation-method Dynamic --dns-name $dnsLabel $publicipV6 = az network public-ip create --resource-group $rgname --name $publicIpv6Name --location $location --version IPv6 --allocation-method Dynamic --dns-name $dnsLabel
Wichtig
Der Lastenausgleich verwendet die Domänenbezeichnung der öffentlichen IP-Adresse als seinen vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN). Dies ist eine Abkehr von der klassischen Bereitstellung, bei der der Clouddienstname als FQDN des Load Balancers verwendet wird.
In diesem Beispiel lautet der FQDN contoso09152016.southcentralus.cloudapp.azure.com.
Erstellen von Front-End- und Back-End-Pools
In diesem Abschnitt erstellen Sie die folgenden IP-Pools:
- Der Front-End-IP-Pool, der den eingehenden Netzwerkdatenverkehr für den Lastenausgleich empfängt.
- Der Back-End-IP-Pool, an den der Front-End-Pool den Netzwerkdatenverkehr sendet, für den ein Lastenausgleich durchgeführt wurde.
Richten Sie die PowerShell-Variablen ein:
$frontendV4Name = "FrontendVipIPv4" $frontendV6Name = "FrontendVipIPv6" $backendAddressPoolV4Name = "BackendPoolIPv4" $backendAddressPoolV6Name = "BackendPoolIPv6"
Erstellen Sie einen Front-End-IP-Pool und ordnen Sie ihn der im vorherigen Schritt erstellten öffentlichen IP-Adresse und dem Lastenausgleich zu.
$frontendV4 = az network lb frontend-ip create --resource-group $rgname --name $frontendV4Name --public-ip-address $publicIpv4Name --lb-name $lbName $frontendV6 = az network lb frontend-ip create --resource-group $rgname --name $frontendV6Name --public-ip-address $publicIpv6Name --lb-name $lbName $backendAddressPoolV4 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV4Name --lb-name $lbName $backendAddressPoolV6 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV6Name --lb-name $lbName
Erstellen des Tests, der NAT-Regeln und der Lastenausgleichsregeln
In diesem Beispiel werden die folgenden Elemente erstellt:
- Testregel, um die Verbindung mit TCP-Port 80 zu überprüfen
- NAT-Regel, um sämtlichen eingehenden Datenverkehr an Port 3389 für Port 3389 für RDP zu übersetzen.*
- NAT-Regel, um sämtlichen eingehenden Datenverkehr an Port 3391 für Port 3389 für Remotedesktopprotokoll (RDP) zu übersetzen.*
- Lastenausgleichsregel für die gleichmäßige Verteilung des gesamten an Port 80 eingehenden Datenverkehrs an Port 80 der Adressen im Back-End-Pool.
* NAT-Regeln sind einer bestimmten Instanz eines virtuellen Computers hinter dem Lastenausgleichsmodul zugeordnet. Der an Port 3389 eingehende Netzwerkdatenverkehr wird an einen bestimmten virtuellen Computer und einen Port gesendet, die mit dieser NAT-Regel verknüpft sind. Sie müssen ein Protokoll (UDP oder TCP) für eine NAT-Regel angeben. Sie können nicht beide Protokolle dem gleichen Port zuweisen.
Richten Sie die PowerShell-Variablen ein:
$probeV4V6Name = "ProbeForIPv4AndIPv6" $natRule1V4Name = "NatRule-For-Rdp-VM1" $natRule2V4Name = "NatRule-For-Rdp-VM2" $lbRule1V4Name = "LBRuleForIPv4-Port80" $lbRule1V6Name = "LBRuleForIPv6-Port80"
Erstellen Sie den Test.
Das folgende Beispiel erstellt einen TCP-Test, der alle 15 Sekunden die Konnektivität mit dem Back-End-TCP-Port 80 überprüft. Nach zwei aufeinanderfolgenden Fehlern wird die Back-End-Ressource als nicht verfügbar markiert.
$probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
Erstellen Sie NAT-Regeln für eingehenden Datenverkehr, die RDP-Verbindungen mit Back-End-Ressourcen zulassen:
$inboundNatRuleRdp1 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule1V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3389 --backend-port 3389 --lb-name $lbName $inboundNatRuleRdp2 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule2V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3391 --backend-port 3389 --lb-name $lbName
Erstellen Sie Lastenausgleichsregeln, die Datenverkehr abhängig davon, welches Front-End die Anforderung empfangen hat, an verschiedene Back-End-Ports senden.
$lbruleIPv4 = az network lb rule create --resource-group $rgname --name $lbRule1V4Name --frontend-ip-name $frontendV4Name --backend-pool-name $backendAddressPoolV4Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 80 --lb-name $lbName $lbruleIPv6 = az network lb rule create --resource-group $rgname --name $lbRule1V6Name --frontend-ip-name $frontendV6Name --backend-pool-name $backendAddressPoolV6Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 8080 --lb-name $lbName
Überprüfen Sie Ihre Einstellungen:
az network lb show --resource-group $rgName --name $lbName
Erwartete Ausgabe:
info: Executing command network lb show info: Looking up the load balancer "myIPv4IPv6Lb" data: Id : /subscriptions/########-####-####-####-############/resourceGroups/pscontosorg1southctrlus09152016/providers/Microsoft.Network/loadBalancers/myIPv4IPv6Lb data: Name : myIPv4IPv6Lb data: Type : Microsoft.Network/loadBalancers data: Location : southcentralus data: Provisioning state : Succeeded data: data: Frontend IP configurations: data: Name Provisioning state Private IP allocation Private IP Subnet Public IP data: --------------- ------------------ --------------------- ----------- ------ --------- data: FrontendVipIPv4 Succeeded Dynamic myIPv4Vip data: FrontendVipIPv6 Succeeded Dynamic myIPv6Vip data: data: Probes: data: Name Provisioning state Protocol Port Path Interval Count data: ------------------- ------------------ -------- ---- ---- -------- ----- data: ProbeForIPv4AndIPv6 Succeeded Tcp 80 15 2 data: data: Backend Address Pools: data: Name Provisioning state data: --------------- ------------------ data: BackendPoolIPv4 Succeeded data: BackendPoolIPv6 Succeeded data: data: Load Balancing Rules: data: Name Provisioning state Load distribution Protocol Frontend port Backend port Enable floating IP Idle timeout in minutes data: -------------------- ------------------ ----------------- -------- ------------- ------------ ------------------ ----------------------- data: LBRuleForIPv4-Port80 Succeeded Default Tcp 80 80 false 4 data: LBRuleForIPv6-Port80 Succeeded Default Tcp 80 8080 false 4 data: data: Inbound NAT Rules: data: Name Provisioning state Protocol Frontend port Backend port Enable floating IP Idle timeout in minutes data: ------------------- ------------------ -------- ------------- ------------ ------------------ ----------------------- data: NatRule-For-Rdp-VM1 Succeeded Tcp 3389 3389 false 4 data: NatRule-For-Rdp-VM2 Succeeded Tcp 3391 3389 false 4 info: network lb show
Erstellen von NICs
Erstellen Sie NICs, und ordnen Sie diese NAT-Regeln, Lastenausgleichsregeln und Tests zu.
Richten Sie die PowerShell-Variablen ein:
$nic1Name = "myIPv4IPv6Nic1" $nic2Name = "myIPv4IPv6Nic2" $subnet1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet1Name" $subnet2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet2Name" $backendAddressPoolV4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV4Name" $backendAddressPoolV6Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV6Name" $natRule1V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule1V4Name" $natRule2V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule2V4Name"
Erstellen Sie eine NIC für jedes Back-End, und fügen Sie eine IPv6-Konfiguration hinzu:
$nic1 = az network nic create --name $nic1Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet1Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule1V4Id $nic1IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic1Name $nic2 = az network nic create --name $nic2Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet2Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule2V4Id $nic2IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic2Name
Erstellen Sie die Back-End-VM-Ressourcen und fügen Sie jeden NIC an
Um VMs zu erstellen, benötigen Sie ein Speicherkonto. Für den Lastenausgleich müssen die VMs zu einer Verfügbarkeitsgruppe gehören. Weitere Informationen zum Erstellen von VMs finden Sie unter Erstellen eines virtuellen Windows-Computers mit PowerShell.
Richten Sie die PowerShell-Variablen ein:
$availabilitySetName = "myIPv4IPv6AvailabilitySet" $vm1Name = "myIPv4IPv6VM1" $vm2Name = "myIPv4IPv6VM2" $nic1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic1Name" $nic2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic2Name" $imageurn = "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest" $vmUserName = "vmUser" $mySecurePassword = "PlainTextPassword*1"
Warnung
Dieses Beispiel verwendet den Benutzernamen und das Kennwort für die virtuellen Computer in Klartext. Bei Anmeldeinformationen in Klartext müssen Sie entsprechend vorsichtig vorgehen. Eine sicherere Methode zur Handhabung der Anmeldeinformationen in PowerShell finden Sie in den Informationen zum Cmdlet
Get-Credential
.Erstellen Sie die Verfügbarkeitsgruppe:
$availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
Erstellen Sie die virtuellen Computer mit den zugehörigen NICs:
az vm create --resource-group $rgname --name $vm1Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic1Id --location $location --availability-set $availabilitySetName --size "Standard_A1" az vm create --resource-group $rgname --name $vm2Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic2Id --location $location --availability-set $availabilitySetName --size "Standard_A1"