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


Fürt horizontális fel- és leskálázása

Figyelmeztetés

Skálázás előtt olvassa el ezt a szakaszt

A számítási erőforrásoknak az alkalmazás munkaterhelésének forrásához való méretezése szándékos tervezést igényel, egy éles környezetben szinte mindig több mint egy órát vesz igénybe, és megköveteli a számítási feladatok és az üzleti környezet megértését; Valójában, ha még soha nem végezte el ezt a tevékenységet, javasoljuk, hogy először olvassa el és ismerje meg a Service Fabric-fürt kapacitástervezési szempontjait, mielőtt folytatná a dokumentum hátralévő részét. Ez a javaslat a Nem tervezett LiveSite-problémák elkerülése, és azt is javasoljuk, hogy tesztelje sikeresen azokat a műveleteket, amelyeket úgy dönt, hogy nem éles környezetben hajt végre. Bármikor jelenthet éles problémákat, vagy kérhet fizetett támogatást az Azure-hoz. A megfelelő környezettel rendelkező műveletek végrehajtására kijelölt mérnökök számára ez a cikk a skálázási műveleteket ismerteti, de önnek kell eldöntenie és megértenie, hogy mely műveletek megfelelőek a használati esethez; például, hogy milyen erőforrásokat kell skálázni (CPU, Storage, Memória), milyen skálázási irányt (függőlegesen vagy vízszintesen) és milyen műveleteket kell végrehajtani (erőforrássablon üzembe helyezése, Portál, PowerShell/CLI).

Feljegyzés

Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Service Fabric-fürt méretezése automatikus skálázási szabályokkal vagy manuálisan

A virtuálisgép-méretezési csoportok olyan Azure számítási erőforrások, amelyekkel virtuális gépek gyűjteményét telepítheti és kezelheti készletként. A Service Fabric-fürtökben definiált csomóponttípusok mindegyike külön virtuálisgép-méretezési csoportként van beállítva. Ezután minden csomóponttípus egymástól függetlenül skálázható, különböző portkészletekkel rendelkezhet, és különböző kapacitásmetrikákkal rendelkezhet. Erről a Service Fabric-csomóponttípusok dokumentumában olvashat bővebben. Mivel a fürt Service Fabric-csomóponttípusai virtuálisgép-méretezési csoportokból állnak a háttérrendszerben, automatikus méretezési szabályokat kell beállítania minden csomóponttípushoz/virtuálisgép-méretezési csoporthoz.

Feljegyzés

Az előfizetésnek elegendő maggal kell rendelkeznie ahhoz, hogy hozzáadja a fürtöt alkotó új virtuális gépeket. Jelenleg nincs modellérvényesítés, ezért az üzembehelyezési idő meghiúsul, ha a kvótakorlátok bármelyikét eléri.

Feljegyzés

Ha windowsos operációsrendszer-rendszerképet használ, és engedélyezve van a Hyper-V szerepkör, azaz. a virtuális gép beágyazott virtualizálásra lesz konfigurálva, a rendelkezésre álló memóriametrika nem lesz elérhető, mivel a virtuális gépen belüli dinamikus memóriaillesztő leállított állapotban lesz.

Válassza ki a skálázható csomóponttípust/virtuálisgép-méretezési csoportot

Jelenleg nem tudja megadni a virtuálisgép-méretezési csoportok automatikus méretezési szabályait a portálon Service Fabric-fürt létrehozásához, ezért az Azure PowerShell (1.0+) használatával listázzuk a csomóponttípusokat, majd automatikus méretezési szabályokat adjunk hozzájuk.

A fürtöt alkotó virtuálisgép-méretezési csoportok listájának lekéréséhez futtassa a következő parancsmagokat:

Get-AzResource -ResourceGroupName <RGname> -ResourceType Microsoft.Compute/VirtualMachineScaleSets

Get-AzVmss -ResourceGroupName <RGname> -VMScaleSetName <virtual machine scale set name>

Automatikus méretezési szabályok beállítása a csomóponttípushoz/virtuálisgép-méretezési csoporthoz

Ha a fürt több csomóponttípust is használ, ismételje meg ezt a skálázni kívánt csomóponttípusok/virtuálisgép-méretezési csoportok esetében (be- vagy kifelé). Vegye figyelembe a szükséges csomópontok számát, mielőtt beállítja az automatikus skálázást. Az elsődleges csomóponttípushoz megadott minimálisan szükséges csomópontszámot a kiválasztott megbízhatósági szint határozza meg. További információ a megbízhatósági szintekről.

Feljegyzés

Ha az elsődleges csomóponttípust a minimális számnál kisebbre skálázzák, az instabillá teszi a fürtöt, vagy akár le is csökkenti azt. Ez adatvesztést okozhat az alkalmazások és a rendszerszolgáltatások számára.

Az automatikus méretezési funkciót jelenleg nem azok a terhelések vezérlik, amelyeket az alkalmazások jelenthetnek a Service Fabricnek. Így jelenleg az automatikus skálázást kizárólag a virtuálisgép-méretezési csoport egyes példányai által kibocsátott teljesítményszámlálók vezérlik.

Kövesse ezeket az utasításokat az automatikus méretezés beállításához az egyes virtuálisgép-méretezési csoportokhoz.

Feljegyzés

Nagy léptékű forgatókönyv esetén, hacsak a csomóponttípus nem rendelkezik arany vagy ezüst szintű tartóssági szinttel , meg kell hívnia a Remove-ServiceFabricNodeState parancsmagot a megfelelő csomópontnévvel. A bronz tartósság érdekében nem ajánlott egyszerre több csomópontban méretezni.

Virtuális gépek manuális hozzáadása csomóponttípushoz/virtuálisgép-méretezési csoporthoz

A horizontális felskálázás során további virtuálisgép-példányokat ad a méretezési csoporthoz. Ezek a példányok lesznek a Service Fabric által használt csomópontok. A Service Fabric tudja, ha a méretezési csoport új példányokkal bővül (felskálázással), és automatikusan ennek megfelelően jár el.

Feljegyzés

A virtuális gépek hozzáadása időt vesz igénybe, ezért ne számítson arra, hogy a hozzáadások azonnaliak lesznek. Tervezze meg előre a kapacitás hozzáadását, amely több mint 10 percet tesz lehetővé, mielőtt a virtuálisgép-kapacitás elérhető lesz a replikák/szolgáltatáspéldányok számára.

Virtuális gépek hozzáadása sablonnal

Kövesse a rövid útmutató sablongyűjteményében található mintát/utasításokat az egyes csomóponttípusokban lévő virtuális gépek számának módosításához.

Virtuális gépek hozzáadása PowerShell- vagy PARANCSSOR-parancsokkal

A következő kód név alapján megkeres egy méretezési csoportot, és 1-gyel növeli a kapacitását.

$scaleset = Get-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm
$scaleset.Sku.Capacity += 1

Update-AzVmss -ResourceGroupName $scaleset.ResourceGroupName -VMScaleSetName $scaleset.Name -VirtualMachineScaleSet $scaleset

Ez a kód 6-ra állítja a kapacitást.

# Get the name of the node with
az vmss list-instances -n nt1vm -g sfclustertutorialgroup --query [*].name

# Use the name to scale
az vmss scale -g sfclustertutorialgroup -n nt1vm --new-capacity 6

Virtuális gépek manuális eltávolítása csomóponttípusból/virtuálisgép-méretezési csoportból

Amikor csomóponttípusban skáláz, eltávolítja a virtuálisgép-példányokat a méretezési csoportból. Ha a csomópont típusa Bronz tartóssági szint, a Service Fabric nem tudja, mi történt, és azt jelenti, hogy egy csomópont eltűnt. A Service Fabric ekkor a fürt hibás állapotát jelzi. A rossz állapot megelőzéséhez explicit módon el kell távolítania a csomópontot a fürtből, és el kell távolítania a csomópont állapotát.

A Service Fabric rendszerszolgáltatásai a fürt elsődleges csomóponttípusában futnak. Ha az elsődleges csomóponttípusban skáláz, soha ne skálázza a példányok számát a megbízhatósági szint által garantáltnál kisebbre.

Az állapotalapú szolgáltatásokhoz bizonyos számú csomópontra van szükség ahhoz, hogy mindig elérhető legyen, és megőrizze a szolgáltatás állapotát. A lehető legkevesebb csomópontra van szükség, amely megegyezik a partíció/szolgáltatás célreplikakészletének számával.

A Service Fabric-csomópont eltávolítása

A csomópontállapot manuális eltávolításának lépései csak a Bronz tartóssági szinttel rendelkező csomóponttípusokra vonatkoznak. A Silver és Gold tartóssági szint esetében ezeket a lépéseket a platform automatikusan végrehajtja. A tartóssággal kapcsolatos további információ: Service Fabric-fürtök kapacitástervezése.

Feljegyzés

Legalább öt csomópontot tartson fenn minden olyan virtuálisgép-méretezési csoporthoz, amelynél engedélyezve van az Arany vagy Ezüst tartóssági szintje. A fürt hibaállapotba kerül, ha a küszöbérték alatt skáláz, és manuálisan kell eltávolítania az eltávolított csomópontokat.

Annak érdekében, hogy a fürt csomópontjainak megoszlása egyenletes legyen a frissítési és tartalék tartományokban, illetve ezáltal egyenletesen legyen a kihasználtságuk, elsőként a legutóbb létrehozott csomópontot kell eltávolítani. Más szóval a csomópontokat létrehozásuk fordított sorrendjében kell eltávolítani. A legutóbb létrehozott csomópont rendelkezik a legnagyobb virtual machine scale set InstanceId tulajdonságértékkel. Az alábbi kódpéldák a legutóbb létrehozott csomópontot adják vissza.

Get-ServiceFabricNode | Sort-Object NodeInstanceId -Descending | Select-Object -First 1
sfctl node list --query "sort_by(items[*], &name)[-1]"

A Service Fabric-fürtnek értesülnie kell róla, hogy ez a csomópont el lesz távolítva. Három lépést kell végrehajtania:

  1. Tiltsa le a csomópontot, hogy ezentúl ne replikálja az adatokat.
    PowerShell: Disable-ServiceFabricNode
    sfctl: sfctl node disable

  2. Állítsa le a csomópontot, hogy a Service Fabric-futtatókörnyezet szabályszerűen álljon le, és az alkalmazás kapjon egy megszakítási kérelmet.
    PowerShell: Start-ServiceFabricNodeTransition -Stop
    sfctl: sfctl node transition --node-transition-type Stop

  3. Távolítsa el a csomópontot a fürtről.
    PowerShell: Remove-ServiceFabricNodeState
    sfctl: sfctl node remove-state

A fenti három lépés alkalmazása után a csomópont eltávolítható a méretezési csoportból. A Bronzon kívül bármely más tartóssági szint használata esetén a rendszer automatikusan végrehajtja ezeket a lépéseket a méretezési csoport adott példányának eltávolításakor.

A következő kódrészlet lekérdezi az utolsó létrehozott csomópontot, majd letiltja, leállítja, és eltávolítja a fürtről.

#### After you've connected.....
# Get the node that was created last
$node = Get-ServiceFabricNode | Sort-Object { $_.NodeName.Substring($_.NodeName.LastIndexOf('_') + 1) } -Descending | Select-Object -First 1

# Node details for the disable/stop process
$nodename = $node.NodeName
$nodeid = $node.NodeInstanceId

$loopTimeout = 10

# Run disable logic
Disable-ServiceFabricNode -NodeName $nodename -Intent RemoveNode -TimeoutSec 300 -Force

$state = Get-ServiceFabricNode | Where-Object NodeName -eq $nodename | Select-Object -ExpandProperty NodeStatus

while (($state -ne [System.Fabric.Query.NodeStatus]::Disabled) -and ($loopTimeout -ne 0))
{
    Start-Sleep 5
    $loopTimeout -= 1
    $state = Get-ServiceFabricNode | Where-Object NodeName -eq $nodename | Select-Object -ExpandProperty NodeStatus
    Write-Host "Checking state... $state found"
}

# Exit if the node was unable to be disabled
if ($state -ne [System.Fabric.Query.NodeStatus]::Disabled)
{
    Write-Error "Disable failed with state $state"
}
else
{
    # Stop node
    $stopid = New-Guid
    Start-ServiceFabricNodeTransition -Stop -OperationId $stopid -NodeName $nodename -NodeInstanceId $nodeid -StopDurationInSeconds 300

    $state = (Get-ServiceFabricNodeTransitionProgress -OperationId $stopid).State
    $loopTimeout = 10

    # Watch the transaction
    while (($state -eq [System.Fabric.TestCommandProgressState]::Running) -and ($loopTimeout -ne 0))
    {
        Start-Sleep 5
        $state = (Get-ServiceFabricNodeTransitionProgress -OperationId $stopid).State
        Write-Host "Checking state... $state found"
    }

    if ($state -ne [System.Fabric.TestCommandProgressState]::Completed)
    {
        Write-Error "Stop transaction failed with $state"
    }
    else
    {
        # Remove the node from the cluster
        Remove-ServiceFabricNodeState -NodeName $nodename -TimeoutSec 300 -Force
    }
}

Az alábbi sfctl kódban a következő parancs kéri le a legutóbb létrehozott csomópont node-name értékét: sfctl node list --query "sort_by(items[*], &name)[-1].name"

# Inform the node that it is going to be removed
sfctl node disable --node-name _nt1vm_5 --deactivation-intent 4 -t 300

# Stop the node using a random guid as our operation id
sfctl node transition --node-instance-id 131541348482680775 --node-name _nt1vm_5 --node-transition-type Stop --operation-id c17bb4c5-9f6c-4eef-950f-3d03e1fef6fc --stop-duration-in-seconds 14400 -t 300

# Remove the node from the cluster
sfctl node remove-state --node-name _nt1vm_5

Tipp.

A következő sfctl-lekérdezésekkel ellenőrizheti az egyes lépések állapotát

Inaktiválási állapot ellenőrzésesfctl node list --query "sort_by(items[*], &name)[-1].nodeDeactivationInfo"

Leállítási állapot ellenőrzésesfctl node list --query "sort_by(items[*], &name)[-1].isStopped"

A méretezési csoport horizontális leskálázása

Most, hogy a Service Fabric-csomópont el lett távolítva a fürtből, a virtuálisgép-méretezési csoport leskálázható. Az alábbi példa 1-gyel csökkenti a méretezési csoport kapacitását.

$scaleset = Get-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm
$scaleset.Sku.Capacity -= 1

Update-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm -VirtualMachineScaleSet $scaleset

Ez a kód a kapacitást 5-re állítja.

# Get the name of the node with
az vmss list-instances -n nt1vm -g sfclustertutorialgroup --query [*].name

# Use the name to scale
az vmss scale -g sfclustertutorialgroup -n nt1vm --new-capacity 5

A Service Fabric Explorerben megfigyelt viselkedések

Fürt méretezésekor a Service Fabric Explorer a fürt részét képező csomópontok (virtuálisgép-méretezési csoportpéldányok) számát fogja tükrözni. Fürtök méretezésekor azonban az eltávolított csomópont/virtuálisgép-példány nem kifogástalan állapotban jelenik meg, hacsak nem hívja meg a Remove-ServiceFabricNodeState parancsmagot a megfelelő csomópontnévvel.

Ez a viselkedés magyarázata.

A Service Fabric Explorerben felsorolt csomópontok tükrözik, hogy a Service Fabric rendszerszolgáltatásai (fm) mit tudnak a fürt által elérhető/elérhető csomópontok számáról. A virtuálisgép-méretezési csoport méretezésekor a virtuális gép törölve lett, de az FM rendszerszolgáltatás továbbra is úgy véli, hogy a csomópont (amely a törölt virtuális géphez van megfeleltetve) visszatér. A Service Fabric Explorer tehát továbbra is megjeleníti ezt a csomópontot (bár az állapot hiba vagy ismeretlen lehet).

Ha meg szeretné győződni arról, hogy egy csomópont el lesz távolítva egy virtuális gép eltávolításakor, két lehetősége van:

  1. A fürt csomóponttípusaihoz válassza ki az Arany vagy Ezüst tartóssági szintet, amely biztosítja az infrastruktúra-integrációt. A méretezéskor a rendszer automatikusan eltávolítja a csomópontokat a rendszerszolgáltatások (FM) állapotából. A tartóssági szintekről itt olvashat bővebben

Feljegyzés

Legalább öt csomópontot tartson fenn minden olyan virtuálisgép-méretezési csoporthoz, amelynél engedélyezve van az Arany vagy Ezüst tartóssági szintje. A fürt hibaállapotba kerül, ha a küszöbérték alatt skáláz, és manuálisan kell eltávolítania az eltávolított csomópontokat.

  1. A virtuálisgép-példány méretezése után meg kell hívnia a Remove-ServiceFabricNodeState parancsmagot.

Feljegyzés

A Service Fabric-fürtöknek bizonyos számú csomópontot kell folyamatosan felfelé állítaniuk a rendelkezésre állás fenntartása és az állapot megőrzése érdekében – ezt nevezzük "kvórum fenntartásának". Ezért általában nem biztonságos a fürt összes gépének leállítása, kivéve, ha először végzett teljes biztonsági másolatot az állapotáról.

Következő lépések

Az alábbiakban megismerheti a fürtkapacitás tervezését, a fürt frissítését és a particionálási szolgáltatásokat is: