Share via


Az Azure Service Fabric kapacitástervezése és skálázása

Mielőtt létrehoz egy Azure Service Fabric-fürtöt, vagy skálázza a fürtöt üzemeltető számítási erőforrásokat, fontos megtervezni a kapacitást. További információ a kapacitás megtervezéséről: A Service Fabric-fürt kapacitásának megtervezése. A fürt méretezhetőségével kapcsolatos további ajánlott eljárásokért tekintse meg a Service Fabric skálázhatósági szempontjait ismertető cikket.

A csomóponttípus és a fürt jellemzőinek figyelembe vétele mellett a skálázási műveletek éles környezetben egy óránál tovább is tarthatnak. Ez a szempont a hozzáadott virtuális gépek számától függetlenül igaz.

Automatikus skálázás

Skálázási műveleteket azure Resource Manager-sablonokon keresztül kell végrehajtania, mert az erőforrás-konfigurációk kódként való kezelése az ajánlott eljárás.

A virtuálisgép-méretezési csoportokon keresztül végzett automatikus skálázás miatt a verziószámozott Resource Manager sablon pontatlanul határozza meg a virtuálisgép-méretezési csoportok példányszámát. A pontatlan definíció növeli annak kockázatát, hogy a jövőbeli üzemelő példányok nem kívánt skálázási műveleteket fognak eredményezni. Általában az automatikus skálázást kell használnia, ha:

Megjegyzés

A Service Fabric állapotalapú service fabric:/System/InfastructureService/<NODE_TYPE_NAME> minden olyan csomóponttípuson fut, amely Ezüst vagy magasabb tartósságú. Ez az egyetlen rendszerszolgáltatás, amely bármely fürtcsomópont-típuson futtatható az Azure-ban.

Fontos

A Service Fabric automatikus skálázása támogatja Default a virtuálisgép-méretezési NewestVM csoport méretezési konfigurációit.

Vertikális skálázási szempontok

Az Azure Service Fabricben a csomóponttípusok vertikális skálázásához számos lépésre és szempontra van szükség. Például:

  • A fürtnek kifogástalan állapotúnak kell lennie a skálázás előtt. Ellenkező esetben tovább destabilizálja a fürtöt.
  • Az állapotalapú szolgáltatásokat üzemeltető összes Service Fabric-fürtcsomópont-típushoz ezüst vagy nagyobb tartóssági szint szükséges.

Megjegyzés

Az állapotalapú Service Fabric rendszerszolgáltatásokat üzemeltető elsődleges csomóponttípusnak Silver tartóssági szintnek vagy annál magasabbnak kell lennie. A Silver tartósságának engedélyezése után a fürtműveletek, például a frissítések, a csomópontok hozzáadása vagy eltávolítása stb. lassabbak lesznek, mivel a rendszer az adatbiztonságot optimalizálja a műveletek sebességéhez képest.

A virtuálisgép-méretezési csoportok vertikális skálázása az erőforrás-termékváltozat egyszerű módosításával romboló művelet, mivel újraképezi a gazdagépeket, így eltávolítja az összes helyileg megőrzött állapotot. Ehelyett horizontálisan skálázhatja a fürtöt úgy, hogy hozzáad egy új méretezési csoportot a kívánt termékváltozattal, majd áttelepíti a szolgáltatásokat az új méretezési csoportba a biztonságos vertikális skálázási művelet végrehajtásához.

A fürt Service Fabric-csomópont tulajdonságai és elhelyezési megkötései alapján dönti el, hogy hol tárolja az alkalmazás szolgáltatásait. Egy elsődleges csomóponttípus vertikális skálázásakor üzembe helyez egy második elsődleges csomóponttípust, majd beállítja ("isPrimary": false) az eredeti elsődleges csomóponttípust, és letiltja a csomópontokat, és eltávolítja a méretezési csoportot és a kapcsolódó erőforrásokat. Részletekért lásd: Service Fabric-fürt elsődleges csomóponttípusának vertikális felskálázása.

Megjegyzés

Az éles környezet módosításainak megkísérlése előtt mindig ellenőrizze a tesztkörnyezetek műveleteit. Alapértelmezés szerint a Service Fabric-fürtrendszer-szolgáltatások csak a cél elsődleges csomóponttípusra vonatkozó elhelyezési korlátozással rendelkeznek.

A csomópont tulajdonságainak és elhelyezési korlátozásainak deklarálásával végezze el a következő lépéseket egyszerre egy virtuálisgép-példányban. Ez lehetővé teszi, hogy a rendszerszolgáltatások (és az állapotalapú szolgáltatások) szabályosan le legyenek állítva az eltávolítani kívánt virtuálisgép-példányon, mivel az új replikák máshol jönnek létre.

  1. A PowerShellben futtassa a parancsot Disable-ServiceFabricNode szándékkal RemoveNode az eltávolítani kívánt csomópont letiltásához. Távolítsa el a legmagasabb számot tartalmazó csomóponttípust. Ha például hatcsomópontos fürtje van, távolítsa el a "MyNodeType_5" virtuálisgép-példányt.
  2. Futtassa a parancsot Get-ServiceFabricNode , és győződjön meg arról, hogy a csomópont le van tiltva. Ha nem, várjon, amíg a csomópont le van tiltva. Ez az egyes csomópontok esetében néhány órát is igénybe vehet. Ne folytassa, amíg a csomópont le nem tiltva állapotba nem vált.
  3. Csökkentse a virtuális gépek számát egyvel az adott csomóponttípusban. A rendszer eltávolítja a legmagasabb virtuálisgép-példányt.
  4. Szükség szerint ismételje meg az 1–3. lépést, de soha ne skálázza az elsődleges csomóponttípusok példányainak számát a megbízhatósági szint által igényeltnél kisebbre. Az ajánlott példányok listáját lásd: A Service Fabric-fürt kapacitásának megtervezése .
  5. Ha az összes virtuális gép eltűnt (a "Le" érték jelenik meg), a háló:/System/InfrastructureService/[csomópont neve] Hiba állapotot fog megjeleníteni. Ezután frissítheti a fürterőforrást a csomóponttípus eltávolításához. Használhatja az ARM-sablon üzembe helyezését, vagy szerkesztheti a fürterőforrást az Azure Resource Manageren keresztül. Ez elindít egy fürtfrissítést, amely eltávolítja a fabric:/System/InfrastructureService/[csomóponttípus] szolgáltatást, amely hibaállapotban van.
  6. Miután törölheti a VMScaleSetet, a csomópontok továbbra is "Le" állapotban jelennek meg Service Fabric Explorer nézetben. Az utolsó lépés az, hogy megtisztítsa őket a Remove-ServiceFabricNodeState paranccsal.

Horizontális skálázás

A horizontális skálázást manuálisan vagy programozott módon is elvégezheti.

Megjegyzés

Ha Silver vagy Gold tartósságú csomóponttípust skáláz, a skálázás lassú lesz.

Méretezés

Egy Service Fabric-fürt vertikális felskálázása egy adott virtuálisgép-méretezési csoport példányszámának növelésével. A kapacitás növeléséhez használhatja a kívánt méretezési csoport azonosítóját és azonosítóját programozott módon AzureClient .

var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
var newCapacity = (int)Math.Min(MaximumNodeCount, scaleSet.Capacity + 1);
scaleSet.Update().WithCapacity(newCapacity).Apply(); 

A manuális felskálázáshoz frissítse a kapacitást a kívánt virtuálisgép-méretezési csoport erőforrásának termékváltozat-tulajdonságában.

"sku": {
    "name": "[parameters('vmNodeType0Size')]",
    "capacity": "[parameters('nt0InstanceCount')]",
    "tier": "Standard"
}

Skálázás a következőben:

A skálázás több szempontot igényel, mint a horizontális felskálázás. Például:

  • A Service Fabric rendszerszolgáltatásai a fürt elsődleges csomóponttípusában futnak. Soha ne állítsa le vagy skálázza le az adott csomóponttípus példányainak számát, hogy kevesebb példánya legyen, mint amennyit a megbízhatósági szint garantál.
  • Állapotalapú szolgáltatás esetén bizonyos számú csomópontra van szükség, amelyek mindig rendelkezésre állnak a rendelkezésre állás fenntartásához és a szolgáltatás állapotának megőrzéséhez. Legalább annyi csomópontra van szükség, amely megegyezik a partíció vagy szolgáltatás célreplikakészletének számával.

A manuális skálázáshoz kövesse az alábbi lépéseket:

  1. A PowerShellben futtassa a parancsot Disable-ServiceFabricNode szándékkal RemoveNode az eltávolítani kívánt csomópont letiltásához. Távolítsa el a legmagasabb számot tartalmazó csomóponttípust. Ha például hatcsomópontos fürtje van, távolítsa el a "MyNodeType_5" virtuálisgép-példányt.
  2. Futtassa a parancsot Get-ServiceFabricNode , és győződjön meg arról, hogy a csomópont le van tiltva. Ha nem, várjon, amíg a csomópont le van tiltva. Ez az egyes csomópontok esetében néhány órát is igénybe vehet. Ne folytassa, amíg a csomópont le nem tiltva állapotba nem vált.
  3. Csökkentse a virtuális gépek számát egyvel az adott csomóponttípusban. A rendszer eltávolítja a legmagasabb virtuálisgép-példányt.
  4. Ismételje meg az 1–3. lépést, amíg ki nem építi a kívánt kapacitást. Az elsődleges csomóponttípusok példányainak számát ne skálázza a megbízhatósági szint által indokoltnál kisebbre. Az ajánlott példányok listáját lásd: A Service Fabric-fürt kapacitásának megtervezése .

A manuális skálázáshoz frissítse a kapacitást a kívánt virtuálisgép-méretezési csoport erőforrásának termékváltozat-tulajdonságában.

"sku": {
    "name": "[parameters('vmNodeType0Size')]",
    "capacity": "[parameters('nt0InstanceCount')]",
    "tier": "Standard"
}

A programozott skálázáshoz elő kell készítenie a csomópontot a leállításra. Keresse meg az eltávolítandó csomópontot (a legmagasabb példányú csomópontot). Például:

using (var client = new FabricClient())
{
    var mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync())
        .Where(n => n.NodeType.Equals(NodeTypeToScale, StringComparison.OrdinalIgnoreCase))
        .Where(n => n.NodeStatus == System.Fabric.Query.NodeStatus.Up)
        .OrderByDescending(n =>
        {
            var instanceIdIndex = n.NodeName.LastIndexOf("_");
            var instanceIdString = n.NodeName.Substring(instanceIdIndex + 1);
            return int.Parse(instanceIdString);
        })
        .FirstOrDefault();

Inaktiválja és távolítsa el a csomópontot ugyanazzal FabricClient a példánnyal (client ebben az esetben) és a csomópontpéldánysal (instanceIdString ebben az esetben), amelyet az előző kódban használt:

var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);

// Remove the node from the Service Fabric cluster
ServiceEventSource.Current.ServiceMessage(Context, $"Disabling node {mostRecentLiveNode.NodeName}");
await client.ClusterManager.DeactivateNodeAsync(mostRecentLiveNode.NodeName, NodeDeactivationIntent.RemoveNode);

// Wait (up to a timeout) for the node to gracefully shut down
var timeout = TimeSpan.FromMinutes(5);
var waitStart = DateTime.Now;
while ((mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Up || mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Disabling) &&
        DateTime.Now - waitStart < timeout)
{
    mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync()).FirstOrDefault(n => n.NodeName == mostRecentLiveNode.NodeName);
    await Task.Delay(10 * 1000);
}

// Decrement virtual machine scale set capacity
var newCapacity = (int)Math.Max(MinimumNodeCount, scaleSet.Capacity - 1); // Check min count 

scaleSet.Update().WithCapacity(newCapacity).Apply();

Megjegyzés

Amikor skáláz egy fürtön, az eltávolított csomópont/virtuálisgép-példány nem kifogástalan állapotban jelenik meg Service Fabric Explorer. Ennek a viselkedésnek a magyarázatáért lásd: Viselkedések, amit megfigyelhet Service Fabric Explorer. A következőket teheti:

Megbízhatósági szintek

A megbízhatósági szint a Service Fabric-fürterőforrás tulajdonsága. Nem konfigurálható másként az egyes csomóponttípusokhoz. Ez vezérli a fürt rendszerszolgáltatásainak replikációs tényezőt, és a fürt erőforrásszintjének beállítása.

A megbízhatósági szint határozza meg az elsődleges csomóponttípushoz minimálisan szükséges csomópontok számát. A megbízhatósági szint a következő értékeket veheti fel:

  • Platinum: Hét és kilenc magcsomópontot tartalmazó célreplikakészlettel futtatja a rendszerszolgáltatásokat.
  • Arany: Hét és hét magcsomópontot tartalmazó célreplikakészlettel futtatja a rendszerszolgáltatásokat.
  • Ezüst: A rendszerszolgáltatásokat öt és öt magcsomópontot tartalmazó célreplikakészlettel futtatja.
  • Bronz: A rendszerszolgáltatásokat három és három magcsomópontból álló célreplikakészlettel futtatja.

A minimális ajánlott megbízhatósági szint a Silver.

A megbízhatósági szint a Microsoft.ServiceFabric/clusters erőforrás tulajdonságok szakaszában van megadva, a következőképpen:

"properties":{
    "reliabilityLevel": "Silver"
}

Tartóssági szintek

Figyelmeztetés

A Bronz tartósságú csomóponttípusok nem kapnak jogosultságokat. Az állapot nélküli számítási feladatokat érintő infrastruktúra-feladatok nem lesznek leállva vagy késleltetve, ami hatással lehet a számítási feladatokra.

Csak állapot nélküli számítási feladatokat futtató csomóponttípusokhoz használja a Bronz tartósságot. Éles számítási feladatok esetén futtassa a Silver vagy újabb parancsot az állapotkonzisztencia biztosításához. Válassza ki a megfelelő megbízhatóságot a kapacitástervezési dokumentáció útmutatása alapján.

A tartóssági szintet két erőforrásban kell beállítani. Az egyik a virtuálisgép-méretezési csoport erőforrásának bővítményprofilja:

"extensionProfile": {
    "extensions":          {
        "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
        "properties": {
            "settings": {
                "durabilityLevel": "Bronze"
            }
        }
    }
}

A másik erőforrás a Microsoft.ServiceFabric/clusters erőforrásbannodeTypes található:

"nodeTypes": [
    {
        "name": "[variables('vmNodeType0Name')]",
        "durabilityLevel": "Bronze"
    }
]

Következő lépések