Upgrade aplikace Service Fabric
Aplikace Azure Service Fabric je kolekce služeb. Během upgradu Service Fabric porovná nový manifest aplikace s předchozí verzí a určí, které služby v aplikaci vyžadují aktualizace. Service Fabric porovnává verzi v manifestech služby s verzí v předchozí verzi. Pokud se verze služby nezměnila, tato služba se neupgraduje.
Poznámka:
ApplicationParameters se nezachovávají v rámci upgradu aplikace. Aby se zachovaly aktuální parametry aplikace, měl by uživatel nejprve získat parametry a předat je do volání rozhraní API pro upgrade, jak je znázorněno níže:
$myApplication = Get-ServiceFabricApplication -ApplicationName fabric:/myApplication
$appParamCollection = $myApplication.ApplicationParameters
$applicationParameterMap = @{}
foreach ($pair in $appParamCollection)
{
$applicationParameterMap.Add($pair.Name, $pair.Value);
}
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/myApplication -ApplicationTypeVersion 2.0.0 -ApplicationParameter $applicationParameterMap -Monitored -FailureAction Rollback
Přehled postupných upgradů
Při postupném upgradu aplikace se upgrade provádí ve fázích. V každé fázi se upgrade použije na podmnožinu uzlů v clusteru označovanou jako aktualizační doména. V důsledku toho zůstává aplikace po celou dobu upgradu dostupná. Během upgradu může cluster obsahovat kombinaci starých a nových verzí.
Z tohoto důvodu musí být obě verze dopředu a zpětně kompatibilní. Pokud nejsou kompatibilní, správce aplikace zodpovídá za přípravu vícefázového upgradu za zachování dostupnosti. V několikafázovém upgradu je prvním krokem upgrade na zprostředkující verzi aplikace, která je kompatibilní s předchozí verzí. Druhým krokem je upgrade konečné verze, která přeruší kompatibilitu s předaktualizační verzí, ale je kompatibilní s zprostředkující verzí.
Při konfiguraci clusteru se v manifestu clusteru zadají aktualizační domény. Aktualizační domény nedostávají aktualizace v určitém pořadí. Aktualizační doména je logická jednotka nasazení aplikace. Aktualizační domény umožňují službám zůstat ve vysoké dostupnosti během upgradu.
Nepřístupné upgrady jsou možné, pokud je upgrade použit pro všechny uzly v clusteru, což je případ, kdy má aplikace pouze jednu aktualizační doménu. Tento přístup se nedoporučuje, protože služba přestane fungovat a není dostupná v době upgradu. Kromě toho Azure neposkytuje žádné záruky, když je cluster nastavený jenom s jednou aktualizační doménou.
Po dokončení upgradu zůstanou všechny služby a repliky (instance) ve stejné verzi, tj. pokud bude upgrade úspěšný, aktualizují se na novou verzi; pokud se upgrade nezdaří a vrátí se zpět, vrátí se zpět do staré verze.
Kontroly stavu během upgradů
Pro upgrade je potřeba nastavit zásady stavu (nebo je možné použít výchozí hodnoty). Upgrade se označuje jako úspěšný, když se všechny aktualizační domény upgradují v zadaných časových limitech a když se všechny aktualizační domény považují za v pořádku. Doména aktualizace, která je v pořádku, znamená, že doména aktualizace prošla všemi kontrolami stavu zadanými v zásadách stavu. Zásady stavu můžou například věřit, že všechny služby v instanci aplikace musí být v pořádku, protože Service Fabric definuje stav.
Zásady stavu a kontroly během upgradu Service Fabric jsou nezávislé na službě a aplikacích. To znamená, že nejsou provedeny žádné testy specifické pro službu. Vaše služba může mít například požadavek na propustnost, ale Service Fabric nemá informace ke kontrole propustnosti. Projděte si články o stavu kontrol, které se provádějí. Kontroly, ke kterým dochází během upgradu, zahrnují testy, jestli se balíček aplikace zkopíroval správně, jestli byla instance spuštěna atd.
Stav aplikace je agregace podřízených entit aplikace. Service Fabric stručně řečeno vyhodnocuje stav aplikace prostřednictvím stavu, který je hlášený v aplikaci. Tímto způsobem také vyhodnotí stav všech služeb pro aplikaci. Service Fabric dále vyhodnocuje stav aplikačních služeb agregací stavu podřízených objektů, jako je replika služby. Po splnění zásad stavu aplikace může upgrade pokračovat. Pokud dojde k porušení zásad stavu, upgrade aplikace selže.
Režimy upgradu
Režim, který doporučujeme pro upgrade aplikace, je monitorovaný režim, což je běžně používaný režim. Monitorovaný režim provádí upgrade v jedné aktualizační doméně a pokud všechny kontroly stavu proběhnou (podle zadaných zásad), přejde automaticky na další aktualizační doménu. Pokud dojde k selhání kontrol stavu nebo vypršení časového limitu, upgrade se buď vrátí zpět pro aktualizační doménu, nebo se režim změní na nesledovanou příručku. Upgrade můžete nakonfigurovat tak, aby pro neúspěšné upgrady zvolil jeden z těchto dvou režimů.
Nemonitorovaný ruční režim vyžaduje ruční zásah po každém upgradu v aktualizační doméně, aby se upgrade zahájil v další aktualizační doméně. Neprovádí se žádné kontroly stavu Service Fabric. Správce provede kontroly stavu nebo stavu před zahájením upgradu v další aktualizační doméně.
Upgrade výchozích služeb
Některé výchozí parametry služby definované v manifestu aplikace je také možné upgradovat v rámci upgradu aplikace. V rámci upgradu je možné změnit pouze parametry služby, které podporují změny prostřednictvím update-ServiceFabricService . Chování změny výchozích služeb během upgradu aplikace je následující:
- Vytvoří se výchozí služby v novém manifestu aplikace, které ještě v clusteru neexistují.
- Výchozí služby, které existují v předchozích i nových manifestech aplikace, se aktualizují. Parametry výchozí služby v novém manifestu aplikace přepíší parametry existující služby. Upgrade aplikace se automaticky vrátí, pokud se aktualizace výchozí služby nezdaří.
- Výchozí služby, které v novém manifestu aplikace neexistují, se odstraní, pokud existují v clusteru. Upozorňujeme, že odstranění výchozí služby způsobí odstranění veškerého stavu dané služby a nedá se vrátit zpět.
Při vrácení upgradu aplikace se výchozí parametry služby vrátí zpět ke starým hodnotám před spuštěním upgradu, ale odstraněné služby se nedají znovu vytvořit se starým stavem.
Tip
Nastavení konfigurace clusteru EnableDefaultServicesUpgrade musí být pravdivé , aby bylo možné povolit pravidla 2) a 3) výše (výchozí aktualizace a odstranění služby). Tato funkce se podporuje od verze 5.5 Service Fabric.
Upgrade více aplikací s využitím koncových bodů HTTPS
Při použití protokolu HTTPS je potřeba dávat pozor, abyste nepoužíli stejný port pro různé instance stejné aplikace. Důvodem je, že Service Fabric nebude moct upgradovat certifikát pro jednu z instancí aplikace. Pokud například aplikace 1 nebo aplikace 2 chtějí upgradovat svůj certifikát 1 na certifikát 2. Když k upgradu dojde, service Fabric možná vyčistil registraci certifikátu 1 s http.sys i když ji druhá aplikace stále používá. Kvůli tomu Service Fabric zjistí, že na portu je už zaregistrovaná jiná instance aplikace s certifikátem (kvůli http.sys) a že operace selže.
Service Fabric proto nepodporuje upgrade dvou různých služeb pomocí stejného portu v různých instancích aplikace. Jinými slovy, nemůžete použít stejný certifikát na různých službách na stejném portu. Pokud potřebujete mít sdílený certifikát na stejném portu, musíte zajistit, aby služby byly umístěny na různých počítačích s omezením umístění. Případně zvažte použití dynamických portů Service Fabric, pokud je to možné pro každou službu v každé instanci aplikace.
Pokud se zobrazí selhání upgradu s https, zobrazí se upozornění na chybu oznamující, že rozhraní API windows HTTP Serveru nepodporuje více certifikátů pro aplikace, které sdílejí port.
Vývojový diagram upgradu aplikace
Vývojový diagram následující v tomto odstavci vám pomůže pochopit proces upgradu aplikace Service Fabric. Konkrétně tok popisuje, jak dochází k vypršení časového limitu, včetně HealthCheckStableDuration, HealthCheckRetryTimeout a UpgradeHealthCheckInterval, pomáhá řídit, kdy se upgrade v jedné aktualizační doméně považuje za úspěch nebo selhání.
Další kroky
Upgrade aplikace pomocí sady Visual Studio vás provede upgradem aplikace pomocí sady Visual Studio.
Upgrade aplikace pomocí PowerShellu vás provede upgradem aplikace pomocí PowerShellu.
Pomocí parametrů upgradu můžete řídit, jak se vaše aplikace upgraduje.
Díky tomu, že se naučíte používat serializaci dat, vaše aplikace upgraduje.
Informace o používání pokročilých funkcí při upgradu aplikace najdete v části Pokročilá témata.
Při řešení běžných problémů s upgrady aplikací postupujte podle kroků v tématu Řešení potíží s upgrady aplikací.