Škálování clusterů Azure Service Fabric
Cluster Service Fabric je síťově propojená sada virtuálních nebo fyzických počítačů, ve které se nasazují a spravují mikroslužby. Počítač nebo virtuální počítač, který je součástí clusteru, se nazývá uzel. Clustery můžou obsahovat potenciálně tisíce uzlů. Po vytvoření clusteru Service Fabric můžete cluster horizontálně škálovat (změnit počet uzlů) nebo vertikálně (změnit prostředky uzlů). Cluster můžete kdykoli škálovat, i když jsou úlohy spuštěné v clusteru. Jak se cluster škáluje, vaše aplikace se automaticky škálují i.
Proč škálovat cluster? Požadavky aplikací se v průběhu času mění. Možná budete muset zvýšit prostředky clusteru, aby splňovaly zvýšenou úlohu aplikací nebo síťový provoz, nebo snížit prostředky clusteru, když poptávka klesne.
Horizontální nebo horizontální škálování
Změní počet uzlů v clusteru. Jakmile se nové uzly připojí ke clusteru, Přesune do nich Resource Manager služby, které snižují zatížení stávajících uzlů. Pokud se prostředky clusteru nepoužívají efektivně, můžete také snížit počet uzlů. Když uzly opustí cluster, služby se přesunou mimo tyto uzly a zatížení na zbývajících uzlech se zvýší. Snížení počtu uzlů v clusteru běžícím v Azure vám může ušetřit peníze, protože platíte za počet virtuálních počítačů, které používáte, a ne za úlohy na těchto virtuálních počítačích.
- Výhody: Nekonečné měřítko, teoreticky. Pokud je vaše aplikace navržená pro škálovatelnost, můžete povolit neomezený růst přidáním dalších uzlů. Nástroje v cloudových prostředích usnadňují přidávání nebo odebírání uzlů, takže je snadné upravit kapacitu a platit jenom za prostředky, které používáte.
- Nevýhody: Aplikace musí být navrženy pro škálovatelnost. Databáze aplikací a trvalost můžou vyžadovat další architekturu, aby bylo možné škálovat i další architekturu. Spolehlivé kolekce ve stavových službách Service Fabric ale usnadňují škálování dat aplikace.
Škálovací sady virtuálních počítačů jsou výpočetní prostředek Azure, který můžete použít k nasazení a správě kolekce virtuálních počítačů jako sady. Každý typ uzlu definovaný v clusteru Azure je nastavený jako samostatná škálovací sada. Každý typ uzlu se pak dá nezávisle škálovat, má otevřené různé sady portů a může mít různé metriky kapacity.
Při škálování clusteru Azure mějte na paměti následující pokyny:
- Primární typy uzlů, na kterých běží produkční úlohy, by vždy měly mít pět nebo více uzlů.
- Typy neprimárních uzlů, na kterých běží stavové produkční úlohy, by vždy měly mít pět nebo více uzlů.
- Neprimární typy uzlů, na kterých běží bezstavové produkční úlohy, by vždy měly mít dva nebo více uzlů.
- Jakýkoli typ uzlu úrovně stálosti gold nebo Silver by měl vždy obsahovat pět nebo více uzlů.
- Neodebívejte náhodné instance nebo uzly virtuálních počítačů z typu uzlu, vždy používejte funkci škálování škálovací sady virtuálních počítačů. Odstranění náhodných instancí virtuálních počítačů může nepříznivě ovlivnit schopnost systémů správně vyrovnávat zatížení.
- Pokud používáte pravidla automatického škálování, nastavte pravidla tak, aby se škálování (odebírání instancí virtuálních počítačů) provádělo najednou jeden uzel. Vertikální snížení kapacity více instancí najednou není bezpečné.
Vzhledem k tomu, že typy uzlů Service Fabric ve vašem clusteru se skládají ze škálovacích sad virtuálních počítačů v back-endu, můžete nastavit pravidla automatického škálování nebo ručně škálovat jednotlivé typy uzlů nebo škálovací sadu virtuálních počítačů.
Programové škálování
V mnoha scénářích jsou dobrým řešením škálování clusteru ručně nebo s pravidly automatického škálování. V případě pokročilejších scénářů ale nemusí být vhodné. Mezi potenciální nevýhody těchto přístupů patří:
- Ruční škálování vyžaduje, abyste se přihlásili a explicitně požádali o operace škálování. Pokud se operace škálování vyžadují často nebo v nepředvídatelných časech, nemusí být tento přístup vhodným řešením.
- Pokud pravidla automatického škálování odeberou instanci ze škálovací sady virtuálních počítačů, neodeberou automaticky znalosti tohoto uzlu z přidruženého clusteru Service Fabric, pokud typ uzlu nemá úroveň stálosti Silver nebo Gold. Vzhledem k tomu, že pravidla automatického škálování fungují na úrovni škálovací sady (nikoli na úrovni Service Fabric), můžou pravidla automatického škálování odebírat uzly Service Fabric bez jejich řádného vypnutí. Toto hrubé odebrání uzlu ponechá stav uzlu Service Fabric po operacích se škálováním na více instancí. Jednotlivec (nebo služba) by potřeboval pravidelně vyčistit odebraný stav uzlu v clusteru Service Fabric.
- Typ uzlu s úrovní stálosti gold nebo Silver automaticky vyčistí odebrané uzly, takže není potřeba žádné další vyčištění.
- Přestože pravidla automatického škálování podporují mnoho metrik, stále je to omezená sada. Pokud váš scénář volá škálování na základě určité metriky, která není v dané sadě pokryta, nemusí být vhodná pravidla automatického škálování.
Způsob, jakým byste měli přistupovat ke škálování Service Fabric, závisí na vašem scénáři. Pokud je škálování neobvyklé, je pravděpodobně dostatečná možnost přidávat nebo odebírat uzly ručně. V případě složitějších scénářů nabízejí pravidla automatického škálování a sady SDK schopnost škálovat programově výkonné alternativy.
Existují rozhraní API Azure, která aplikacím umožňují programově pracovat se škálovacími sadami virtuálních počítačů a clustery Service Fabric. Pokud pro váš scénář nefungují existující možnosti automatického škálování, tato rozhraní API umožňují implementovat vlastní logiku škálování.
Jedním z přístupů k implementaci této "domovské" funkce automatického škálování je přidání nové bezstavové služby do aplikace Service Fabric pro správu operací škálování. Vytvoření vlastní služby škálování poskytuje nejvyšší míru kontroly a přizpůsobení chování vaší aplikace. To může být užitečné pro scénáře vyžadující přesnou kontrolu nad tím, kdy nebo jak se aplikace škáluje nebo odsazuje. Tento ovládací prvek ale přináší kompromis mezi složitostí kódu. Použití tohoto přístupu znamená, že potřebujete vlastní kód škálování, který není triviální. V rámci metody služby RunAsync
může sada triggerů určit, jestli se vyžaduje škálování (včetně kontroly parametrů, jako je maximální velikost clusteru a snížení kapacity).
Rozhraní API používané pro interakce škálovací sady virtuálních počítačů (ke kontrole aktuálního počtu instancí virtuálních počítačů a k jeho úpravě) je plynulou výpočetní knihovnou služby Azure Management. Fluent compute library poskytuje snadno použitelné rozhraní API pro interakci se škálovacími sadami virtuálních počítačů. K interakci se samotným clusterem Service Fabric použijte System.Fabric.FabricClient.
Kód škálování ale nemusí běžet jako služba v clusteru, aby se ale škáloval. Obě IAzure
a FabricClient
můžou se vzdáleně připojit k přidruženým prostředkům Azure, takže služba škálování může být snadno konzolová aplikace nebo služba Windows spuštěná mimo aplikaci Service Fabric.
Na základě těchto omezení můžete chtít implementovat více přizpůsobené modely automatického škálování.
Vertikální navýšení a snížení kapacity nebo vertikální škálování
Změní prostředky (procesor, paměť nebo úložiště) uzlů v clusteru.
- Výhody: Architektura softwaru a aplikací zůstává stejná.
- Nevýhody: Konečné škálování, protože existuje omezení, jak moc můžete zvýšit prostředky na jednotlivých uzlech. Výpadek, protože budete muset převést fyzické nebo virtuální počítače do offline režimu, abyste mohli přidávat nebo odebírat prostředky.
Škálovací sady virtuálních počítačů jsou výpočetní prostředek Azure, který můžete použít k nasazení a správě kolekce virtuálních počítačů jako sady. Každý typ uzlu definovaný v clusteru Azure je nastavený jako samostatná škálovací sada. Každý typ uzlu je pak možné spravovat samostatně. Škálování typu uzlu nahoru nebo dolů zahrnuje přidání nového typu uzlu (s aktualizovanou skladovou položku virtuálního počítače) a odebrání starého typu uzlu.
Při škálování clusteru Azure mějte na paměti následující pokyny:
- Pokud vertikálně snížit kapacitu primárního typu uzlu, nikdy byste ho neměli vertikálně snížit, než umožňuje úroveň spolehlivosti.
Proces škálování typu uzlu nahoru nebo dolů se liší v závislosti na tom, jestli se jedná o neprimární nebo primární typ uzlu.
Škálování neprimárních typů uzlů
Vytvořte nový typ uzlu s potřebnými prostředky. Aktualizujte omezení umístění spuštěných služeb tak, aby zahrnovala nový typ uzlu. Postupně (po jednom) snižte počet instancí původního počtu instancí typu uzlu na nulu, aby nebyla ovlivněna spolehlivost clusteru. Služby se postupně migrují na nový typ uzlu, protože se vyřadí starý typ uzlu z provozu.
Škálování primárního typu uzlu
Nasaďte nový primární typ uzlu s aktualizovanou skladovou položku virtuálního počítače a potom po jednom zakažte instance původního typu primárního uzlu, aby systémové služby migrovali do nové škálovací sady. Ověřte, že cluster a nové uzly jsou v pořádku, a pak odeberte původní škálovací sadu a stav uzlu pro odstraněné uzly.
Pokud to není možné, můžete vytvořit nový cluster a obnovit stav aplikace (pokud je k dispozici) ze starého clusteru. Nemusíte obnovovat žádný stav systémové služby, při nasazování aplikací do nového clusteru se znovu vytvoří. Pokud jste v clusteru spouštěli jenom bezstavové aplikace, stačí, když nasadíte aplikace do nového clusteru, nemusíte nic obnovovat.
Další kroky
- Seznamte se se škálovatelností aplikací.
- Horizontální navýšení nebo snížení kapacity clusteru Azure
- Škálování clusteru Azure prostřednictvím kódu programu pomocí fluent azure compute SDK
- Horizontální navýšení nebo snížení kapacity samostatného clusteru