Azure CLI kullanarak IPv6 ile genel yük dengeleyici oluşturma

Not

Bu makalede, Temel Yük Dengeleyicilerin hem IPv4 hem de IPv6 bağlantısı sağlamasına olanak sağlayan giriş niteliğinde bir IPv6 özelliği açıklanmaktadır. IPv6 bağlantısını Sanal Ağ'lerinizle tümleştirip IPv6 Ağ Güvenlik Grubu kuralları, IPv6 Kullanıcı tanımlı yönlendirme, IPv6 Temel ve Standart yük dengeleme gibi önemli özellikleri içeren Azure VNET'leri için IPv6 ile kapsamlı IPv6 bağlantısı kullanıma sunuldu. Azure VNET'leri için IPv6, Azure'daki IPv6 uygulamaları için önerilen standarttır. Bkz. Azure VNET PowerShell Dağıtımı için IPv6

Azure Load Balancer bir Katman 4 (TCP, UDP) yük dengeleyicidir. Yük dengeleyiciler, gelen trafiği bulut hizmetlerindeki iyi durumdaki hizmet örnekleri veya bir yük dengeleyici kümesindeki sanal makineler arasında dağıtarak yüksek kullanılabilirlik sağlar. Yük dengeleyiciler bu hizmetleri birden çok bağlantı noktası veya birden çok IP adresi ya da her ikisinde de sunabilir.

Örnek dağıtım senaryosu

Aşağıdaki diyagramda, bu makalede açıklanan örnek şablon kullanılarak dağıtılan yük dengeleme çözümü gösterilmektedir.

Load balancer scenario

Bu senaryoda aşağıdaki Azure kaynaklarını oluşturursunuz:

  • İki sanal makine (VM)
  • Hem IPv4 hem de IPv6 adresleri atanmış her VM için bir sanal ağ arabirimi
  • IPv4 ve IPv6 genel IP adresine sahip genel yük dengeleyici
  • İki VM'yi içeren bir kullanılabilirlik kümesi
  • Genel VIP'leri özel uç noktalara eşlemek için iki yük dengeleme kuralı

Azure CLI kullanarak çözümü dağıtma

Aşağıdaki adımlarda Azure CLI kullanarak genel yük dengeleyici oluşturma adımları gösterilmektedir. CLI kullanarak her nesneyi ayrı ayrı oluşturup yapılandırıp bir kaynak oluşturmak için bir araya getirebilirsiniz.

Yük dengeleyici dağıtmak için aşağıdaki nesneleri oluşturun ve yapılandırın:

  • Ön uç IP yapılandırması: Gelen ağ trafiği için genel IP adreslerini içerir.
  • Arka uç adres havuzu: Yük dengeleyiciden ağ trafiğini almak için sanal makinelerin ağ arabirimlerini (NIC) içerir.
  • Yük dengeleme kuralları: Yük dengeleyicideki genel bağlantı noktasını arka uç adres havuzundaki bir bağlantı noktasına eşleyen kuralları içerir.
  • Gelen NAT kuralları: Yük dengeleyicideki bir genel bağlantı noktasını arka uç adres havuzundaki belirli bir sanal makine için bir bağlantı noktasına eşleyen ağ adresi çevirisi (NAT) kurallarını içerir.
  • Yoklamalar: Arka uç adres havuzundaki sanal makine örneklerinin kullanılabilirliğini denetlemek için kullanılan sistem durumu yoklamalarını içerir.

Azure CLI’yı ayarlama

Bu örnekte, Azure CLI araçlarını bir PowerShell komut penceresinde çalıştıracaksınız. Okunabilirliği ve yeniden kullanımı geliştirmek için Azure PowerShell cmdlet'lerini değil PowerShell'in betik özelliklerini kullanırsınız.

  1. Bağlantılı makaledeki adımları izleyerek Azure CLI'yi yükleyin ve yapılandırın ve Azure hesabınızda oturum açın.

  2. PowerShell değişkenlerini Azure CLI komutları ile kullanılacak şekilde ayarlayın:

    $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"
    

Kaynak grubu, yük dengeleyici, sanal ağ ve alt ağlar oluşturma

  1. Kaynak grubu oluşturma:

    az group create --name $rgName --location $location
    
  2. Yük dengeleyici oluşturma:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. Sanal ağ oluşturma:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. Bu sanal ağda iki alt ağ oluşturun:

    $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
    

Ön uç havuzu için genel IP adresleri oluşturma

  1. PowerShell değişkenlerini ayarlayın:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. Ön uç IP havuzu için bir genel IP adresi oluşturun:

    $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
    

    Önemli

    Yük dengeleyici, genel IP'nin etki alanı etiketini tam etki alanı adı (FQDN) olarak kullanır. Bu, yük dengeleyici FQDN olarak bulut hizmeti adını kullanan klasik dağıtımdan bir değişikliktir.

    Bu örnekte FQDN contoso09152016.southcentralus.cloudapp.azure.com.

Ön uç ve arka uç havuzları oluşturma

Bu bölümde aşağıdaki IP havuzlarını oluşturacaksınız:

  • Yük dengeleyicide gelen ağ trafiğini alan ön uç IP havuzu.
  • Ön uç havuzunun yük dengeli ağ trafiğini gönderdiği arka uç IP havuzu.
  1. PowerShell değişkenlerini ayarlayın:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. Bir ön uç IP havuzu oluşturun ve bunu önceki adımda oluşturduğunuz genel IP ile ve yük dengeleyiciyle ilişkilendirin.

    $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
    

Yoklama, NAT kuralları ve yük dengeleyici kuralları oluşturma

Bu örnek aşağıdaki nesneleri oluşturur:

  • 80 numaralı TCP bağlantı noktasına bağlantıyı denetlemek için bir yoklama kuralı.
  • 3389 numaralı bağlantı noktasındaki tüm gelen trafiği RDP için 3389 numaralı bağlantı noktasına çevirmek için bir NAT kuralı.*
  • Uzak masaüstü protokolü (RDP) için 3391 numaralı bağlantı noktasındaki tüm gelen trafiği 3389 numaralı bağlantı noktasına çevirmek için bir NAT kuralı.*
  • 80 numaralı bağlantı noktasından 80 numaralı bağlantı noktasına gelen tüm trafiği arka uç havuzundaki adreslerde dengelemek için bir yük dengeleyici kuralı.

* NAT kuralları, yük dengeleyicinin arkasındaki belirli bir sanal makine örneğiyle ilişkilendirilir. Bağlantı noktası 3389'a ulaşan ağ trafiği, NAT kuralıyla ilişkili belirli sanal makineye ve bağlantı noktasına gönderilir. NAT kuralı için bir protokol (UDP veya TCP) belirtmeniz gerekir. Her iki protokolü de aynı bağlantı noktasına atayamazsınız.

  1. PowerShell değişkenlerini ayarlayın:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. Araştırmayı oluşturun.

    Aşağıdaki örnek, her 15 saniyede bir 80 numaralı arka uç TCP bağlantı noktasına bağlantıyı denetleen bir TCP yoklaması oluşturur. Ardışık iki hatadan sonra arka uç kaynağını kullanılamaz olarak işaretler.

    $probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
    
  3. Arka uç kaynaklarına RDP bağlantılarına izin veren gelen NAT kuralları oluşturun:

    $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. İsteği alan ön uca bağlı olarak farklı arka uç bağlantı noktalarına trafik gönderen yük dengeleyici kuralları oluşturun.

    $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. Ayarlarınızı denetleyin:

    az network lb show --resource-group $rgName --name $lbName
    

    Beklenen çıktı:

    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
    

NIC’leri oluşturma

NIC'ler oluşturun ve bunları NAT kuralları, yük dengeleyici kuralları ve yoklamalarla ilişkilendirin.

  1. PowerShell değişkenlerini ayarlayın:

    $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. Her arka uç için bir NIC oluşturun ve bir IPv6 yapılandırması ekleyin:

    $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
    

Arka uç VM kaynaklarını oluşturma ve her NIC'yi ekleme

VM'ler oluşturmak için bir depolama hesabınız olmalıdır. Yük dengeleme için VM'lerin bir kullanılabilirlik kümesinin üyesi olması gerekir. VM oluşturma hakkında daha fazla bilgi için bkz . PowerShell kullanarak Azure VM oluşturma.

  1. PowerShell değişkenlerini ayarlayın:

    $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"
    

    Uyarı

    Bu örnek, vm'lerin kullanıcı adını ve parolasını düz metin olarak kullanır. Bu kimlik bilgilerini düz metin olarak kullanırken uygun özeni gösterebilirsiniz. PowerShell'de kimlik bilgilerini işlemek için daha güvenli bir yöntem için cmdlet'ine Get-Credential bakın.

  2. Kullanılabilirlik kümesini oluşturun:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. İlişkili NIC'lerle sanal makineleri oluşturun:

    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"