Membuat penyeimbang muatan publik dengan IPv6 menggunakan Azure CLI

Catatan

Artikel ini menjelaskan pengenalan fitur IPv6 untuk mengizinkan Penyeimbang Muatan Dasar menyediakan konektivitas IPv4 dan IPv6. Konektivitas IPv6 lengkap kini tersedia dengan IPv6 untuk Azure VNET yang mengintegrasikan konektivitas IPv6 dengan Virtual Network Anda dan mencakup fitur utama seperti aturan Kelompok Keamanan Jaringan IPv6, perutean yang ditetapkan Pengguna IPv6, penyeimbangan beban Dasar dan Standar IPv6, dan banyak lagi. IPv6 untuk Azure VNET adalah standar yang direkomendasikan untuk aplikasi IPv6 di Azure. Lihat Penyebaran PowerShell IPv6 untuk Azure VNET

Load balancer Azure adalah load balancer Lapisan-4 (TCP, UDP). Penyeimbang muatan memberikan ketersediaan tinggi dengan mendistribusikan lalu lintas masuk di antara instans layanan yang berfungsi dengan baik di layanan cloud atau komputer virtual dalam set penyeimbang muatan. Penyeimbang muatan juga dapat menyajikan layanan ini di beberapa port atau beberapa alamat IP ataupun keduanya.

Skenario penyebaran contoh

Diagram berikut mengilustrasikan solusi penyeimbangan muatan yang disebarkan dengan menggunakan templat contoh yang dijelaskan dalam artikel ini.

Load balancer scenario

Dalam skenario ini, Anda membuat sumber daya Azure berikut:

  • Dua komputer virtual (VM)
  • Antarmuka jaringan virtual untuk tiap VM dengan alamat IPv4 dan IPv6 yang ditetapkan
  • Penyeimbang muatan publik dengan alamat IP publik IPv4 dan IPv6
  • Set ketersediaan yang berisi dua VM
  • Dua aturan penyeimbangan muatan untuk memetakan VIP publik ke titik akhir privat

Menyebarkan solusi dengan menggunakan Azure CLI

Langkah-langkah berikut menunjukkan cara membuat penyeimbang muatan publik dengan menggunakan Azure CLI. Dengan menggunakan CLI, Anda membuat dan mengonfigurasi tiap objek satu per satu, lalu menyatukannya untuk membuat sumber daya.

Untuk menyebarkan penyeimbang muatan, buat dan konfigurasi objek berikut:

  • Konfigurasi IP frontend: Berisi alamat IP publik untuk lalu lintas jaringan masuk.
  • Kumpulan alamat backend: Berisi antarmuka jaringan (NIC) agar komputer virtual menerima lalu lintas jaringan dari load balancer.
  • Aturan penyeimbangan beban: Berisi aturan yang memetakan port publik pada load balancer ke port di kumpulan alamat backend.
  • Aturan NAT masuk: Berisi aturan network address translation (NAT) yang memetakan port publik pada load balancer ke port untuk komputer virtual tertentu di kumpulan alamat backend.
  • Pemeriksaan: Berisi pemeriksaan kesehatan yang digunakan untuk memeriksa ketersediaan instans komputer virtual di kumpulan alamat backend.

Menyiapkan Azure CLI

Dalam contoh ini, Anda menjalankan alat Azure CLI di jendela perintah PowerShell. Untuk meningkatkan keterbacaan dan penggunaan kembali, Anda menggunakan kemampuan pembuatan skrip PowerShell, bukan cmdlet Azure PowerShell.

  1. Instal dan Konfigurasi Azure CLI dengan mengikuti langkah-langkah dalam artikel yang ditautkan dan masuk ke akun Azure Anda.

  2. Menyiapkan variabel PowerShell untuk digunakan dengan perintah Azure CLI:

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

Membuat grup sumber daya, penyeimbang muatan, jaringan virtual, dan subnet

  1. Membuat grup sumber daya:

    az group create --name $rgName --location $location
    
  2. Membuat penyeimbang muatan:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. Buat jaringan virtual:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. Dalam jaringan virtual ini, buat dua subnet:

    $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
    

Membuat alamat IP publik untuk kumpulan frontend

  1. Menyiapkan variabel PowerShell:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. Buat alamat IP publik untuk kumpulan IP frontend:

    $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
    

    Penting

    Penyeimbang muatan menggunakan label domain IP publik sebagai nama domain yang sepenuhnya memenuhi syarat (FQDN). Ini adalah perubahan dari penyebaran klasik, yang menggunakan nama layanan cloud sebagai FQDN penyeimbang muatan.

    Dalam contoh ini, FQDN adalah contoso09152016.southcentralus.cloudapp.azure.com.

Membuat kumpulan ujung depan dan backend

Di bagian ini, Anda membuat kumpulan IP berikut:

  • Kumpulan IP frontend yang menerima lalu lintas jaringan masuk pada load balancer.
  • Kumpulan IP backend tempat kumpulan frontend mengirim lalu lintas jaringan yang seimbang beban.
  1. Menyiapkan variabel PowerShell:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. Buat kumpulan IP frontend, dan kaitkan dengan IP publik yang Anda buat di langkah sebelumnya dan load balancer.

    $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
    

Membuat probe, aturan NAT, dan aturan penyeimbang muatan

Contoh ini membuat item berikut:

  • Aturan probe untuk memeriksa konektivitas ke port TCP 80.
  • Aturan NAT untuk menerjemahkan semua lalu lintas masuk pada port 3389 ke port 3389 untuk RDP.*
  • Aturan NAT untuk menerjemahkan semua lalu lintas masuk pada port 3391 ke port 3389 untuk protokol desktop jarak jauh (RDP).*
  • Aturan load balancer untuk menyeimbangkan semua lalu lintas masuk pada port 80 ke port 80 pada alamat di kumpulan backend.

* Aturan NAT dikaitkan dengan instans komputer virtual tertentu di belakang penyeimbang muatan. Lalu lintas jaringan yang tiba di port 3389 dikirim ke komputer virtual dan port tertentu yang terkait dengan aturan NAT. Anda harus menentukan protokol (UDP atau TCP) untuk aturan NAT. Anda tidak dapat menetapkan kedua protokol ke port yang sama.

  1. Menyiapkan variabel PowerShell:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. Buat probe.

    Contoh berikut membuat pemeriksaan TCP yang memeriksa konektivitas ke port TCP backend 80 setiap 15 detik. Setelah dua kegagalan berturut-turut, itu menandai sumber daya backend sebagai tidak tersedia.

    $probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
    
  3. Buat aturan NAT masuk yang memungkinkan koneksi RDP ke sumber daya backend:

    $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. Buat aturan load balancer yang mengirim lalu lintas ke port backend yang berbeda, tergantung pada ujung depan yang menerima permintaan.

    $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. Memeriksa pengaturan Anda:

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

    Output yang diharapkan:

    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
    

Membuat NIC

Buat NIC dan kaitkan dengan aturan NAT, aturan penyeimbang muatan, dan probe.

  1. Menyiapkan variabel 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. Membuat NIC untuk tiap ujung belakang, dan menambahkan konfigurasi 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
    

Buat sumber daya VM backend, dan lampirkan setiap NIC

Untuk membuat VM, Anda harus memiliki akun penyimpanan. Untuk penyeimbangan muatan, VM harus menjadi anggota dari set ketersediaan. Untuk informasi selengkapnya tentang membuat VM, lihat Membuat Azure VM dengan menggunakan PowerShell.

  1. Menyiapkan variabel 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"
    

    Peringatan

    Contoh ini menggunakan nama pengguna dan kata sandi untuk VM dalam teksbersih. Berhati-hatilah saat Anda menggunakan kredensial ini dalam teksbersih. Untuk metode penanganan kredensial yang lebih aman di PowerShell, lihat cmdlet Get-Credential.

  2. Membuat set ketersediaan:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. Membuat komputer virtual dengan NIC terkait:

    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"