Vytvoření veřejného nástroje pro vyrovnávání zatížení s protokolem IPv6 pomocí Azure CLI

Poznámka:

Tento článek popisuje úvodní funkci IPv6, která umožňuje load Balancerům úrovně Basic poskytovat připojení IPv4 i IPv6. Komplexní připojení IPv6 je teď dostupné s protokolem IPv6 pro virtuální sítě Azure, které integrují připojení IPv6 s vašimi virtuálními sítěmi a zahrnují klíčové funkce, jako jsou pravidla skupiny zabezpečení sítě IPv6, směrování definované uživatelem IPv6, vyrovnávání zatížení IPv6 Basic a Standard a další. IPv6 pro virtuální sítě Azure je doporučeným standardem pro aplikace IPv6 v Azure. Viz IPv6 pro nasazení Azure VNET PowerShellu

Azure Load Balancer je nástroj pro vyrovnávání zatížení úrovně 4 (TCP, UDP). Nástroje pro vyrovnávání zatížení poskytují vysokou dostupnost díky distribuci příchozího provozu mezi instance služby, které jsou v pořádku, v cloudových službách nebo virtuálních počítačích v sadě nástroje pro vyrovnávání zatížení. Nástroje pro vyrovnávání zatížení mohou tyto služby prezentovat také na více portech nebo na několika IP adresách nebo na obou.

Ukázkový scénář nasazení

Následující diagram znázorňuje řešení vyrovnávání zatížení nasazené pomocí ukázkové šablony popsané v tomto článku.

Load balancer scenario

V tomto scénáři vytvoříte následující prostředky Azure:

  • Dva virtuální počítače (virtuální počítače)
  • Virtuální síťové rozhraní pro každý virtuální počítač s přiřazenými adresami IPv4 i IPv6
  • Veřejný nástroj pro vyrovnávání zatížení s protokolem IPv4 a veřejnou IP adresou IPv6
  • Skupina dostupnosti, která obsahuje dva virtuální počítače
  • Dvě pravidla vyrovnávání zatížení pro mapování veřejných IP adres na privátní koncové body

Nasazení řešení pomocí Azure CLI

Následující kroky ukazují, jak vytvořit veřejný nástroj pro vyrovnávání zatížení pomocí Azure CLI. Pomocí rozhraní příkazového řádku vytvoříte a nakonfigurujete jednotlivé objekty a pak je spojíte dohromady a vytvoříte prostředek.

Pokud chcete nasadit nástroj pro vyrovnávání zatížení, vytvořte a nakonfigurujte následující objekty:

  • Konfigurace front-endové IP adresy: Obsahuje veřejné IP adresy pro příchozí síťový provoz.
  • Back-endový fond adres: Obsahuje síťová rozhraní (NIC) pro virtuální počítače pro příjem síťového provozu z nástroje pro vyrovnávání zatížení.
  • Pravidla vyrovnávání zatížení: Obsahuje pravidla, která mapuje veřejný port v nástroji pro vyrovnávání zatížení na port v back-endovém fondu adres.
  • Příchozí pravidla překladu adres (NAT): Obsahuje pravidla překladu síťových adres (NAT), která mapuje veřejný port v nástroji pro vyrovnávání zatížení na port pro konkrétní virtuální počítač v back-endovém fondu adres.
  • Sondy: Obsahuje sondy stavu, které se používají ke kontrole dostupnosti instancí virtuálních počítačů v back-endovém fondu adres.

Nastavení Azure CLI

V tomto příkladu spustíte nástroje Azure CLI v příkazovém okně PowerShellu. Ke zlepšení čitelnosti a opětovného použití použijte možnosti skriptování PowerShellu, ne rutiny Azure PowerShellu.

  1. Nainstalujte a nakonfigurujte Azure CLI podle kroků v propojeném článku a přihlaste se ke svému účtu Azure.

  2. Nastavení proměnných PowerShellu pro použití s příkazy 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"
    

Vytvoření skupiny prostředků, nástroje pro vyrovnávání zatížení, virtuální sítě a podsítí

  1. Vytvoření skupiny prostředků:

    az group create --name $rgName --location $location
    
  2. Vytvoření nástroje pro vyrovnávání zatížení:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. Vytvořte virtuální síť:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. V této virtuální síti vytvořte dvě podsítě:

    $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
    

Vytvoření veřejných IP adres pro front-endový fond

  1. Nastavte proměnné PowerShellu:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. Vytvořte veřejnou IP adresu pro front-endový fond IP adres:

    $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
    

    Důležité

    Nástroj pro vyrovnávání zatížení používá název domény veřejné IP adresy jako plně kvalifikovaný název domény (FQDN). Tato změna z klasického nasazení, která používá název cloudové služby jako plně kvalifikovaný název domény nástroje pro vyrovnávání zatížení.

    V tomto příkladu je plně kvalifikovaný název domény contoso09152016.southcentralus.cloudapp.azure.com.

Vytvoření front-endových a back-endových fondů

V této části vytvoříte následující fondy IP adres:

  • Front-endový fond IP adres, který přijímá příchozí síťový provoz v nástroji pro vyrovnávání zatížení.
  • Back-endový fond IP adres, ve kterém front-endový fond odesílá síťový provoz s vyrovnáváním zatížení.
  1. Nastavte proměnné PowerShellu:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. Vytvořte front-endový fond IP adres a přidružte ho k veřejné IP adrese, kterou jste vytvořili v předchozím kroku, a nástroji pro vyrovnávání zatížení.

    $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
    

Vytvoření pravidel sondy, překladu adres (NAT) a nástroje pro vyrovnávání zatížení

Tento příklad vytvoří následující položky:

  • Pravidlo testu, které kontroluje připojení k portu TCP 80.
  • Pravidlo překladu adres (NAT), které přeloží veškerý příchozí provoz na portu 3389 na port 3389 pro protokol RDP.*
  • Pravidlo překladu adres (NAT) pro překlad veškerého příchozího provozu na portu 3391 na port 3389 pro protokol RDP (Remote Desktop Protocol).*
  • Pravidlo nástroje pro vyrovnávání zatížení, které vyrovnává veškerý příchozí provoz na portu 80 na port 80 na adresách v back-endovém fondu.

* Pravidla překladu adres (NAT) jsou přidružená ke konkrétní instanci virtuálního počítače za nástrojem pro vyrovnávání zatížení. Síťový provoz, který dorazí na port 3389, se odešle na konkrétní virtuální počítač a port přidružený k pravidlu NAT. Pro pravidlo překladu adres (NAT) je nutné zadat protokol (UDP nebo TCP). Oba protokoly nemůžete přiřadit ke stejnému portu.

  1. Nastavte proměnné PowerShellu:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. Vytvořte sondu.

    Následující příklad vytvoří sondu TCP, která každých 15 sekund kontroluje připojení k back-endovému portu TCP 80. Po dvou po sobě jdoucích selhání označí back-endový prostředek jako nedostupný.

    $probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
    
  3. Vytvořte příchozí pravidla překladu adres (NAT), která umožňují připojení RDP k back-endovým prostředkům:

    $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. Vytvořte pravidla nástroje pro vyrovnávání zatížení, která odesílají provoz do různých back-endových portů v závislosti na front-endu, který požadavek přijal.

    $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. Zkontrolujte nastavení:

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

    Očekávaný výstup:

    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
    

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

Vytvořte síťové karty a přidružte je k pravidlům překladu adres (NAT), pravidlům nástroje pro vyrovnávání zatížení a sondám.

  1. Nastavte proměnné PowerShellu:

    $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. Vytvořte síťovou kartu pro každý back-end a přidejte konfiguraci protokolu 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
    

Vytvoření prostředků back-endového virtuálního počítače a připojení jednotlivých síťových adaptérů

Pokud chcete vytvořit virtuální počítače, musíte mít účet úložiště. Pro vyrovnávání zatížení musí být virtuální počítače členy skupiny dostupnosti. Další informace o vytváření virtuálních počítačů najdete v tématu Vytvoření virtuálního počítače Azure pomocí PowerShellu.

  1. Nastavte proměnné PowerShellu:

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

    Upozorňující

    Tento příklad používá uživatelské jméno a heslo pro virtuální počítače v cleartextu. Při použití těchto přihlašovacích údajů v prostém textu je potřeba věnovat odpovídající pozornost. Bezpečnější způsob zpracování přihlašovacích údajů v PowerShellu najdete v rutině Get-Credential .

  2. Vytvořte sadu dostupnosti:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. Vytvořte virtuální počítače s přidruženými síťovými kartami:

    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"