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:
A Resource Manager-sablonok megfelelő kapacitással történő üzembe helyezése nem támogatja a használati esetet.
A manuális skálázás mellett konfigurálhat egy folyamatos integrációs és kézbesítési folyamatot az Azure DevOps Servicesben azure-erőforráscsoport-üzembehelyezési projektek használatával. Ezt a folyamatot általában egy olyan logikai alkalmazás aktiválja, amely az Azure Monitor REST API-ból lekérdezett virtuális gépek teljesítménymetrikáit használja. A folyamat hatékonyan automatikusan skáláz a kívánt metrikák alapján, miközben optimalizálja Resource Manager sablonokat.
Egyszerre csak egy virtuálisgép-méretezési csoport csomópontját kell horizontálisan skáláznia.
Ha egyszerre három vagy több csomóponttal szeretne felskálázni, egy Service Fabric-fürtöt egy virtuálisgép-méretezési csoport hozzáadásával kell vertikálisan felskáláznia. A legbiztonságosabb a virtuálisgép-méretezési csoportok horizontális felskálázása és horizontális felskálázása, egyszerre egy csomóponton.
A Service Fabric-fürt silver megbízhatósága vagy magasabb szintű, a Silver tartóssága pedig magasabb bármely olyan léptékben, ahol automatikus skálázási szabályokat konfigurál.
Az automatikus skálázási szabályok minimális kapacitásának legalább öt virtuálisgép-példánynak kell lennie. Az elsődleges csomóponttípus megbízhatósági szintjének minimális értékével is egyenlőnek vagy annál nagyobbnak kell lennie.
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.
- A PowerShellben futtassa a parancsot
Disable-ServiceFabricNode
szándékkalRemoveNode
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. - 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. - 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.
- 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 .
- 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.
- 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:
- A PowerShellben futtassa a parancsot
Disable-ServiceFabricNode
szándékkalRemoveNode
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. - 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. - 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.
- 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:
- Hívja meg a Remove-ServiceFabricNodeState parancsot a megfelelő csomópontnévvel.
- Telepítse a Service Fabric automatikus skálázási segédalkalmazást a fürtön. Ez az alkalmazás biztosítja, hogy a leskálázott csomópontok törlődnek Service Fabric Explorer.
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
- Fürt létrehozása Windows Servert futtató virtuális gépeken vagy számítógépeken: Service Fabric-fürt létrehozása Windows Serverhez.
- Fürt létrehozása Linux rendszerű virtuális gépeken vagy számítógépeken: Linux-fürt létrehozása.
- Tudnivalók a Service Fabric támogatási lehetőségeiről.