Rövid útmutató: Belső terheléselosztó létrehozása virtuális gépek terheléselosztásához az Azure PowerShell használatával

Az Azure Load Balancer használatának első lépései az Azure PowerShell használatával egy belső terheléselosztó és két virtuális gép létrehozása. További erőforrások például az Azure Bastion, a NAT Gateway, a virtuális hálózat és a szükséges alhálózatok.

A belső terheléselosztóhoz üzembe helyezett erőforrások diagramja.

Előfeltételek

Ha a PowerShell helyi telepítése és használata mellett dönt, ehhez a cikkhez az Azure PowerShell-modul 5.4.1-es vagy újabb verziójára lesz szükség. A telepített verzió azonosításához futtassa a következőt: Get-Module -ListAvailable Az. Ha frissíteni szeretne, olvassa el az Azure PowerShell-modul telepítését ismertető cikket. Ha helyileg futtatja a PowerShellt, az Azure-ral való kapcsolat létrehozásához is futnia Connect-AzAccount kell.

Erőforráscsoport létrehozása

Az Azure-erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat.

Hozzon létre egy erőforráscsoportot a New-AzResourceGroup használatával.

New-AzResourceGroup -Name 'CreateIntLBQS-rg' -Location 'eastus'

Virtuális hálózat konfigurálása

Belső terheléselosztó létrehozásakor a rendszer egy virtuális hálózatot konfigurál a terheléselosztó hálózataként. A virtuális gépek üzembe helyezése és a terheléselosztó tesztelése előtt hozza létre a támogató virtuális hálózati erőforrásokat.

  • Nyilvános IP-cím létrehozása a NAT-átjáróhoz

  • Virtuális hálózat létrehozása a háttérbeli virtuális gépekhez

  • Hálózati biztonsági csoport létrehozása a virtuális hálózat bejövő kapcsolatainak definiálásához

  • Azure Bastion-gazdagép létrehozása a háttérkészlet virtuális gépeinek biztonságos kezeléséhez

Hozzon létre egy nyilvános IP-címet

A New-AzPublicIpAddress használatával hozzon létre nyilvános IP-címet a NAT-átjáróhoz.

## Create public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
    Name = 'myNATgatewayIP'
    ResourceGroupName = 'CreateIntLBQS-rg'
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1,2,3
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip

Az 1. zónában a következő paranccsal hozhat létre egy zóna nyilvános IP-címét:

## Create a zonal public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
    Name = 'myNATgatewayIP'
    ResourceGroupName = 'CreateIntLBQS-rg'
    Location = 'eastus'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip

Feljegyzés

A NAT-átjáró a nyilvános IP-címet használja a háttérkészletben lévő virtuális gépek kimenő kapcsolatának biztosítására. Ez akkor ajánlott, ha belső terheléselosztót hoz létre, és kimenő kapcsolathoz szüksége van a háttérkészlet erőforrásaira. További információ: NAT-átjáró.

Virtuális hálózat, hálózati biztonsági csoport, megerősített gazdagép és NAT-átjáró létrehozása

  • Virtuális hálózat létrehozása a New-AzVirtualNetwork használatával

  • Hálózati biztonsági csoport szabályának létrehozása a New-AzNetworkSecurityRuleConfig használatával

  • Azure Bastion-gazdagép létrehozása a New-AzBastion használatával

  • A NAT-átjáró erőforrásának létrehozása a New-AzNatGateway használatával

  • A New-AzVirtualNetworkSubnetConfig használatával társítsa a NAT-átjárót a virtuális hálózat alhálózatához

Fontos

Az óránkénti díjszabás a Bastion üzembe helyezésének pillanatától kezdődik, a kimenő adathasználattól függetlenül. További információ: Díjszabás és termékváltozatok. Ha a Bastiont egy oktatóanyag vagy teszt részeként helyezi üzembe, javasoljuk, hogy a használat befejezése után törölje ezt az erőforrást.


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

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

## Create bastion host ##
$bastion = @{
    ResourceGroupName = 'CreateIntLBQS-rg'
    Name = 'myBastion'
    PublicIpAddress = $bastionip
    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 = 'CreateIntLBQS-rg'
    Location = 'eastus'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

Terheléselosztó létrehozása

Ez a szakasz részletesen ismerteti a terheléselosztó következő összetevőinek létrehozását és konfigurálását:

  • Hozzon létre egy előtérbeli IP-címet a New-AzLoadBalancerFrontendIpConfig használatával az előtérbeli IP-készlethez. Ez az IP fogadja a bejövő forgalmat a terheléselosztón

  • Háttércímkészlet létrehozása a New-AzLoadBalancerBackendAddressPoolConfig használatával a terheléselosztó előtéréből küldött forgalomhoz

  • Állapotadat-mintavétel létrehozása az Add-AzLoadBalancerProbeConfig használatával, amely meghatározza a háttérbeli virtuálisgép-példányok állapotát

  • Terheléselosztó-szabály létrehozása az Add-AzLoadBalancerRuleConfig használatával, amely meghatározza a forgalom virtuális gépekre való elosztását

  • Nyilvános terheléselosztó létrehozása a New-AzLoadBalancerrel

## Place virtual network created in previous step into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'CreateIntLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net

## Create load balancer frontend configuration and place in variable. ##
$lbip = @{
    Name = 'myFrontEnd'
    PrivateIpAddress = '10.1.0.4'
    SubnetId = $vnet.subnets[0].Id
}
$feip = New-AzLoadBalancerFrontendIpConfig @lbip

## 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

## Create the load balancer resource. ##
$loadbalancer = @{
    ResourceGroupName = 'CreateIntLBQS-rg'
    Name = 'myLoadBalancer'
    Location = 'eastus'
    Sku = 'Standard'
    FrontendIpConfiguration = $feip
    BackendAddressPool = $bePool
    LoadBalancingRule = $rule
    Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer

Virtuális gépek létrehozása

Ebben a szakaszban a terheléselosztó háttérkészletéhez tartozó két virtuális gépet hozza létre.

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

## Place virtual network created in previous step into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'CreateIntLBQS-rg'
}
$vnet = Get-AzVirtualNetwork @net

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

## Place the network security group into a variable. ##
$sg = {
    Name = 'myNSG'
    ResourceGroupName = 'CreateIntLBQS-rg' @sg
}
$nsg = Get-AzNetworkSecurityGroup 

## 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 = 'CreateIntLBQS-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 = 'CreateIntLBQS-rg'
        Location = 'eastus'
        VM = $vmConfig
        Zone = "$i"
    }
}
New-AzVM @vm -asjob

A virtuális gépek és a megerősített gazdagép üzembe helyezései PowerShell-feladatokként lesznek elküldve. A feladatok állapotának megtekintéséhez használja a Get-Job parancsot:

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

Feljegyzés

Az Azure alapértelmezett kimenő hozzáférési IP-címet biztosít azokhoz a virtuális gépekhez, amelyek vagy nincsenek hozzárendelve nyilvános IP-címhez, vagy egy belső alapszintű Azure-terheléselosztó háttérkészletében találhatók. Az alapértelmezett kimenő hozzáférési IP-mechanizmus olyan kimenő IP-címet biztosít, amely nem konfigurálható.

Az alapértelmezett kimenő hozzáférési IP-cím le van tiltva az alábbi események egyike esetén:

  • A virtuális géphez nyilvános IP-cím van hozzárendelve.
  • A virtuális gép egy standard terheléselosztó háttérkészletébe kerül kimenő szabályokkal vagy anélkül.
  • Egy Azure NAT Gateway-erőforrás van hozzárendelve a virtuális gép alhálózatához.

A virtuálisgép-méretezési csoportok rugalmas vezénylési módban történő használatával létrehozott virtuális gépek nem rendelkeznek alapértelmezett kimenő hozzáféréssel.

Az Azure-beli kimenő kapcsolatokról további információt az Alapértelmezett kimenő hozzáférés az Azure-ban és a Kimenő kapcsolatok forráshálózati címfordításának (SNAT) használata című témakörben talál.

Az IIS telepítése

A Set-AzVMExtension használatával telepítse az egyéni szkriptbővítményt.

A bővítmény az IIS-webkiszolgáló telepítéséhez fut PowerShell Add-WindowsFeature Web-Server , majd frissíti a Default.htm lapot a virtuális gép állomásnevének megjelenítéséhez:

Fontos

A folytatás előtt győződjön meg arról, hogy a virtuális gépek üzembe helyezései befejeződtek az előző lépésekből. A virtuális gép üzembehelyezési feladatainak állapotának ellenőrzésére használható Get-Job .

## 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 = 'CreateIntLBQS-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
}

A bővítmények PowerShell-feladatokként vannak üzembe helyezve. A telepítési feladatok állapotának megtekintéséhez használja a Get-Job parancsot:

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

A teszt virtuális gép létrehozása

Hozza létre a virtuális gépet a következőkkel:

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

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

## Place the network security group into a variable. ##
$sg = {
    Name = 'myNSG'
    ResourceGroupName = 'CreateIntLBQS-rg' @sg
}
$nsg = Get-AzNetworkSecurityGroup

## Command to create network interface for VM ##
$nic = @{
    Name = "myNicTestVM"
    ResourceGroupName = 'CreateIntLBQS-rg'
    Location = 'eastus'
    Subnet = $vnet.Subnets[0]
    NetworkSecurityGroup = $nsg
}
$nicVM = New-AzNetworkInterface @nic

## Create a virtual machine configuration for VMs ##
$vmsz = @{
    VMName = "myTestVM"
    VMSize = 'Standard_DS1_v2' 
}
$vmos = @{
    ComputerName = "myTestVM"
    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 = 'CreateIntLBQS-rg'
    Location = 'eastus'
    VM = $vmConfig
}
New-AzVM @vm

A terheléselosztó tesztelése

  1. Jelentkezzen be az Azure Portalra.

  2. Keresse meg a terheléselosztó privát IP-címét az Áttekintés képernyőn. Válassza a bal oldali menü Minden szolgáltatás elemét, majd a Minden erőforrás lehetőséget, majd a myLoadBalancer lehetőséget.

  3. Jegyezze fel vagy másolja ki a privát IP-cím melletti címet a myLoadBalancer áttekintésében.

  4. Válassza az Összes szolgáltatást a bal oldali menüben, válassza az Összes erőforrás lehetőséget, majd az erőforrások listájában válassza ki a CreateIntLBQS-rg erőforráscsoportban található MyTestVM elemet.

  5. Az Áttekintés lapon válassza a Csatlakozás elemet, majd lépjen a Bastion lehetőségre.

  6. Adja meg a virtuális gép létrehozása során megadott felhasználónevet és jelszót.

  7. Nyissa meg az Internet Explorert a myTestVM-en.

  8. Adja meg az előző lépés IP-címét a böngésző címsorába. Megjelenik az egyéni IIS-kiszolgálólap.

    Képernyőkép a kiegyensúlyozott terhelésű virtuális gép alapértelmezett weblapját megjelenítő webböngészőről

Ha látni szeretné, hogy a terheléselosztó mindhárom virtuális gépen elosztja a forgalmat, kényszerítheti a webböngésző frissítését a tesztgépről.

Az erőforrások eltávolítása

Ha már nincs rá szükség, a Remove-AzResourceGroup paranccsal eltávolíthatja az erőforráscsoportot, a terheléselosztót és a fennmaradó erőforrásokat.

Remove-AzResourceGroup -Name 'CreateIntLBQS-rg'

Következő lépések

Ebben a rövid útmutatóban:

  • Belső terheléselosztót hozott létre

  • Csatlakoztatott virtuális gépek

  • A terheléselosztó forgalmi szabályának és állapotmintájának konfigurálása

  • A terheléselosztó tesztelése

Az Azure Load Balancerről a következő témakörben olvashat bővebben: