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.

Load balancer scenario

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.

  1. Zainstaluj i skonfiguruj interfejs wiersza polecenia platformy Azure, wykonując kroki opisane w artykule połączonym i zaloguj się do konta platformy Azure.

  2. 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

  1. Tworzenie grupy zasobów:

    az group create --name $rgName --location $location
    
  2. Tworzenie modułu równoważenia obciążenia:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. Utwórz sieć wirtualną:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. 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

  1. Konfigurowanie zmiennych programu PowerShell:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. 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.
  1. Konfigurowanie zmiennych programu PowerShell:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. 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.

  1. Konfigurowanie zmiennych programu PowerShell:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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.

  1. 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"
    
  2. 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.

  1. 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.

  2. Utwórz zestaw dostępności:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. 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"