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.
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.
Nainstalujte a nakonfigurujte Azure CLI podle kroků v propojeném článku a přihlaste se ke svému účtu Azure.
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í
Vytvoření skupiny prostředků:
az group create --name $rgName --location $location
Vytvoření nástroje pro vyrovnávání zatížení:
$lb = az network lb create --resource-group $rgname --location $location --name $lbName
Vytvořte virtuální síť:
$vnet = az network vnet create --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
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
Nastavte proměnné PowerShellu:
$publicIpv4Name = "myIPv4Vip" $publicIpv6Name = "myIPv6Vip"
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í.
Nastavte proměnné PowerShellu:
$frontendV4Name = "FrontendVipIPv4" $frontendV6Name = "FrontendVipIPv6" $backendAddressPoolV4Name = "BackendPoolIPv4" $backendAddressPoolV6Name = "BackendPoolIPv6"
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.
Nastavte proměnné PowerShellu:
$probeV4V6Name = "ProbeForIPv4AndIPv6" $natRule1V4Name = "NatRule-For-Rdp-VM1" $natRule2V4Name = "NatRule-For-Rdp-VM2" $lbRule1V4Name = "LBRuleForIPv4-Port80" $lbRule1V6Name = "LBRuleForIPv6-Port80"
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
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
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
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.
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"
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.
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
.Vytvořte sadu dostupnosti:
$availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
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"