PowerShell kullanarak Azure sanal ağında IPv6 çift yığın uygulaması dağıtma

Bu makalede, Azure'da çift yığınlı sanal ağ ve alt ağ, çift (IPv4 + IPv6) ön uç yapılandırmalarına sahip bir Standart Load Balancer, çift IP yapılandırmasına sahip VM'ler, ağ güvenlik grubu ve genel IP'ler içeren Standart Load Balancer kullanarak çift yığın (IPv4 + IPv6) uygulamasının nasıl dağıtılacağı gösterilmektedir.

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Button to launch Azure Cloud Shell.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

PowerShell'i yerel olarak yükleyip kullanmayı seçerseniz, bu makale için Azure PowerShell modülü 6.9.0 veya sonraki bir sürümü gerekir. Yüklü sürümü bulmak için Get-Module -ListAvailable Az komutunu çalıştırın. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız Azure ile bağlantı oluşturmak için de komutunu çalıştırmanız Connect-AzAccount gerekir.

Kaynak grubu oluşturma

Çift yığınlı sanal ağınızı oluşturabilmeniz için önce New-AzResourceGroup ile bir kaynak grubu oluşturmanız gerekir. Aşağıdaki örnek, doğu ABD konumunda myRGDualStack adlı bir kaynak grubu oluşturur:

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

IPv4 ve IPv6 genel IP adresleri oluşturma

Sanal makinelerinize İnternet'ten erişmek için yük dengeleyici için IPv4 ve IPv6 genel IP adresleri gerekir. New-AzPublicIpAddress ile genel IP adresleri oluşturun. Aşağıdaki örnek, dsRG1 kaynak grubunda dsPublicIP_v4 ve dsPublicIP_v6 adlı IPv4 ve IPv6 genel IP adresi oluşturur:

$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

RDP bağlantısı kullanarak sanal makinelerinize erişmek için New-AzPublicIpAddress ile sanal makineler için bir IPV4 genel IP adresleri oluşturun.

  $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

Standart Load Balancer oluşturma

Bu bölümde yük dengeleyici için çift ön uç IP'sini (IPv4 ve IPv6) ve arka uç adres havuzunu yapılandıracak ve ardından bir Standart Load Balancer oluşturacaksınız.

Ön uç IP oluşturma

New-AzLoadBalancerFrontendIpConfig ile bir ön uç IP'sini oluşturun. Aşağıdaki örnek, dsLbFrontEnd_v4 ve dsLbFrontEnd_v6 adlı IPv4 ve IPv6 ön uç IP yapılandırmaları oluşturur:

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

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

Arka uç adres havuzunu yapılandırma

New-AzLoadBalancerBackendAddressPoolConfig ile bir arka uç adres havuzu oluşturun. Kalan adımlarda VM’ler bu arka uç havuzuna eklenir. Aşağıdaki örnek, hem IPV4 hem de IPv6 NIC yapılandırmalarına sahip VM'leri dahil etmek için dsLbBackEndPool_v4 ve dsLbBackEndPool_v6 adlı arka uç adres havuzları oluşturur:

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

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

Durum araştırması oluşturma

ADD-AzLoadBalancerProbeConfig komutunu kullanarak VM'lerin sistem durumunu izlemek üzere bir sistem durumu araştırması oluşturun.

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

Yük dengeleyici kuralı oluşturma

Trafiğin VM’lere dağıtımını tanımlamak için bir yük dengeleyici kuralı kullanılır. Gerekli kaynak ve hedef bağlantı noktalarının yanı sıra gelen trafik için ön uç IP yapılandırması ve trafiği almak için arka uç IP havuzu tanımlamanız gerekir. Yalnızca iyi durumdaki VM'lerin trafik aldığından emin olmak için isteğe bağlı olarak bir sistem durumu yoklaması tanımlayabilirsiniz. Temel yük dengeleyici, VM'lerdeki hem IPv4 hem de IPv6 uç noktalarının durumunu değerlendirmek için bir IPv4 araştırması kullanır. Standart yük dengeleyici açıkça IPv6 durum yoklamaları için destek içerir.

Add-AzLoadBalancerRuleConfig ile bir yük dengeleyici kuralı oluşturun. Aşağıdaki örnek, dsLBrule_v4 ve dsLBrule_v6 adlı yük dengeleyici kuralları oluşturur ve 80 numaralı TCP bağlantı noktasındaki trafiği IPv4 ve IPv6 ön uç IP yapılandırmalarına dengeler:

$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

Yük dengeleyici oluşturma

New-AzLoadBalancer ile bir Standart Load Balancer oluşturun. Aşağıdaki örnek, önceki adımlarda oluşturduğunuz IPv4 ve IPv6 ön uç IP yapılandırmalarını, arka uç havuzlarını ve yük dengeleme kurallarını kullanarak myLoadBalancer adlı bir genel Standart Load Balancer oluşturur:

$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

Ağ kaynakları oluşturma

Bazı VM'leri dağıtmadan ve dengeleyicinizi test etmeden önce destek ağ kaynakları (kullanılabilirlik kümesi, ağ güvenlik grubu, sanal ağ ve sanal NIC'ler) oluşturmanız gerekir.

Kullanılabilirlik kümesi oluşturma

Uygulamanızın yüksek oranda kullanılabilir olmasını sağlamak için VM’lerinizi bir kullanılabilirlik kümesine yerleştirin.

New-AzAvailabilitySet ile bir kullanılabilirlik kümesi oluşturun. Aşağıdaki örnek myAvailabilitySet adında bir kullanılabilirlik kümesi oluşturur:

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

Ağ güvenlik grubu oluşturma

Sanal ağınızdaki gelen ve giden iletişimi yöneten kurallar için bir ağ güvenlik grubu oluşturun.

3389 numaralı bağlantı noktası için ağ güvenlik grubu kuralı oluşturma

New-AzNetworkSecurityRuleConfig ile 3389 numaralı bağlantı noktası üzerinden RDP bağlantılarına izin vermek için bir ağ güvenlik grubu kuralı oluşturun.

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

80 numaralı bağlantı noktası için ağ güvenlik grubu kuralı oluşturma

New-AzNetworkSecurityRuleConfig ile 80 numaralı bağlantı noktası üzerinden İnternet bağlantılarına izin vermek için bir ağ güvenlik grubu kuralı oluşturun.

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

Ağ güvenlik grubu oluşturma

New-AzNetworkSecurityGroup ile bir ağ güvenlik grubu oluşturun.

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

Sanal ağ oluşturma

New-AzVirtualNetwork ile bir sanal ağ oluşturun. Aşağıdaki örnek, mySubnet ile dsVnet adlı bir sanal ağ oluşturur:

# 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

NIC’leri oluşturma

New-AzNetworkInterface ile sanal NIC'ler oluşturun. Aşağıdaki örnek, hem IPv4 hem de IPv6 yapılandırmalarına sahip iki sanal NIC oluşturur. (Sonraki adımlarda uygulamanız için oluşturduğunuz her bir VM için bir sanal NIC).

  $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 

Sanal makineleri oluşturma

VM’ler için Get-Credential ile bir yönetici kullanıcı adı ve parola ayarlayın:

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

Artık New-AzVM ile VM'leri oluşturabilirsiniz. Aşağıdaki örnek, henüz mevcut değilse iki VM ve gerekli sanal ağ bileşenlerini oluşturur.

$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

IPv4 ve IPv6 uç noktalarının IP adreslerini belirleme

ile get-AzNetworkInterfacebu dağıtımda kullanılan IP'leri özetlemek için kaynak grubundaki tüm Ağ Arabirimi Nesnelerini alın. Ayrıca, ile get-AzpublicIpAddressIPv4 ve IPv6 uç noktalarının Load Balancer'ın ön uç adreslerini alın.

$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

Aşağıdaki şekilde, iki VM'nin özel IPv4 ve IPv6 adreslerini ve Load Balancer'ın ön uç IPv4 ve IPv6 IP adreslerini listeleyen bir örnek çıktı gösterilmektedir.

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

Azure portalında IPv6 çift yığınlı sanal ağı görüntüleme

IPv6 çift yığın sanal ağını Azure portalında aşağıdaki gibi görüntüleyebilirsiniz:

  1. Portalın arama çubuğuna dsVnet yazın.
  2. Arama sonuçlarında dsVnet göründüğünde seçin. Bu, dsVnet adlı çift yığınlı sanal ağın Genel Bakış sayfasını başlatır. çift yığın sanal ağı, dsSubnet adlı çift yığın alt ağında bulunan hem IPv4 hem de IPv6 yapılandırmalarına sahip iki NIC'yi gösterir.

IPv6 dual stack virtual network in Azure

Kaynakları temizleme

Artık gerekli olmadığında Remove-AzResourceGroup komutunu kullanarak kaynak grubunu, VM'yi ve tüm ilgili kaynakları kaldırabilirsiniz.

Remove-AzResourceGroup -Name dsRG1

Sonraki adımlar

Bu makalede, çift ön uç IP yapılandırmasına (IPv4 ve IPv6) sahip bir Standart Load Balancer oluşturdunuz. Ayrıca yük dengeleyicinin arka uç havuzuna eklenen çift IP yapılandırmalarına (IPV4 + IPv6) sahip NIC'leri içeren iki sanal makine oluşturdunuz. Azure sanal ağlarındaki IPv6 desteği hakkında daha fazla bilgi edinmek için bkz. Azure Sanal Ağ için IPv6 nedir?