Nasazení aplikace duálního zásobníku IPv6 ve virtuální síti Azure pomocí PowerShellu

V tomto článku se dozvíte, jak nasadit aplikaci se dvěma zásobníky (IPv4 + IPv6) pomocí Load Balanceru úrovně Standard v Azure, který zahrnuje virtuální síť a podsíť se dvěma zásobníky, službou Standard Load Balancer se dvěma konfiguracemi front-endu (IPv4 + IPv6), virtuálními počítači s duální konfigurací IP adres, skupinou zabezpečení sítě a veřejnými IP adresami.

Azure Cloud Shell

Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.

Spuštění služby Azure Cloud Shell:

Možnost Příklad nebo odkaz
Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. Screenshot that shows an example of Try It for Azure Cloud Shell.
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. Button to launch Azure Cloud Shell.
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Screenshot that shows the Cloud Shell button in the Azure portal

Použití Azure Cloud Shellu:

  1. Spusťte Cloud Shell.

  2. Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.

  3. Vložte kód nebo příkaz do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete ctrl+Shift+V nebo vyberete Cmd+Shift+V v macOS.

  4. Stisknutím klávesy Enter spusťte kód nebo příkaz.

Pokud se rozhodnete nainstalovat a používat PowerShell místně, tento článek vyžaduje modul Azure PowerShell verze 6.9.0 nebo novější. Nainstalovanou verzi zjistíte spuštěním příkazu Get-Module -ListAvailable Az. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell. Pokud používáte PowerShell místně, musíte také spustit Connect-AzAccount , abyste vytvořili připojení k Azure.

Vytvoření skupiny zdrojů

Než budete moct vytvořit virtuální síť se dvěma zásobníky, musíte vytvořit skupinu prostředků pomocí rutiny New-AzResourceGroup. Následující příklad vytvoří skupinu prostředků myRGDualStack v umístění USA – východ :

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

Vytvoření veřejných IP adres IPv4 a IPv6

Pro přístup k virtuálním počítačům z internetu potřebujete veřejné IP adresy IPv4 a IPv6 pro nástroj pro vyrovnávání zatížení. Vytvořte veřejné IP adresy pomocí Rutiny New-AzPublicIpAddress. Následující příklad vytvoří veřejnou IP adresu IPv4 a IPv6 s názvem dsPublicIP_v4 a dsPublicIP_v6 ve skupině prostředků dsRG1 :

$PublicIP_v4 = New-AzPublicIpAddress `
  -Name "dsPublicIP_v4" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv4 `
  -Sku Standard
  
$PublicIP_v6 = New-AzPublicIpAddress `
  -Name "dsPublicIP_v6" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv6 `
  -Sku Standard

Pokud chcete získat přístup k virtuálním počítačům pomocí připojení RDP, vytvořte pro virtuální počítače veřejné IP adresy IPV4 pomocí Rutiny New-AzPublicIpAddress.

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

Vytvoření Load Balanceru úrovně Standard

V této části nakonfigurujete duální front-endovou IP adresu (IPv4 a IPv6) a back-endový fond adres pro nástroj pro vyrovnávání zatížení a pak vytvoříte Load Balancer úrovně Standard.

Vytvoření front-endové IP adresy

Vytvořte front-endovou IP adresu pomocí rutiny New-AzLoadBalancerFrontendIpConfig. Následující příklad vytvoří konfigurace front-endových IP adres IPv4 a IPv6 s názvem dsLbFrontEnd_v4 a dsLbFrontEnd_v6:

$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v4" `
  -PublicIpAddress $PublicIP_v4

$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v6" `
  -PublicIpAddress $PublicIP_v6

Konfigurace fondu back-endových adres

Vytvořte back-endový fond adres pomocí Rutiny New-AzLoadBalancerBackendAddressPoolConfig. Virtuální počítače se k tomuto back-endovému fondu připojí v dalších krocích. Následující příklad vytvoří back-endové fondy adres s názvem dsLbBackEndPool_v4 a dsLbBackEndPool_v6 pro zahrnutí virtuálních počítačů s konfigurací síťových adaptérů IPV4 i IPv6:

$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v4"

$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v6"

Vytvoření sondy stavu

Pomocí rutiny Add-AzLoadBalancerProbeConfig vytvořte sondu stavu pro monitorování stavu virtuálních počítačů.

$probe = New-AzLoadBalancerProbeConfig -Name MyProbe -Protocol tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2

Vytvoření pravidla nástroje pro vyrovnávání zatížení

Pravidlo nástroje pro vyrovnávání zatížení slouží k definování způsobu distribuce provozu do virtuálních počítačů. Definujte konfiguraci front-endových IP adres pro příchozí provoz, back-endový fond IP adres pro příjem provozu a také požadovaný zdrojový a cílový port. Pokud chcete zajistit, aby provoz přijímaly jenom virtuální počítače, které jsou v pořádku, můžete volitelně definovat sondu stavu. Nástroj pro vyrovnávání zatížení úrovně Basic používá sondu IPv4 k vyhodnocení stavu koncových bodů IPv4 i IPv6 na virtuálních počítačích. Load Balancer úrovně Standard zahrnuje podporu explicitně sond stavu IPv6.

Vytvořte pravidlo nástroje pro vyrovnávání zatížení pomocí rutiny Add-AzLoadBalancerRuleConfig. Následující příklad vytvoří pravidla nástroje pro vyrovnávání zatížení s názvem dsLBrule_v4 a dsLBrule_v6 a vyrovnává provoz na portu TCP 80 s konfigurací IPv4 a IPv6 front-endových IP adres:

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

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

Vytvoření nástroje pro vyrovnávání zatížení

Vytvořte Load Balancer úrovně Standard pomocí New-AzLoadBalancer. Následující příklad vytvoří veřejný Load Balancer úrovně Standard s názvem myLoadBalancer s použitím konfigurace IPv4 a IPv6 front-endových IP adres, back-endových fondů a pravidel vyrovnávání zatížení, která jste vytvořili v předchozích krocích:

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

Vytvoření síťových prostředků

Před nasazením některých virtuálních počítačů a testováním nástroje pro vyrovnávání musíte vytvořit podpůrné síťové prostředky – skupinu dostupnosti, skupinu zabezpečení sítě, virtuální síť a virtuální síťové karty.

Vytvoření skupiny dostupnosti

Pokud chcete zlepšit vysokou dostupnost aplikace, umístěte své virtuální počítače do skupiny dostupnosti.

Vytvořte sadu dostupnosti pomocí New-AzAvailabilitySet. Následující příklad vytvoří skupinu dostupnosti s názvem myAvailabilitySet:

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

Vytvoření skupiny zabezpečení sítě

Vytvořte skupinu zabezpečení sítě pro pravidla, která řídí příchozí a odchozí komunikaci ve vaší virtuální síti.

Vytvoření pravidla skupiny zabezpečení sítě pro port 3389

Vytvořte pravidlo skupiny zabezpečení sítě, které povolí připojení RDP přes port 3389 pomocí rutiny New-AzNetworkSecurityRuleConfig.

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

Vytvoření pravidla skupiny zabezpečení sítě pro port 80

Vytvořte pravidlo skupiny zabezpečení sítě, které povolí připojení k internetu přes port 80 pomocí rutiny New-AzNetworkSecurityRuleConfig.

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

Vytvoření skupiny zabezpečení sítě

Vytvořte skupinu zabezpečení sítě pomocí rutiny New-AzNetworkSecurityGroup.

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

Vytvoření virtuální sítě

Vytvořte virtuální síť pomocí rutiny New-AzVirtualNetwork. Následující příklad vytvoří virtuální síť s názvem dsVnet s podsítě:

# Create dual stack subnet
$subnet = 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 $subnet

Vytvoření síťových rozhraní

Vytvoření virtuálních síťových rozhraní pomocí New-AzNetworkInterface Následující příklad vytvoří dvě virtuální síťové karty s konfigurací IPv4 i IPv6. (Jednu virtuální síťovou kartu pro každý virtuální počítač, který pro svou aplikaci vytvoříte v následujících krocích).

  $Ip4Config=New-AzNetworkInterfaceIpConfig `
    -Name dsIp4Config `
    -Subnet $vnet.subnets[0] `
    -PrivateIpAddressVersion IPv4 `
    -LoadBalancerBackendAddressPool $backendPoolv4 `
    -PublicIpAddress  $RdpPublicIP_1
      
  $Ip6Config=New-AzNetworkInterfaceIpConfig `
    -Name dsIp6Config `
    -Subnet $vnet.subnets[0] `
    -PrivateIpAddressVersion IPv6 `
    -LoadBalancerBackendAddressPool $backendPoolv6
    
  $NIC_1 = New-AzNetworkInterface `
    -Name "dsNIC1" `
    -ResourceGroupName $rg.ResourceGroupName `
    -Location $rg.Location  `
    -NetworkSecurityGroupId $nsg.Id `
    -IpConfiguration $Ip4Config,$Ip6Config 
    
  $Ip4Config=New-AzNetworkInterfaceIpConfig `
    -Name dsIp4Config `
    -Subnet $vnet.subnets[0] `
    -PrivateIpAddressVersion IPv4 `
    -LoadBalancerBackendAddressPool $backendPoolv4 `
    -PublicIpAddress  $RdpPublicIP_2  

  $NIC_2 = New-AzNetworkInterface `
    -Name "dsNIC2" `
    -ResourceGroupName $rg.ResourceGroupName `
    -Location $rg.Location  `
    -NetworkSecurityGroupId $nsg.Id `
    -IpConfiguration $Ip4Config,$Ip6Config 

Vytvoření virtuálních počítačů

Pomocí rutiny Get-Credential nastavte uživatelské jméno a heslo správce virtuálních počítačů:

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

Teď můžete vytvořit virtuální počítače pomocí Rutiny New-AzVM. Následující příklad vytvoří dva virtuální počítače a požadované komponenty virtuální sítě, pokud ještě neexistují.

$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

Určení IP adres koncových bodů IPv4 a IPv6

Získejte všechny objekty síťového rozhraní ve skupině prostředků, abyste shrnuli IP adresy použité v tomto nasazení.get-AzNetworkInterface Získejte také front-endové adresy Load Balanceru koncových bodů IPv4 a IPv6 s get-AzpublicIpAddress.

$rgName= "dsRG1"
$NICsInRG= get-AzNetworkInterface -resourceGroupName $rgName 
write-host `nSummary of IPs in this Deployment: 
write-host ******************************************
foreach ($NIC in $NICsInRG) {
 
    $VMid= $NIC.virtualmachine.id 
    $VMnamebits= $VMid.split("/") 
    $VMname= $VMnamebits[($VMnamebits.count-1)] 
    write-host `nPrivate IP addresses for $VMname 
    $IPconfigsInNIC= $NIC.IPconfigurations 
    foreach ($IPconfig in $IPconfigsInNIC) {
 
        $IPaddress= $IPconfig.privateipaddress 
        write-host "    "$IPaddress 
        IF ($IPconfig.PublicIpAddress.ID) {
 
            $IDbits= ($IPconfig.PublicIpAddress.ID).split("/")
            $PipName= $IDbits[($IDbits.count-1)]
            $PipObject= get-azPublicIpAddress -name $PipName -resourceGroup $rgName
            write-host "    "RDP address:  $PipObject.IpAddress
                 }
         }
 }
 
 
 
  write-host `nPublic IP addresses on Load Balancer:
 
  (get-AzpublicIpAddress -resourcegroupname $rgName | where { $_.name -notlike "RdpPublicIP*" }).IpAddress

Následující obrázek ukazuje ukázkový výstup se seznamem privátních IPv4 a IPv6 adres těchto dvou virtuálních počítačů a IP adres IPv4 a IPv6 služby Load Balancer.

IP summary of dual stack (IPv4/IPv6) application deployment in Azure

Zobrazení virtuální sítě se dvěma zásobníky IPv6 na webu Azure Portal

Virtuální síť duálního zásobníku IPv6 můžete zobrazit na webu Azure Portal následujícím způsobem:

  1. Na panelu hledání na portálu zadejte dsVnet.
  2. Když se ve výsledcích hledání zobrazí dsVnet , vyberte ji. Tím se spustí stránka Přehled virtuální sítě se dvěma zásobníky s názvem dsVnet. Virtuální síť se dvěma zásobníky zobrazuje dvě síťové karty s konfigurací IPv4 i IPv6 umístěnou v podsíti duálního zásobníku s názvem dsSubnet.

IPv6 dual stack virtual network in Azure

Vyčištění prostředků

Pokud už je nepotřebujete, můžete k odebrání skupiny prostředků, virtuálního počítače a všech souvisejících prostředků použít příkaz Remove-AzResourceGroup .

Remove-AzResourceGroup -Name dsRG1

Další kroky

V tomto článku jste vytvořili Load Balancer úrovně Standard s konfigurací duální front-endové IP adresy (IPv4 a IPv6). Také jste vytvořili dva virtuální počítače, které zahrnovaly síťové karty s konfigurací dvou IP adres (IPV4 + IPv6), které byly přidány do back-endového fondu nástroje pro vyrovnávání zatížení. Další informace o podpoře protokolu IPv6 ve virtuálních sítích Azure najdete v tématu Co je IPv6 pro službu Azure Virtual Network?