Snabbstart: Skapa en offentlig lastbalanserare för att belastningsutjämning av virtuella datorer med Hjälp av Azure PowerShell
Kom igång med Azure Load Balancer med hjälp av Azure PowerShell för att skapa en offentlig lastbalanserare och två virtuella datorer. Dessutom distribuerar du andra resurser, inklusive Azure Bastion, NAT Gateway, ett virtuellt nätverk och de nödvändiga undernäten.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt
Azure PowerShell installerat lokalt eller Azure Cloud Shell
Om du väljer att installera och använda PowerShell lokalt kräver den här artikeln version 5.4.1 eller senare av Azure PowerShell-modulen. Kör Get-Module -ListAvailable Az
för att hitta den installerade versionen. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul). Om du kör PowerShell lokalt måste du också köra Connect-AzAccount
för att skapa en anslutning till Azure.
Skapa en resursgrupp
En Azure-resursgrupp är en logisk container där Azure-resurser distribueras och hanteras.
Skapa en resursgrupp med New-AzResourceGroup:
$rg = @{
Name = 'CreatePubLBQS-rg'
Location = 'westus2'
}
New-AzResourceGroup @rg
Skapa en offentlig IP-adress
Använd New-AzPublicIpAddress för att skapa en offentlig IP-adress.
$publicip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1,2,3
}
New-AzPublicIpAddress @publicip
Om du vill skapa en zonindelad offentlig IP-adress i zon 1 använder du följande kommando:
$publicip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
New-AzPublicIpAddress @publicip
Skapa en lastbalanserare
I det här avsnittet beskrivs hur du gör för att skapa och konfigurera följande komponenter i lastbalanseraren:
Skapa en klientdels-IP med New-AzLoadBalancerFrontendIpConfig för klientdels-IP-poolen. Den här IP-adressen tar emot inkommande trafik på lastbalanseraren
Skapa en serverdelsadresspool med New-AzLoadBalancerBackendAddressPoolConfig för trafik som skickas från lastbalanserarens klientdel. I den här poolen distribueras dina virtuella serverdelsdatorer
Skapa en hälsoavsökning med Add-AzLoadBalancerProbeConfig som avgör hälsotillståndet för de virtuella serverdelsinstanserna
Skapa en lastbalanseringsregel med Add-AzLoadBalancerRuleConfig som definierar hur trafik distribueras till de virtuella datorerna
Skapa en offentlig lastbalanserare med New-AzLoadBalancer
## Place public IP created in previous steps into variable. ##
$pip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip
## Create load balancer frontend configuration and place in variable. ##
$fip = @{
Name = 'myFrontEnd'
PublicIpAddress = $publicIp
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip
## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'myBackEndPool'
## Create the health probe and place in variable. ##
$probe = @{
Name = 'myHealthProbe'
Protocol = 'tcp'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'myHTTPRule'
Protocol = 'tcp'
FrontendPort = '80'
BackendPort = '80'
IdleTimeoutInMinutes = '15'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset -DisableOutboundSNAT
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = $rg.name
Name = 'myLoadBalancer'
Location = 'westus2'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
Konfigurera ett virtuellt nätverk
Innan du distribuerar virtuella datorer och testar lastbalanseraren skapar du de virtuella nätverksresurser som stöds.
Skapa ett virtuellt nätverk för de virtuella serverdelsdatorerna.
Skapa en nätverkssäkerhetsgrupp för att definiera inkommande anslutningar till ditt virtuella nätverk.
Skapa en Azure Bastion-värd för att hantera de virtuella datorerna i serverdelspoolen på ett säkert sätt.
Använd en NAT-gateway för att ge utgående Internetåtkomst till resurser i serverdelspoolen i lastbalanseraren.
Skapa virtuellt nätverk, nätverkssäkerhetsgrupp, skyddsvärd och NAT-gateway
Skapa ett virtuellt nätverk med New-AzVirtualNetwork
Skapa en regel för nätverkssäkerhetsgrupp med New-AzNetworkSecurityRuleConfig
Skapa en Azure Bastion-värd med New-AzBastion
Skapa en nätverkssäkerhetsgrupp med New-AzNetworkSecurityGroup
Skapa NAT-gatewayresursen med New-AzNatGateway
Använd New-AzVirtualNetworkSubnetConfig för att associera NAT-gatewayen till undernätet för det virtuella nätverket
Viktigt!
Priserna per timme börjar från det ögonblick då Bastion distribueras, oavsett utgående dataanvändning. Mer information finns i Priser och SKU:er. Om du distribuerar Bastion som en del av en självstudie eller ett test rekommenderar vi att du tar bort den här resursen när du har använt den.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'myNATgatewayIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'myNATgateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'westus2'
PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat
## Create backend subnet config ##
$subnet = @{
Name = 'myBackendSubnet'
AddressPrefix = '10.1.0.0/24'
NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet. ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.1.1.0/24'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'myVNet'
ResourceGroupName = $rg.name
Location = 'westus2'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$ip = @{
Name = 'myBastionIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
Name = 'myBastion'
PublicIpAddress = $publicip
VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob
## Create rule for network security group and place in variable. ##
$nsgrule = @{
Name = 'myNSGRuleHTTP'
Description = 'Allow HTTP'
Protocol = '*'
SourcePortRange = '*'
DestinationPortRange = '80'
SourceAddressPrefix = 'Internet'
DestinationAddressPrefix = '*'
Access = 'Allow'
Priority = '2000'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule
## Create network security group ##
$nsg = @{
Name = 'myNSG'
ResourceGroupName = $rg.name
Location = 'westus2'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Skapa virtuella datorer
I det här avsnittet skapar du de två virtuella datorerna för serverdelspoolen för lastbalanseraren.
Skapa två nätverksgränssnitt med New-AzNetworkInterface
Ange ett administratörsanvändarnamn och lösenord för de virtuella datorerna med Get-Credential
Skapa de virtuella datorerna med:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'myLoadBalancer'
ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$ns = @{
Name = 'myNSG'
ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @ns
## For loop with variable to create virtual machines for load balancer backend pool. ##
for ($i=1; $i -le 2; $i++){
## Command to create network interface for VMs ##
$nic = @{
Name = "myNicVM$i"
ResourceGroupName = $rg.name
Location = 'westus2'
Subnet = $vnet.Subnets[0]
NetworkSecurityGroup = $nsg
LoadBalancerBackendAddressPool = $bepool
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = "myVM$i"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "myVM$i"
Credential = $cred
}
$vmimage = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2019-Datacenter'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Windows `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine for VMs ##
$vm = @{
ResourceGroupName = $rg.name
Location = 'westus2'
VM = $vmConfig
Zone = "$i"
}
New-AzVM @vm -AsJob
}
Distributionerna av de virtuella datorerna och skyddsvärden skickas som PowerShell-jobb. Om du vill visa status för jobben använder du Get-Job:
Get-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running O… AzureLongRunni… Completed True localhost New-AzBastion
2 Long Running O… AzureLongRunni… Completed True localhost New-AzVM
3 Long Running O… AzureLongRunni… Completed True localhost New-AzVM
Kontrollera att tillståndet för skapandet av den virtuella datorn är Slutfört innan du går vidare till nästa steg.
Kommentar
Azure tillhandahåller en standard-IP för utgående åtkomst för virtuella datorer som antingen inte har tilldelats någon offentlig IP-adress eller som finns i serverdelspoolen för en intern grundläggande Azure-lastbalanserare. Ip-mekanismen för utgående åtkomst har en utgående IP-adress som inte kan konfigureras.
Standard-IP för utgående åtkomst inaktiveras när någon av följande händelser inträffar:
- En offentlig IP-adress tilldelas till den virtuella datorn.
- Den virtuella datorn placeras i serverdelspoolen för en standardlastbalanserare, med eller utan regler för utgående trafik.
- En Azure NAT Gateway-resurs tilldelas till den virtuella datorns undernät.
Virtuella datorer som du skapar med hjälp av vm-skalningsuppsättningar i flexibelt orkestreringsläge har inte standardåtkomst till utgående trafik.
Mer information om utgående anslutningar i Azure finns i Standardutgående åtkomst i Azure och Använda SNAT (Source Network Address Translation) för utgående anslutningar.
Installera IIS
Använd Set-AzVMExtension för att installera Anpassat skripttillägg.
Tillägget körs PowerShell Add-WindowsFeature Web-Server
för att installera IIS-webbservern och uppdaterar sedan sidan Default.htm för att visa värdnamnet för den virtuella datorn:
Viktigt!
Kontrollera att distributionerna av virtuella datorer har slutförts från föregående steg innan du fortsätter. Använd Get-Job
för att kontrollera statusen för de virtuella datordistributionsjobben.
## For loop with variable to install custom script extension on virtual machines. ##
for ($i=1; $i -le 2; $i++)
{
$ext = @{
Publisher = 'Microsoft.Compute'
ExtensionType = 'CustomScriptExtension'
ExtensionName = 'IIS'
ResourceGroupName = $rg.name
VMName = "myVM$i"
Location = 'westus2'
TypeHandlerVersion = '1.8'
SettingString = '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
}
Set-AzVMExtension @ext -AsJob
}
Tilläggen distribueras som PowerShell-jobb. Om du vill visa status för installationsjobben använder du Get-Job:
Get-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
8 Long Running O… AzureLongRunni… Running True localhost Set-AzVMExtension
9 Long Running O… AzureLongRunni… Running True localhost Set-AzVMExtension
Kontrollera att jobbens tillstånd har slutförts innan du går vidare till nästa steg.
Testa lastbalanseraren
Använd Get-AzPublicIpAddress för att hämta lastbalanserarens offentliga IP-adress:
$ip = @{
ResourceGroupName = $rg.name
Name = 'myPublicIP'
}
Get-AzPublicIPAddress @ip | select IpAddress
Kopiera den offentliga IP-adressen och klistra in den i webbläsarens adressfält. IIS-webbserverns standardsida visas i webbläsaren.
Rensa resurser
När du inte längre behöver det kan du använda kommandot Remove-AzResourceGroup för att ta bort resursgruppen, lastbalanseraren och de återstående resurserna.
Remove-AzResourceGroup -Name $rg.name
Nästa steg
I den här snabbstarten kommer du att göra följande:
Skapade en Azure Load Balancer
Kopplade två virtuella datorer till lastbalanseraren
Testade lastbalanseraren
Om du vill veta mer om Azure Load Balancer fortsätter du till: