Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kom igång med Azure Load Balancer med hjälp av Azure PowerShell för att skapa en offentlig lastbalanserare och två virtuella datorer. Du distribuerar även 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 du distribuerar och hanterar Azure-resurser.
Skapa en resursgrupp med hjälp av New-AzResourceGroup:
$rg = @{
Name = 'load-balancer-ps-rg'
Location = 'eastus'
}
New-AzResourceGroup @rg
Skapa en offentlig IP-adress
Använd New-AzPublicIpAddress för att skapa en offentlig IP-adress.
$publicip = @{
Name = 'lb-frontend-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
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 = 'lb-frontend-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
New-AzPublicIpAddress @publicip
Skapa en lastbalanserare
I det här avsnittet beskrivs hur du skapar och konfigurerar följande komponenter i lastbalanseraren:
Skapa en front-end-IP med New-AzLoadBalancerFrontendIpConfig för front-end-IP-poolen. Den här IP-adressen tar emot inkommande trafik på lastbalanseraren.
Skapa en backendadresspool med New-AzLoadBalancerBackendAddressPoolConfig för trafik som skickas från lastbalanserarens frontend. Distribuera dina virtuella serverdelsdatorer i den här poolen.
Skapa en hälsokontroll med Add-AzLoadBalancerProbeConfig som avgör hälsotillståndet för bakgrunds-VM-instanserna.
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 = 'lb-frontend-ip'
ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip
## Create load balancer frontend configuration and place in variable. ##
$fip = @{
Name = 'lb-frontend'
PublicIpAddress = $publicIp
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip
## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'lb-backend-pool'
## Create the health probe and place in variable. ##
$probe = @{
Name = 'lb-health-probe'
Protocol = 'tcp'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'lb-HTTP-rule'
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 = 'load-balancer'
Location = 'eastus'
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, bastionvärd och NAT-gateway
Skapa ett virtuellt nätverk med hjälp av 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!
Timpriserna gäller från det ögonblick då Bastion driftsätts, oavsett mängden utgående data. 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 = 'nat-gw-public-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'lb-nat-gateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'eastus'
PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat
## Create backend subnet config ##
$subnet = @{
Name = 'backend-subnet'
AddressPrefix = '10.1.0.0/24'
NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet. ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.1.1.0/27'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
Location = 'eastus'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$ip = @{
Name = 'lb-vnet-bastion-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
Name = 'lb-vnet-bastion'
PublicIpAddress = $publicip
VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob
## Create rule for network security group and place in variable. ##
$nsgrule = @{
Name = 'lb-nsg-rule'
Description = 'Allow HTTP'
Protocol = '*'
SourcePortRange = '*'
DestinationPortRange = '80'
SourceAddressPrefix = 'Internet'
DestinationAddressPrefix = '*'
Access = 'Allow'
Priority = '200'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule
## Create network security group ##
$nsg = @{
Name = 'lb-nsg'
ResourceGroupName = $rg.name
Location = 'eastus'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Skapa virtuella datorer
I det här avsnittet skapar du de två virtuella datorerna i lastbalanserarens serverdelspool.
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 följande cmdletar:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'load-balancer'
ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$ns = @{
Name = 'lb-nsg'
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 = "lb-nic-VM$i"
ResourceGroupName = $rg.name
Location = 'eastus'
Subnet = $vnet.Subnets[0]
NetworkSecurityGroup = $nsg
LoadBalancerBackendAddressPool = $bepool
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = "lb-VM$i"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "lb-VM$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 = 'eastus'
VM = $vmConfig
Zone = "$i"
}
New-AzVM @vm -AsJob
}
Skicka driftsättningarna av de virtuella datorerna och bastionvärden 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. Standardmekanismen för utgående åtkomst-IP tillhandahåller 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 VM-skalningsuppsättningar i flexibelt orkestreringsläge har inte utgående standardåtkomst.
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 är slutförda 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 = "lb-VM$i"
Location = 'eastus'
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
Säkerställ att jobbens status är Slutförd 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 = 'lb-frontend-ip'
}
Get-AzPublicIPAddress @ip | select IpAddress
Kopiera den offentliga IP-adressen och klistra in den i webbläsarens adressfält. Standardsidan för IIS-webbservern visas i webbläsaren.
Rensa resurser
När du inte längre behöver resurserna använder du 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
Två virtuella datorer kopplades till lastbalanseraren
Testade lastbalanseraren
Om du vill veta mer om Azure Load Balancer fortsätter du till: