Udostępnij za pośrednictwem


Wdrażanie aplikacji podwójnego stosu IPv6 przy użyciu wewnętrznego modułu równoważenia obciążenia w warstwie Standardowa na platformie Azure przy użyciu programu PowerShell

W tym artykule pokazano, jak wdrożyć aplikację z podwójnym stosem (IPv4 + IPv6) na platformie Azure, która obejmuje sieć wirtualną z podwójnym stosem i podsiecią, wewnętrznym modułem równoważenia obciążenia w warstwie Standardowa z konfiguracjami frontonu (IPv4 i IPv6), maszynami wirtualnymi z kartami sieciowymi z dwiema konfiguracjami adresów IP, sieciową grupą zabezpieczeń i publicznymi adresami IP.

Procedura tworzenia wewnętrznego modułu równoważenia obciążenia obsługującego protokół IPv6 jest prawie identyczna z procesem tworzenia modułu równoważenia obciążenia IPv6 dostępnego z Internetu opisanego tutaj. Jedyne różnice dotyczące tworzenia wewnętrznego modułu równoważenia obciążenia znajdują się w konfiguracji frontonu, jak pokazano w poniższym przykładzie programu PowerShell:

 $frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
 -Name "dsLbFrontEnd_v6" `
 -PrivateIpAddress "fd00:db8:deca:deed::100" `
 -PrivateIpAddressVersion "IPv6" `
 -Subnet $DsSubnet

Zmiany wprowadzone powyżej konfiguracji frontonu wewnętrznego modułu równoważenia obciążenia to:

  • Parametr PrivateIpAddressVersion jest określony jako "IPv6"
  • Argument -PublicIpAddress został pominięty lub zastąpiony ciągiem -PrivateIpAddress. Należy pamiętać, że adres prywatny musi znajdować się w zakresie przestrzeni IP podsieci, w której zostanie wdrożony wewnętrzny moduł równoważenia obciążenia. Jeśli pominięto statyczny -PrivateIpAddress adres IPv6, zostanie wybrany następny bezpłatny adres IPv6 z podsieci, w której wdrożono wewnętrzny moduł równoważenia obciążenia.
  • Podsieć z podwójnym stosem, w której zostanie wdrożony wewnętrzny moduł równoważenia obciążenia, jest określana za pomocą argumentu -Subnet lub -SubnetId .

Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Opcja Przykład/link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Button to launch Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Screenshot that shows the Cloud Shell button in the Azure portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając klawisze Ctrl+Shift V w systemach Windows i Linux lub wybierając pozycję Cmd+Shift++V w systemie macOS.

  4. Wybierz klawisz Enter, aby uruchomić kod lub polecenie.

Jeśli zdecydujesz się zainstalować program PowerShell i korzystać z niego lokalnie, ten artykuł wymaga modułu Azure PowerShell w wersji 6.9.0 lub nowszej. Uruchom polecenie Get-Module -ListAvailable Az, aby dowiedzieć się, jaka wersja jest zainstalowana. Jeśli konieczne będzie uaktualnienie, zobacz Instalowanie modułu Azure PowerShell. Jeśli używasz programu PowerShell lokalnie, musisz też uruchomić polecenie Connect-AzAccount, aby utworzyć połączenie z platformą Azure.

Tworzenie grupy zasobów

Przed utworzeniem sieci wirtualnej z podwójnym stosem należy utworzyć grupę zasobów za pomocą polecenia New-AzResourceGroup. Poniższy przykład tworzy grupę zasobów o nazwie dsStd_ILB_RG w lokalizacji wschodnie stany USA :

$rg = New-AzResourceGroup `
  -ResourceGroupName "dsStd_ILB_RG"  `
  -Location "east us"

Tworzenie publicznych adresów IP protokołów IPv4 i IPv6

Aby uzyskać dostęp do maszyn wirtualnych z Internetu, potrzebne są publiczne adresy IP IPv4 i IPv6 dla maszyn wirtualnych. Utwórz publiczne adresy IP za pomocą polecenia New-AzPublicIpAddress. Poniższy przykład tworzy publiczny adres IP IPv4 i IPv6 o nazwie RdpPublicIP_1 i RdpPublicIP_2 w grupie zasobów dsStd_ILB_RG :

$RdpPublicIP_1 = New-AzPublicIpAddress `
  -Name "RdpPublicIP_1" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv4  `
  -sku Standard
  
$RdpPublicIP_2 = New-AzPublicIpAddress `
  -Name "RdpPublicIP_2" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv6  `
  -sku Standard

Tworzenie sieci wirtualnej i podsieci

Utwórz sieć wirtualną przy użyciu polecenia New-AzVirtualNetwork z podwójnym stosem konfiguracji podsieci przy użyciu polecenia New-AzVirtualNetworkSubnetConfig. W poniższym przykładzie zostanie utworzona sieć wirtualna o nazwie dsVnet z podsiecią dsSubnet.

# Create dual stack subnet config
$DsSubnet = New-AzVirtualNetworkSubnetConfig `
  -Name "dsSubnet" `
  -AddressPrefix "10.0.0.0/24","fd00:db8:deca:deed::/64"

# Create the virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsVnet" `
  -AddressPrefix "10.0.0.0/16","fd00:db8:deca::/48"  `
  -Subnet $DsSubnet

#Refresh the fully populated subnet for use in load balancer frontend configuration
$DsSubnet = get-AzVirtualNetworkSubnetconfig -name dsSubnet -VirtualNetwork $vnet

Tworzenie usługi Load Balancer w warstwie Standardowa

W tej sekcji skonfigurujesz podwójny adres IP frontonu (IPv4 i IPv6) oraz pulę adresów zaplecza dla modułu równoważenia obciążenia, a następnie utworzysz usługa Load Balancer w warstwie Standardowa.

Tworzenie adresu IP frontonu

Utwórz adres IP frontonu za pomocą polecenia New-AzLoadBalancerFrontendIpConfig. W poniższym przykładzie są tworzone konfiguracje adresów IP frontonu IPv4 i IPv6 o nazwie dsLbFrontEnd_v4 i dsLbFrontEnd_v6:

$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v4" `
  -PrivateIpAddress "10.0.0.100"  `
  -PrivateIpAddressVersion "IPv4"   `
  -Subnet $DsSubnet

$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v6" `
  -PrivateIpAddress "fd00:db8:deca:deed::100"  `
  -PrivateIpAddressVersion "IPv6"   `
  -Subnet $DsSubnet

Konfigurowanie puli adresów zaplecza

Utwórz pulę adresów zaplecza przy użyciu polecenia New-AzLoadBalancerBackendAddressPoolConfig. W kolejnych krokach maszyny wirtualne zostaną dołączone do tej puli zaplecza. Poniższy przykład obejmuje tworzenie pul adresów zaplecza o nazwie dsLbBackEndPool_v4 i dsLbBackEndPool_v6 w celu uwzględnienia maszyn wirtualnych z konfiguracjami kart sieciowych IPV4 i IPv6:

$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v4"

$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v6"

Tworzenie reguły modułu równoważenia obciążenia

Reguła modułu równoważenia obciążenia służy do definiowania sposobu dystrybucji ruchu do maszyn wirtualnych. Zdefiniuj konfigurację adresu IP frontonu na potrzeby ruchu przychodzącego oraz pulę adresów IP zaplecza do odbierania ruchu, wraz z wymaganym portem źródłowym i docelowym. Aby upewnić się, że tylko maszyny wirtualne w dobrej kondycji odbierają ruch, możesz opcjonalnie zdefiniować sondę kondycji. Podstawowy moduł równoważenia obciążenia używa sondy IPv4 do oceny kondycji zarówno punktów końcowych IPv4, jak i IPv6 na maszynach wirtualnych. Moduł równoważenia obciążenia w warstwie Standardowa obejmuje obsługę jawnie sond kondycji IPv6.

Utwórz regułę modułu równoważenia obciążenia przy użyciu polecenia Add-AzLoadBalancerRuleConfig. Poniższy przykład tworzy reguły modułu równoważenia obciążenia o nazwie dsLBrule_v4 i dsLBrule_v6 oraz równoważy ruch na porcie TCP 80 do konfiguracji adresów IP frontonu IPv4 i IPv6:

$lbrule_v4 = New-AzLoadBalancerRuleConfig `
  -Name "dsLBrule_v4" `
  -FrontendIpConfiguration $frontendIPv4 `
  -BackendAddressPool $backendPoolv4 `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80

$lbrule_v6 = New-AzLoadBalancerRuleConfig `
  -Name "dsLBrule_v6" `
  -FrontendIpConfiguration $frontendIPv6 `
  -BackendAddressPool $backendPoolv6 `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80

Tworzenie modułu równoważenia obciążenia

Utwórz usługa Load Balancer w warstwie Standardowa za pomocą polecenia New-AzLoadBalancer. Poniższy przykład tworzy publiczny usługa Load Balancer w warstwie Standardowa o nazwie myInternalLoadBalancer przy użyciu konfiguracji adresów IP frontonu IPv4 i IPv6, pul zaplecza i reguł równoważenia obciążenia utworzonych w poprzednich krokach:

$lb = New-AzLoadBalancer  `
  -ResourceGroupName $rg.ResourceGroupName  `
  -Location $rg.Location  `
  -Name  "MyInternalLoadBalancer"  `
  -Sku "Standard"  `
  -FrontendIpConfiguration  $frontendIPv4,$frontendIPv6  `
  -BackendAddressPool  $backendPoolv4,$backendPoolv6  `
  -LoadBalancingRule  $lbrule_v4,$lbrule_v6

Tworzenie zasobów sieciowych

Przed wdrożeniem niektórych maszyn wirtualnych i przetestowania modułu równoważenia należy utworzyć pomocnicze zasoby sieciowe — zestaw dostępności, sieciową grupę zabezpieczeń i wirtualne karty sieciowe.

Tworzenie zestawu dostępności

Aby zwiększyć wysoką dostępność aplikacji, umieść maszyny wirtualne w zestawie dostępności.

Aby utworzyć zestaw dostępności, użyj polecenia New-AzAvailabilitySet. Poniższy przykład tworzy zestaw dostępności o nazwie dsAVset:

$avset = New-AzAvailabilitySet `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsAVset" `
  -PlatformFaultDomainCount 2 `
  -PlatformUpdateDomainCount 2 `
  -Sku aligned

Tworzenie sieciowej grupy zabezpieczeń

Utwórz sieciową grupę zabezpieczeń dla reguł, które będą zarządzać komunikacją przychodzącą i wychodzącą w sieci wirtualnej.

Tworzenie reguły sieciowej grupy zabezpieczeń dla portu 3389

Utwórz regułę sieciowej grupy zabezpieczeń, aby zezwolić na połączenia protokołu RDP za pośrednictwem portu 3389 przy użyciu polecenia New-AzNetworkSecurityRuleConfig.

$rule1 = New-AzNetworkSecurityRuleConfig `
  -Name 'myNetworkSecurityGroupRuleRDP' `
  -Description 'Allow RDP' `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 100 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 3389

Tworzenie reguły sieciowej grupy zabezpieczeń dla portu 80

Utwórz regułę sieciowej grupy zabezpieczeń, aby zezwolić na połączenia internetowe za pośrednictwem portu 80 za pomocą polecenia New-AzNetworkSecurityRuleConfig.

$rule2 = New-AzNetworkSecurityRuleConfig `
  -Name 'myNetworkSecurityGroupRuleHTTP' `
  -Description 'Allow HTTP' `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 200 `
  -SourceAddressPrefix * `
  -SourcePortRange 80 `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80

Tworzenie sieciowej grupy zabezpieczeń

Utwórz sieciową grupę zabezpieczeń przy użyciu polecenia New-AzNetworkSecurityGroup.

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsNSG1"  `
  -SecurityRules $rule1,$rule2

Tworzenie kart sieciowych

Tworzenie wirtualnych kart sieciowych za pomocą polecenia New-AzNetworkInterface. W poniższym przykładzie są tworzone dwie wirtualne karty sieciowe z konfiguracjami IPv4 i IPv6. (Po jednej karcie na każdą maszynę wirtualną, która zostanie utworzona na potrzeby aplikacji w kolejnych krokach).


# Create the IPv4 configuration for NIC 1
$Ip4Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp4Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv4 `
  -LoadBalancerBackendAddressPool $backendPoolv4 `
  -PublicIpAddress  $RdpPublicIP_1

# Create the IPv6 configuration
$Ip6Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp6Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv6 `
  -LoadBalancerBackendAddressPool $backendPoolv6

# Create NIC 1
$NIC_1 = New-AzNetworkInterface `
  -Name "dsNIC1" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -NetworkSecurityGroupId $nsg.Id `
  -IpConfiguration $Ip4Config,$Ip6Config

# Create the IPv4 configuration for NIC 2
$Ip4Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp4Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv4 `
  -LoadBalancerBackendAddressPool $backendPoolv4 `
  -PublicIpAddress  $RdpPublicIP_2

# Create NIC 2 reusing the IPv6 configuration from NIC 1
$NIC_2 = New-AzNetworkInterface `
  -Name "dsNIC2" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -NetworkSecurityGroupId $nsg.Id `
  -IpConfiguration $Ip4Config,$Ip6Config

Tworzenie maszyn wirtualnych

Ustaw nazwę użytkownika i hasło administratora maszyn wirtualnych przy użyciu polecenia Get-Credential:

$cred = get-credential -Message "DUAL STACK VNET SAMPLE:  Please enter the Administrator credential to log into the VM's"

Następnie utwórz maszyny wirtualne za pomocą polecenia New-AzVM. Poniższy przykład obejmuje tworzenie dwóch maszyn wirtualnych oraz wymaganych składników sieci wirtualnej, jeśli jeszcze nie istnieją.

$vmsize = "Standard_A2"
$ImagePublisher = "MicrosoftWindowsServer"
$imageOffer = "WindowsServer"
$imageSKU = "2019-Datacenter"

$vmName= "dsVM1"
$VMconfig1 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage  3> $null | Add-AzVMNetworkInterface -Id $NIC_1.Id  3> $null
$VM1 = New-AzVM -ResourceGroupName $rg.ResourceGroupName  -Location $rg.Location  -VM $VMconfig1


$vmName= "dsVM2"
$VMconfig2 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage  3> $null | Add-AzVMNetworkInterface -Id $NIC_2.Id  3> $null
$VM2 = New-AzVM -ResourceGroupName $rg.ResourceGroupName  -Location $rg.Location  -VM $VMconfig2

Wyświetlanie sieci wirtualnej podwójnego stosu IPv6 w witrynie Azure Portal

Sieć wirtualną podwójnego stosu IPv6 można wyświetlić w witrynie Azure Portal w następujący sposób:

  1. Na pasku wyszukiwania portalu wprowadź ciąg dsVnet.
  2. Gdy sieć dsVnet pojawi się w wynikach wyszukiwania, wybierz ją. Spowoduje to uruchomienie strony Przegląd sieci wirtualnej z podwójnym stosem o nazwie dsVnet. Sieć wirtualna z podwójnym stosem pokazuje dwie karty sieciowe z konfiguracjami IPv4 i IPv6 znajdującymi się w podsieci podwójnej stosu o nazwie dsSubnet.

IPv6 Dual Stack Virtual Network with Standard Internal Load Balancer

Uwaga

Protokół IPv6 dla sieci wirtualnej platformy Azure jest dostępny w witrynie Azure Portal w wersji zapoznawczej tylko do odczytu.

Czyszczenie zasobów

Gdy grupa zasobów, maszyna wirtualna i wszystkie pokrewne zasoby nie będą już potrzebne, można je usunąć za pomocą polecenia Remove-AzResourceGroup.

Remove-AzResourceGroup -Name dsStd_ILB_RG

Następne kroki

W tym artykule utworzono usługa Load Balancer w warstwie Standardowa z konfiguracją podwójnego adresu IP frontonu (IPv4 i IPv6). Utworzono również dwie maszyny wirtualne, które zawierały karty sieciowe z dwiema konfiguracjami adresów IP (IPV4 + IPv6), które zostały dodane do puli zaplecza modułu równoważenia obciążenia. Aby dowiedzieć się więcej o obsłudze protokołu IPv6 w sieciach wirtualnych platformy Azure, zobacz Co to jest protokół IPv6 dla usługi Azure Virtual Network?