Oktatóanyag: Windows rendszerű Azure-beli virtuális gépek terheléselosztása az Azure PowerShell használatával magas rendelkezésre állású alkalmazások létrehozásához

A következőkre vonatkozik: ✔️ Windows rendszerű virtuális gépek ✔️ – Egységes méretezési csoportok

A terheléselosztás magasabb szintű rendelkezésre állást biztosít, mivel a bejövő kérelmeket több virtuális gép között osztja szét. Ebben az oktatóanyagban megismerkedhet az Azure Load Balancer különböző összetevőivel, amelyek elosztják a forgalmat, és gondoskodnak a magas rendelkezésre állásról. Az alábbiak végrehajtásának módját ismerheti meg:

  • Azure-terheléselosztó létrehozása
  • Terheléselosztó állapotmintájának létrehozása
  • Terheléselosztó forgalmára vonatkozó szabályok létrehozása
  • Alapszintű IIS-oldal létrehozása egyéni szkriptbővítménnyel
  • Virtuális gépek létrehozása és terheléselosztóhoz csatolása
  • Terheléselosztó megtekintése működés közben
  • Virtuális gépek hozzáadása a terheléselosztóhoz és eltávolításuk a terheléselosztóból

Az Azure-terheléselosztók áttekintése

Az Azure-terheléselosztók 4. rétegbeli (TCP, UDP) terheléselosztók, amelyek magas rendelkezésre állást biztosítanak azáltal, hogy a bejövő forgalmat elosztják az ép virtuális gépek között. A terheléselosztó állapotmintája ez egyes virtuális gépek adott portjait monitorozza, és csak a működő virtuális gépekre terjeszt forgalmat.

Meg kell adnia egy előtérbeli IP-konfigurációt, amely egy vagy több nyilvános IP-címet tartalmaz. Ez az előtérbeli IP-konfiguráció lehetővé teszi, hogy a terheléselosztó és az alkalmazások elérhetők legyenek az interneten keresztül.

A virtuális gépek a virtuális hálózati adapterkártyájuk (NIC) segítségével csatlakoznak a terheléselosztóhoz. Annak érdekében, hogy a forgalmat el lehessen osztani a virtuális gépek között, egy háttércímkészlet tartalmazza a terheléselosztóhoz csatlakoztatott NIC-k IP-címét.

A forgalom szabályozásához terheléselosztási szabályokat kell megadnia a virtuális gépekhez rendelt adott portokhoz és protokollokhoz.

Az Azure Cloud Shell elindítása

Az Azure Cloud Shell egy olyan ingyenes interaktív kezelőfelület, amelyet a jelen cikkben található lépések futtatására használhat. A fiókjával való használat érdekében a gyakran használt Azure-eszközök már előre telepítve és konfigurálva vannak rajta.

A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget egy kódblokk jobb felső sarkában. A Cloud Shellt egy külön böngészőlapon is elindíthatja a https://shell.azure.com/powershell cím megnyitásával. A Copy (másolás) gombra kattintva másolja és illessze be a kódot a Cloud Shellbe, majd nyomja le az Enter billentyűt a futtatáshoz.

Azure-terheléselosztó létrehozása

Ez a szakasz részletesen ismerteti a terheléselosztó egyes összetevőinek létrehozását és konfigurálását. A terheléselosztó létrehozása előtt hozzon létre egy erőforráscsoportot a New-AzResourceGroup paranccsal. Az alábbi példa létrehoz egy myResourceGroupLoadBalancer nevű erőforráscsoportot az EastUS-helyen :

New-AzResourceGroup `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS"

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

Az alkalmazás internetes eléréséhez a terheléselosztónak nyilvános IP-címmel kell rendelkeznie. Hozzon létre egy nyilvános IP-címet a New-AzPublicIpAddress paranccsal. Az alábbi példában létrejön egy myPublicIP nevű nyilvános IP-cím a myResourceGroupLoadBalancer erőforráscsoportban:

$publicIP = New-AzPublicIpAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -AllocationMethod "Static" `
  -Name "myPublicIP"

Terheléselosztó létrehozása

Hozzon létre egy előtérbeli IP-készletet a New-AzLoadBalancerFrontendIpConfig paranccsal. Az alábbi példában létrejön egy myFrontEndPool nevű előtérbeli IP-címkészlet, amely a myPublicIP címhez kötődik:

$frontendIP = New-AzLoadBalancerFrontendIpConfig `
  -Name "myFrontEndPool" `
  -PublicIpAddress $publicIP

Hozzon létre egy háttércímkészletet a New-AzLoadBalancerBackendAddressPoolConfig paranccsal. A virtuális gépek ehhez a háttérkészlethez lesznek csatolva a hátralévő lépések során. Az alábbi példa létrehoz egy myBackEndPool nevű háttércímkészletet:

$backendPool = New-AzLoadBalancerBackendAddressPoolConfig `
  -Name "myBackEndPool"

Most hozza létre a terheléselosztót a New-AzLoadBalancerrel. Az alábbi példában egy myLoadBalancer nevű terheléselosztó jön létre az előző lépésekben létrehozott elő- és háttérbeli IP-címkészletek használatával:

$lb = New-AzLoadBalancer `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myLoadBalancer" `
  -Location "EastUS" `
  -FrontendIpConfiguration $frontendIP `
  -BackendAddressPool $backendPool

Állapotminta létrehozása

Ahhoz, hogy a terheléselosztó monitorozhassa az alkalmazás állapotát, állapotmintát kell használni. Az állapotminta dinamikusan hozzáadja a virtuális gépeket a terheléselosztó rotációjához vagy eltávolítja belőle azokat, az állapotellenőrzésekre adott válaszuk alapján. Alapértelmezés szerint a virtuális gépeket a rendszer akkor távolítja el a terheléselosztó elosztásából, ha egy 15 másodperces intervallumon belül két, egymást követő hiba jelentkezik. Az állapotmintákat az alkalmazás egy protokollja vagy adott állapotellenőrzési oldala alapján lehet létrehozni.

Az alábbi példában egy TCP-mintavétel jön létre. Egyéni HTTP-mintavételt is létrehozhat részletesebb állapotellenőrzések elvégzéséhez. Egyéni HTTP-mintavétel használatakor létre kell hoznia az állapotellenőrzési oldalt, például: healthcheck.aspx. A mintavételnek a HTTP 200 OK választ kell visszaadnia ahhoz, hogy a terheléselosztó a gazdagépet a rotációban tartsa.

TCP-állapotadat-mintavétel létrehozásához használja az Add-AzLoadBalancerProbeConfig parancsot. Az alábbi példában egy myHealthProbe nevű állapotmintát hozunk létre, amely a 80-as TCP-porton lévő virtuális gépeket monitorozza:

Add-AzLoadBalancerProbeConfig `
  -Name "myHealthProbe" `
  -LoadBalancer $lb `
  -Protocol tcp `
  -Port 80 `
  -IntervalInSeconds 15 `
  -ProbeCount 2

Az állapotteszt alkalmazásához frissítse a terheléselosztót a Set-AzLoadBalancerrel:

Set-AzLoadBalancer -LoadBalancer $lb

Terheléselosztási szabály létrehozása

A terheléselosztási szabállyal azt lehet megadni, hogy a rendszer hogyan ossza el a forgalmat a virtuális gépek között. Meg kell határoznia az előtérbeli IP-konfigurációt a bejövő forgalomhoz és a háttérbeli IP-készletet a forgalom fogadásához, valamint a szükséges forrás- és célportot. Ahhoz, hogy csak a megfelelő állapotú virtuális gépek fogadhassanak forgalmat, adja meg a használandó állapotmintát is.

Hozzon létre egy terheléselosztó-szabályt az Add-AzLoadBalancerRuleConfig paranccsal. Az alábbi példa létrehoz egy myLoadBalancerRule nevű terheléselosztási szabályt, és elosztja a 80-as TCP-port forgalmát:

$probe = Get-AzLoadBalancerProbeConfig -LoadBalancer $lb -Name "myHealthProbe"

Add-AzLoadBalancerRuleConfig `
  -Name "myLoadBalancerRule" `
  -LoadBalancer $lb `
  -FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
  -BackendAddressPool $lb.BackendAddressPools[0] `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80 `
  -Probe $probe

Frissítse a terheléselosztót a Set-AzLoadBalancerrel:

Set-AzLoadBalancer -LoadBalancer $lb

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

Mielőtt üzembe helyezne néhány virtuális gépet és tesztelné az elosztót, hozza létre a támogató virtuális hálózati erőforrásokat. További információt a virtuális hálózatokról az Azure-beli virtuális hálózatok kezelésével foglalkozó oktatóanyagban talál.

Hálózati erőforrások létrehozása

Hozzon létre egy virtuális hálózatot a New-AzVirtualNetwork használatával. Az alábbi példa létrehoz egy mySubnet hálózattal rendelkező myVNet nevű virtuális hálózatot:

# Create subnet config
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name "mySubnet" `
  -AddressPrefix 192.168.1.0/24

# Create the virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Location "EastUS" `
  -Name "myVnet" `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

A virtuális hálózati adapterek a New-AzNetworkInterface használatával jönnek létre. Az alábbi példa három virtuális NIC-t hoz létre. (Egy virtuális NIC-t minden virtuális géphez, amelyet létre fog hozni az alkalmazáshoz a következő lépések során). Bármikor létrehozhat további virtuális NIC-ket és virtuális gépeket, és hozzáadhatja őket a terheléselosztóhoz:

for ($i=1; $i -le 3; $i++)
{
   New-AzNetworkInterface `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -Name myVM$i `
     -Location "EastUS" `
     -Subnet $vnet.Subnets[0] `
     -LoadBalancerBackendAddressPool $lb.BackendAddressPools[0]
}

Virtuális gépek létrehozása

Az alkalmazás magas rendelkezésre állásának növeléséhez helyezze a virtuális gépeket egy rendelkezésre állási csoportba.

Hozzon létre egy rendelkezésre állási csoportot a New-AzAvailabilitySet paranccsal. Az alábbi példa egy myAvailabilitySet nevű rendelkezésre állási csoportot hoz létre:

$availabilitySet = New-AzAvailabilitySet `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myAvailabilitySet" `
  -Location "EastUS" `
  -Sku aligned `
  -PlatformFaultDomainCount 2 `
  -PlatformUpdateDomainCount 2

A Get-Credential paranccsal állítsa be a virtuális gépek rendszergazdai felhasználónevét és jelszavát:

$cred = Get-Credential

Most már létrehozhatja a virtuális gépeket a New-AzVM használatával. Az alábbi példa három virtuális gépet hoz létre, illetve a szükséges virtuális hálózati összetevőket, ha azok még nem léteznek:

for ($i=1; $i -le 3; $i++)
{
    New-AzVm `
        -ResourceGroupName "myResourceGroupLoadBalancer" `
        -Name "myVM$i" `
        -Location "East US" `
        -VirtualNetworkName "myVnet" `
        -SubnetName "mySubnet" `
        -SecurityGroupName "myNetworkSecurityGroup" `
        -OpenPorts 80 `
        -AvailabilitySetName "myAvailabilitySet" `
        -Credential $cred `
        -AsJob
}

Az -AsJob paraméter háttérfeladatként létrehozza a virtuális gépet, így használni tudja a PowerShell-parancssorokat. A háttérfeladatok részleteit a Job parancsmaggal tekintheti meg. A három virtuális gép létrehozása és konfigurálása néhány percet vesz igénybe.

IIS telepítése egyéni szkriptbővítménnyel

A Windows rendszerű virtuális gép testreszabásával foglalkozó korábbi oktatóanyagból megtudhatta, hogyan automatizálható egy virtuális gép testreszabása a Windows rendszerhez készült egyéni szkriptbővítménnyel. Ugyanezzel a módszerrel telepítheti és konfigurálhatja az IIS-t a virtuális gépeken.

Az egyéni szkriptbővítmény telepítéséhez használja a Set-AzVMExtension parancsot. A bővítmény a powershell Add-WindowsFeature Web-Server parancs futtatásával telepíti az IIS-webkiszolgálót, majd a Default.htm lapot frissítve megjeleníti a virtuális gép eszköznevét:

for ($i=1; $i -le 3; $i++)
{
   Set-AzVMExtension `
     -ResourceGroupName "myResourceGroupLoadBalancer" `
     -ExtensionName "IIS" `
     -VMName myVM$i `
     -Publisher Microsoft.Compute `
     -ExtensionType CustomScriptExtension `
     -TypeHandlerVersion 1.8 `
     -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
     -Location EastUS
}

Terheléselosztó tesztelése

Szerezze be a terheléselosztó nyilvános IP-címét a Get-AzPublicIPAddress paranccsal. A következő példa a korábban létrehozott myPublicIP IP-címét kéri le:

Get-AzPublicIPAddress `
  -ResourceGroupName "myResourceGroupLoadBalancer" `
  -Name "myPublicIP" | select IpAddress

A nyilvános IP-címet beírhatja egy böngészőbe. Ekkor megjelenik a webhely, amely tartalmazza annak a virtuális gépnek az eszköznevét, amelyhez a terheléselosztó forgalmat irányított, ahogy az alábbi példában is látható:

IIS-webhely futtatása

Annak megtekintéséhez, hogyan osztja el a terheléselosztó az alkalmazást futtató három virtuális gép között a forgalmat, kényszerítheti a webböngésző frissítését.

Virtuális gépek hozzáadása és eltávolítása

Előfordulhat, hogy karbantartás kell végeznie az alkalmazást futtató virtuális gépeken (például operációsrendszer-frissítést kell telepítenie). Az alkalmazás megnövekedett forgalmának kezeléséhez szükség lehet további virtuális gépek hozzáadására. Ez a szakasz bemutatja, hogyan távolíthat el egy virtuális gépet a terheléselosztóból, vagy hogyan adhat hozzá virtuális gépeket.

Virtuális gép eltávolítása a terheléselosztóból

Kérje le a hálózati adapterkártyát a Get-AzNetworkInterface paranccsal, majd állítsa a virtuális hálózati adapter LoadBalancerBackendAddressPools tulajdonságát $null értékre. Végül frissítse a virtuális NIC-t:

$nic = Get-AzNetworkInterface `
    -ResourceGroupName "myResourceGroupLoadBalancer" `
    -Name "myVM2"
$nic.Ipconfigurations[0].LoadBalancerBackendAddressPools=$null
Set-AzNetworkInterface -NetworkInterface $nic

Annak megtekintéséhez, hogyan osztja el a terheléselosztó az alkalmazást futtató megmaradt kettő virtuális gép között a forgalmat, kényszerítheti a webböngésző frissítését. Most már elvégezheti a virtuális gépen a szükséges karbantartást, például telepítheti az operációs rendszer frissítéseit, vagy újraindíthatja a virtuális gépet.

Virtuális gép hozzáadása a terheléselosztóhoz

A virtuális gép karbantartása után vagy ha kapacitásbővítésre van szüksége, állítsa a virtuális hálózati adapter LoadBalancerBackendAddressPools tulajdonságát a Get-AzLoadBalancerBackendAddressPool tulajdonságára:

A terheléselosztó lekérése:

$lb = Get-AzLoadBalancer `
    -ResourceGroupName myResourceGroupLoadBalancer `
    -Name myLoadBalancer 
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$lb.BackendAddressPools[0]
Set-AzNetworkInterface -NetworkInterface $nic

Következő lépések

Ebben az oktatóanyagban létrehozott egy terheléselosztót, majd virtuális gépeket csatolt hozzá. Megtanulta végrehajtani az alábbi műveleteket:

  • Azure-terheléselosztó létrehozása
  • Terheléselosztó állapotmintájának létrehozása
  • Terheléselosztó forgalmára vonatkozó szabályok létrehozása
  • Alapszintű IIS-oldal létrehozása egyéni szkriptbővítménnyel
  • Virtuális gépek létrehozása és terheléselosztóhoz csatolása
  • Terheléselosztó megtekintése működés közben
  • Virtuális gépek hozzáadása a terheléselosztóhoz és eltávolításuk a terheléselosztóból

A következő oktatóanyag a virtuális gépek hálózatkezelését mutatja be.