Tworzenie publicznego modułu równoważenia obciążenia przy użyciu protokołu IPv6 przy użyciu interfejsu wiersza polecenia platformy Azure
Uwaga
W tym artykule opisano funkcję wprowadzającą protokół IPv6, aby umożliwić modułom równoważenia obciążenia w warstwie Podstawowa zapewnienie łączności IPv4 i IPv6. Kompleksowa łączność IPv6 jest teraz dostępna z protokołem IPv6 dla sieci wirtualnych platformy Azure, która integruje łączność IPv6 z sieciami wirtualnymi i zawiera kluczowe funkcje, takie jak reguły sieciowej grupy zabezpieczeń IPv6, routing zdefiniowany przez użytkownika IPv6, równoważenie obciążenia w warstwie Podstawowa i Standardowa i inne. Protokół IPv6 dla sieci wirtualnych platformy Azure jest zalecanym standardem dla aplikacji IPv6 na platformie Azure. Zobacz IPv6 for Azure VNET PowerShell Deployment (Wdrażanie protokołu IPv6 dla programu PowerShell dla sieci wirtualnej platformy Azure)
Usługa Azure Load Balancer to moduł równoważenia obciążenia w warstwie 4 (TCP, UDP). Moduły równoważenia obciążenia zapewniają wysoką dostępność, dystrybuując ruch przychodzący między wystąpienia usługi w dobrej kondycji w usługach w chmurze lub maszynach wirtualnych w zestawie modułu równoważenia obciążenia. Moduły równoważenia obciążenia mogą również prezentować te usługi na wielu portach lub wielu adresach IP lub obu tych usługach.
Przykładowy scenariusz wdrażania
Na poniższym diagramie przedstawiono rozwiązanie do równoważenia obciążenia wdrożone przy użyciu przykładowego szablonu opisanego w tym artykule.
W tym scenariuszu utworzysz następujące zasoby platformy Azure:
- Dwie maszyny wirtualne
- Interfejs sieci wirtualnej dla każdej maszyny wirtualnej z przypisanymi adresami IPv4 i IPv6
- Publiczny moduł równoważenia obciążenia z publicznym adresem IP IPv4 i publicznym adresem IP IPv6
- Zestaw dostępności zawierający dwie maszyny wirtualne
- Dwie reguły równoważenia obciążenia do mapowania publicznych adresów VIP na prywatne punkty końcowe
Wdrażanie rozwiązania przy użyciu interfejsu wiersza polecenia platformy Azure
W poniższych krokach pokazano, jak utworzyć publiczny moduł równoważenia obciążenia przy użyciu interfejsu wiersza polecenia platformy Azure. Przy użyciu interfejsu wiersza polecenia tworzysz i konfigurujesz poszczególne obiekty osobno, a następnie umieszczasz je razem w celu utworzenia zasobu.
Aby wdrożyć moduł równoważenia obciążenia, utwórz i skonfiguruj następujące obiekty:
- Konfiguracja adresu IP frontonu: zawiera publiczne adresy IP dla przychodzącego ruchu sieciowego.
- Pula adresów zaplecza: zawiera interfejsy sieciowe (KARTY sieciowe) dla maszyn wirtualnych do odbierania ruchu sieciowego z modułu równoważenia obciążenia.
- Reguły równoważenia obciążenia: zawiera reguły mapujące port publiczny modułu równoważenia obciążenia na port w puli adresów zaplecza.
- Reguły NAT dla ruchu przychodzącego: zawiera reguły translatora adresów sieciowych (NAT), które mapują port publiczny modułu równoważenia obciążenia na port dla określonej maszyny wirtualnej w puli adresów zaplecza.
- Sondy: zawiera sondy kondycji używane do sprawdzania dostępności wystąpień maszyn wirtualnych w puli adresów zaplecza.
Konfigurowanie interfejsu wiersza polecenia platformy Azure
W tym przykładzie uruchomisz narzędzia interfejsu wiersza polecenia platformy Azure w oknie polecenia programu PowerShell. Aby zwiększyć czytelność i ponowne użycie, należy użyć funkcji skryptów programu PowerShell, a nie poleceń cmdlet programu Azure PowerShell.
Zainstaluj i skonfiguruj interfejs wiersza polecenia platformy Azure, wykonując kroki opisane w artykule połączonym i zaloguj się do konta platformy Azure.
Skonfiguruj zmienne programu PowerShell do użycia z poleceniami interfejsu wiersza polecenia platformy Azure:
$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"
Tworzenie grupy zasobów, modułu równoważenia obciążenia, sieci wirtualnej i podsieci
Tworzenie grupy zasobów:
az group create --name $rgName --location $location
Tworzenie modułu równoważenia obciążenia:
$lb = az network lb create --resource-group $rgname --location $location --name $lbName
Utwórz sieć wirtualną:
$vnet = az network vnet create --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
W tej sieci wirtualnej utwórz dwie podsieci:
$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
Tworzenie publicznych adresów IP dla puli frontonu
Konfigurowanie zmiennych programu PowerShell:
$publicIpv4Name = "myIPv4Vip" $publicIpv6Name = "myIPv6Vip"
Utwórz publiczny adres IP dla puli adresów IP frontonu:
$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
Ważne
Moduł równoważenia obciążenia używa etykiety domeny publicznego adresu IP jako w pełni kwalifikowanej nazwy domeny (FQDN). Jest to zmiana z wdrożenia klasycznego, która używa nazwy usługi w chmurze jako nazwy FQDN modułu równoważenia obciążenia.
W tym przykładzie nazwa FQDN jest contoso09152016.southcentralus.cloudapp.azure.com.
Tworzenie pul frontonu i zaplecza
W tej sekcji utworzysz następujące pule adresów IP:
- Pula adresów IP frontonu, która odbiera przychodzący ruch sieciowy w module równoważenia obciążenia.
- Pula adresów IP zaplecza, w której pula frontonu wysyła ruch sieciowy o zrównoważonym obciążeniu.
Konfigurowanie zmiennych programu PowerShell:
$frontendV4Name = "FrontendVipIPv4" $frontendV6Name = "FrontendVipIPv6" $backendAddressPoolV4Name = "BackendPoolIPv4" $backendAddressPoolV6Name = "BackendPoolIPv6"
Utwórz pulę adresów IP frontonu i skojarz ją z publicznym adresem IP utworzonym w poprzednim kroku i modułem równoważenia obciążenia.
$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
Tworzenie sondy, reguł NAT i reguł modułu równoważenia obciążenia
W tym przykładzie opisano tworzenie następujących elementów:
- Reguła sondy do sprawdzania łączności z portem TCP 80.
- Reguła translatora adresów sieciowych do tłumaczenia całego ruchu przychodzącego na porcie 3389 na port 3389 dla protokołu RDP.*
- Reguła translatora adresów sieciowych do translacji całego ruchu przychodzącego na porcie 3391 na port 3389 dla protokołu RDP(Remote Desktop Protocol).*
- Reguła modułu równoważenia obciążenia w celu zrównoważenia całego ruchu przychodzącego na porcie 80 do portu 80 adresów w puli zaplecza.
* Reguły NAT są skojarzone z określonym wystąpieniem maszyny wirtualnej za modułem równoważenia obciążenia. Ruch sieciowy, który dociera do portu 3389, jest wysyłany do określonej maszyny wirtualnej i portu skojarzonego z regułą translatora adresów sieciowych. Musisz określić protokół (UDP lub TCP) dla reguły NAT. Nie można przypisać obu protokołów do tego samego portu.
Konfigurowanie zmiennych programu PowerShell:
$probeV4V6Name = "ProbeForIPv4AndIPv6" $natRule1V4Name = "NatRule-For-Rdp-VM1" $natRule2V4Name = "NatRule-For-Rdp-VM2" $lbRule1V4Name = "LBRuleForIPv4-Port80" $lbRule1V6Name = "LBRuleForIPv6-Port80"
Utwórz sondę.
Poniższy przykład tworzy sondę TCP, która sprawdza łączność z portem TCP zaplecza 80 co 15 sekund. Po dwóch kolejnych awariach oznacza zasób zaplecza jako niedostępny.
$probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
Utwórz reguły NAT dla ruchu przychodzącego, które zezwalają na połączenia RDP z zasobami zaplecza:
$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
Utwórz reguły modułu równoważenia obciążenia, które wysyłają ruch do różnych portów zaplecza, w zależności od frontonu, który odebrał żądanie.
$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
Sprawdź ustawienia:
az network lb show --resource-group $rgName --name $lbName
Oczekiwane dane wyjściowe:
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
Tworzenie kart sieciowych
Utwórz karty sieciowe i skojarz je z regułami translatora adresów sieciowych, regułami modułu równoważenia obciążenia i sondami.
Konfigurowanie zmiennych programu PowerShell:
$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"
Utwórz kartę sieciową dla każdego zaplecza i dodaj konfigurację protokołu IPv6:
$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
Tworzenie zasobów maszyny wirtualnej zaplecza i dołączanie każdej karty sieciowej
Aby utworzyć maszyny wirtualne, musisz mieć konto magazynu. W przypadku równoważenia obciążenia maszyny wirtualne muszą być członkami zestawu dostępności. Aby uzyskać więcej informacji na temat tworzenia maszyn wirtualnych, zobacz Tworzenie maszyny wirtualnej platformy Azure przy użyciu programu PowerShell.
Konfigurowanie zmiennych programu PowerShell:
$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"
Ostrzeżenie
W tym przykładzie użyto nazwy użytkownika i hasła dla maszyn wirtualnych w postaci zwykłego tekstu. Podczas używania tych poświadczeń w postaci zwykłego tekstu należy zachować odpowiednią ostrożność. Aby uzyskać bardziej bezpieczną metodę obsługi poświadczeń w programie PowerShell, zobacz
Get-Credential
polecenie cmdlet.Utwórz zestaw dostępności:
$availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
Utwórz maszyny wirtualne ze skojarzonymi kartami sieciowymi:
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"