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. Ytterligare resurser är Azure Bastion, NAT Gateway, ett virtuellt nätverk och de nödvändiga undernäten.

Diagram of resources deployed for a standard public load balancer.

Förutsättningar

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 = 'eastus'
}
New-AzResourceGroup @rg

Skapa en offentlig IP-adress

Använd New-AzPublicIpAddress för att skapa en offentlig IP-adress.

$publicip = @{
    Name = 'myPublicIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
    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 = 'myPublicIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'eastus'
    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:

## Place public IP created in previous steps into variable. ##
$pip = @{
    Name = 'myPublicIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
}
$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 = 'CreatePubLBQS-rg'
    Name = 'myLoadBalancer'
    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, skyddsvärd och NAT-gateway

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 = 'CreatePubLBQS-rg'
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip

## Create NAT gateway resource ##
$nat = @{
    ResourceGroupName = 'CreatePubLBQS-rg'
    Name = 'myNATgateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'eastus'
    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 = 'CreatePubLBQS-rg'
    Location = 'eastus'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

## Create public IP address for bastion host. ##
$ip = @{
    Name = 'myBastionIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip

## Create bastion host ##
$bastion = @{
    ResourceGroupName = 'CreatePubLBQS-rg'
    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 = 'CreatePubLBQS-rg'
    Location = 'eastus'
    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.

# Set the administrator and password for the VMs. ##
$cred = Get-Credential

## Place the virtual network into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'CreatePubLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net

## Place the load balancer into a variable. ##
$lb = @{
    Name = 'myLoadBalancer'
    ResourceGroupName = 'CreatePubLBQS-rg'
}
$bepool = Get-AzLoadBalancer @lb  | Get-AzLoadBalancerBackendAddressPoolConfig

## Place the network security group into a variable. ##
$ns = @{
    Name = 'myNSG'
    ResourceGroupName = 'CreatePubLBQS-rg'
}
$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 = 'CreatePubLBQS-rg'
        Location = 'eastus'
        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 = 'CreatePubLBQS-rg'
        Location = 'eastus'
        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 NAT-gatewayresurs för virtuellt Azure-nätverk tilldelas 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 = 'CreatePubLBQS-rg'
    VMName = "myVM$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

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 = 'CreatePubLBQS-rg'
    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.

Screenshot of the load balancer test web page.

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 'CreatePubLBQS-rg'

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: