Megosztás a következőn keresztül:


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

Ismerkedés az Azure Load Balancer belső terheléselosztó és két virtuális gép Azure PowerShell-lel való létrehozásával. Emellett más erőforrásokat is üzembe helyezhet, például az Azure Bastiont, a NAT Gatewayt, a virtuális hálózatot és a szükséges alhálózatokat.

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.

$rg = @{
    Name = 'CreateINTLBQS-rg'
    Location = 'westus2'
}
New-AzResourceGroup @rg

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 = $rg.name
    Location = 'westus2'
    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 = $rg.name
    Location = 'westus2'
    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 = $rg.name
    Name = 'myNATgateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'westus2'
    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 = $rg.name
    Location = 'westus2'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

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

## Create bastion host ##
$bastion = @{
    ResourceGroupName = $rg.name
    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 = $rg.name
    Location = 'westus2'
    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 = $rg.name
}
$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 = $rg.name
    Name = 'myLoadBalancer'
    Location = 'westus2'
    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 = $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. ##
$sg = @{
    Name = 'myNSG'
    ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @sg

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

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 = $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
}

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 = $rg.name
}
$vnet = Get-AzVirtualNetwork @net

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

## Command to create network interface for VM ##
$nic = @{
    Name = "myNicTestVM"
    ResourceGroupName = $rg.name
    Location = 'westus2'
    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 = $rg.name
    Location = 'westus2'
    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 $rg.name

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: