Repliky a instance

Tento článek poskytuje přehled životního cyklu replik stavových služeb a instancí bezstavových služeb.

Instance bezstavových služeb

Instance bezstavové služby je kopie logiky služby, která běží na jednom z uzlů clusteru. Instance v rámci oddílu je jedinečně identifikována pomocí id instance. Životní cyklus instance je modelován v následujícím diagramu:

Životní cyklus instance

InBuild (IB)

Jakmile Resource Manager clusteru určí umístění instance, přejde do tohoto stavu životního cyklu. Instance se spustí na uzlu. Hostitel aplikace se spustí, instance se vytvoří a pak otevře. Po dokončení spuštění instance přejde do připraveného stavu.

Pokud dojde k chybovému ukončení hostitele nebo uzlu aplikace pro tuto instanci, přejde do vyřazeného stavu.

Připraveno (RD)

V připraveném stavu je instance spuštěná a spuštěná na uzlu. Pokud je tato instance spolehlivou službou, byla vyvolána funkce RunAsync .

Pokud dojde k chybovému ukončení hostitele nebo uzlu aplikace pro tuto instanci, přejde do vyřazeného stavu.

Zavírání (CL)

Azure Service Fabric je v závěrečném stavu v procesu vypínání instance na tomto uzlu. K tomuto vypnutí může dojít z mnoha důvodů – například z upgradu aplikace, vyrovnávání zatížení nebo z důvodu odstranění služby. Po dokončení vypnutí přejde do stavu vyřazení.

Vyřazeno (DD)

V vyřazeném stavu už instance na uzlu neběží. V tomto okamžiku Service Fabric udržuje metadata o této instanci, která se nakonec také odstraní.

Poznámka

Z libovolného stavu na vyřazený je možné přejít pomocí možnosti ForceRemove na Remove-ServiceFabricReplica.

Repliky stavových služeb

Replika stavové služby je kopie logiky služby spuštěné na jednom z uzlů clusteru. Replika navíc udržuje kopii stavu této služby. Životní cyklus a chování stavových replik popisují dva související koncepty:

  • Životní cyklus repliky
  • Role repliky

Následující diskuze popisuje trvalé stavové služby. U stavových služeb s nestálými (nebo v paměti) jsou stavy down a vyřazení ekvivalentní.

Životní cyklus repliky

InBuild (IB)

Replika InBuild je replika, která je vytvořená nebo připravená pro připojení k sadě replik. V závislosti na roli repliky má ib různou sémantiku.

Pokud dojde k chybě hostitele aplikace nebo uzlu repliky InBuild, přejde do stavu mimo provoz.

  • Primární repliky InBuild: Primární inBuild jsou první repliky oddílu. K této replice obvykle dochází při vytváření oddílu. Primární repliky InBuild také vznikají, když se všechny repliky oddílu restartují nebo se vyřadí.

  • Repliky idleSecondary InBuild: Jedná se buď o nové repliky vytvořené clusterovou Resource Manager, nebo o existující repliky, které byly vyřazeny a je potřeba je přidat zpět do sady. Tyto repliky jsou před tím, než se můžou připojit k sadě replik jako ActiveSecondary a účastnit se potvrzení operací kvora, jsou tyto repliky před tím, než se primární repliky vytvoří.

  • Repliky ActiveSecondary InBuild: Tento stav je pozorován v některých dotazech. Jedná se o optimalizaci, kdy se sada replik nemění, ale repliku je potřeba sestavit. Samotná replika se řídí přechody počítače s normálním stavem (jak je popsáno v části věnované rolím repliky).

Připraveno (RD)

Připravená replika je replika, která se účastní replikace a potvrzení kvora operací. Stav připraveno se vztahuje na primární a aktivní sekundární repliky.

Pokud dojde k chybovému ukončení hostitele aplikace nebo uzlu připravené repliky, přejde do stavu mimo provoz.

Zavírání (CL)

Replika přejde do koncového stavu v následujících scénářích:

  • Vypnutí kódu repliky: Service Fabric může potřebovat vypnout spuštěný kód repliky. Toto vypnutí může být z mnoha důvodů. Může k tomu dojít například kvůli upgradu aplikace, prostředků infrastruktury nebo infrastruktury nebo kvůli chybě nahlášené replikou. Po zavření repliky přejde do stavu mimo provoz. Trvalý stav přidružený k této replice, která je uložená na disku, se nevyčistí.

  • Odebrání repliky z clusteru: Service Fabric může potřebovat odebrat trvalý stav a vypnout spuštěný kód repliky. Toto vypnutí může být z mnoha důvodů, například vyrovnávání zatížení.

Vyřazeno (DD)

V vyřazeném stavu už instance na uzlu neběží. Na uzlu také nezůstal žádný stav. V tomto okamžiku Service Fabric udržuje metadata o této instanci, která se nakonec také odstraní.

Dolů (D)

Ve stavu mimo provoz není spuštěný kód repliky, ale na daném uzlu existuje trvalý stav této repliky. Replika může být mimo provoz z mnoha důvodů – například kvůli výpadku uzlu, chybě v kódu repliky, upgradu aplikace nebo selhání repliky.

Služba Service Fabric otevře repliku mimo provoz podle potřeby, například když se upgrade na uzlu dokončí.

Role repliky není ve stavu mimo provoz relevantní.

Otevření (OP)

Replika mimo provoz přejde do stavu otevření, když Service Fabric potřebuje repliku znovu spustit. Tento stav může být například po dokončení upgradu kódu aplikace na uzlu.

Pokud dojde k chybovému ukončení hostitele aplikace nebo uzlu pro otvírací repliku, přejde do stavu mimo provoz.

Role repliky není ve stavu otevření relevantní.

StandBy (SB)

Replika StandBy je replika trvalé služby, která se z provozu vrátila a pak se otevřela. Tuto repliku může service Fabric použít, pokud potřebuje do sady replik přidat další repliku (protože replika už má určitou část stavu a proces sestavení je rychlejší). Po vypršení platnosti StandByReplicaKeepDuration se pohotovostní replika zahodí.

Pokud dojde k chybovému ukončení hostitele aplikace nebo uzlu pohotovostní repliky, přejde do stavu mimo provoz.

Role repliky není v pohotovostním stavu relevantní.

Poznámka

Každá replika, která není mimo provoz nebo není spuštěná, se považuje za spuštěnou.

Poznámka

Z libovolného stavu na vyřazený je možné přejít pomocí možnosti ForceRemove na Remove-ServiceFabricReplica.

Role repliky

Role repliky určuje její funkci v sadě replik:

  • Primární (P): V sadě replik je jeden primární server, který je zodpovědný za provádění operací čtení a zápisu.
  • ActiveSecondary (S): Jedná se o repliky, které přijímají aktualizace stavu z primárního serveru, použijí je a pak odesílají zpět potvrzení. Sada replik obsahuje několik aktivních sekundárních serverů. Počet těchto aktivních sekundárních instancí určuje počet chyb, které služba dokáže zpracovat.
  • IdleSecondary (I): Tyto repliky vytváří primární server. Než je možné je povýšit na aktivní sekundární, dostanou z primárního stavu stav.
  • Žádné (N): Tyto repliky nemají v sadě replik odpovědnost.
  • Neznámé (U): Jedná se o počáteční roli repliky před tím, než přijme jakékoli volání rozhraní ChangeRole API ze Služby Fabric.

Následující diagram znázorňuje přechody rolí repliky a několik ukázkových scénářů, ve kterých k nim může dojít:

Role repliky

  • U –> P: Vytvoření nové primární repliky.
  • U –> I: Vytvoření nové nečinné repliky.
  • U –> N: Odstranění pohotovostní repliky.
  • I –> S: Povýšení nečinné sekundární na aktivní sekundární, aby se její uznání podílelo na kvoru.
  • I –> P: Povýšení nečinného sekundárního na primární. K tomu může dojít při speciálních rekonfiguracích, pokud je nečinná sekundární aplikace správným kandidátem na primární.
  • I –> N: Odstranění nečinné sekundární repliky.
  • S –> P: Povýšení aktivní sekundární na primární. Příčinou může být převzetí služeb při selhání primárního nebo primárního přesunu iniciovaného clusterovým Resource Manager. Může se například jednat o reakci na upgrade aplikace nebo vyrovnávání zatížení.
  • S –> N: Odstranění aktivní sekundární repliky.
  • P –> S: Degradace primární repliky. Důvodem může být primární přesun iniciovaný clusterovým Resource Manager. Může se například jednat o reakci na upgrade aplikace nebo vyrovnávání zatížení.
  • P–> N: Odstranění primární repliky.

Poznámka

Programovací modely vyšší úrovně, jako jsou Reliable Actors a Reliable Services, před vývojářem skrývají koncept rolí replik. V herci je pojem role nepotřebný. Ve službách je to pro většinu scénářů do značné míry zjednodušené.

Další kroky

Další informace o konceptech Service Fabric najdete v následujícím článku:

Životní cyklus Reliable Services – C#