Upgrade aplikace Service Fabric pomocí PowerShellu


Nejčastěji používaným a doporučeným přístupem k upgradu je monitorovaný postupný upgrade. Azure Service Fabric monitoruje stav upgradované aplikace na základě sady zásad stavu. Po upgradu aktualizační domény Service Fabric vyhodnotí stav aplikace a buď pokračuje k další aktualizační doméně, nebo upgrade selže v závislosti na zásadách stavu.

K upgradu monitorované aplikace můžete použít spravovaná nebo nativní rozhraní API, PowerShell, Azure CLI, Javu nebo REST. Pokyny k provedení upgradu pomocí sady Visual Studio najdete v tématu Upgrade aplikace pomocí sady Visual Studio.

Při monitorování kumulativních upgradů Service Fabric může správce aplikace nakonfigurovat zásady vyhodnocení stavu, které Service Fabric používá k určení, jestli je aplikace v pořádku. Kromě toho může správce nakonfigurovat akci, která se má provést, když se vyhodnocení stavu nezdaří (například automatické vrácení zpět).) Tato část vás provede monitorovaným upgradem pro některou z ukázek sady SDK, která používá PowerShell.

Na této stránce najdete školicí video, které vás také provede upgradem aplikace:

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

Krok 1: Sestavení a nasazení ukázky vizuálních objektů

Sestavte a publikujte aplikaci tak, že kliknete pravým tlačítkem na projekt aplikace, VisualObjectsApplication a vyberete příkaz Publikovat . Další informace najdete v kurzu upgradu aplikace Service Fabric. Případně můžete k nasazení aplikace použít PowerShell.

Poznámka:

Před použitím některého z příkazů Service Fabric v PowerShellu se nejprve musíte připojit ke clusteru pomocí rutiny Connect-ServiceFabricCluster . Podobně se předpokládá, že cluster už je nastavený na místním počítači. Přečtěte si článek o nastavení vývojového prostředí Service Fabric.

Po sestavení projektu v sadě Visual Studio můžete pomocí příkazu PowerShell Copy-ServiceFabricApplicationPackage zkopírovat balíček aplikace do ImageStore. Pokud chcete balíček aplikace ověřit místně, použijte rutinu Test-ServiceFabricApplicationPackage . Dalším krokem je registrace aplikace do modulu runtime Service Fabric pomocí rutiny Register-ServiceFabricApplicationType . Následující krok spočívá v spuštění instance aplikace pomocí rutiny New-ServiceFabricApplication . Tyto tři kroky jsou podobné použití položky nabídky Nasadit v sadě Visual Studio. Po dokončení zřizování byste měli vyčistit zkopírovaný balíček aplikace z úložiště imagí, abyste snížili spotřebované prostředky. Pokud už typ aplikace není povinný, měl by být z stejného důvodu zrušený. Další informace najdete v tématu Nasazení a odebrání aplikací pomocí PowerShellu .

Teď můžete pomocí Service Fabric Exploreru zobrazit cluster a aplikaci. Aplikace má webovou službu, na kterou lze přejít v Internet Exploreru zadáním http://localhost:8081/visualobjects do adresního řádku. Na obrazovce by se měly pohybovat některé plovoucí vizuální objekty. Kromě toho můžete pomocí get-ServiceFabricApplication zkontrolovat stav aplikace.

Krok 2: Aktualizace ukázky vizuálních objektů

Můžete si všimnout, že s verzí nasazenou v kroku 1 se objekty vizuálu nestřídají. Pojďme tuto aplikaci upgradovat na takovou, kde se objekty vizuálu také otočí.

Vyberte projekt VisualObjects.ActorService v rámci řešení VisualObjects a otevřete soubor StatefulVisualObjectActor.cs. V daném souboru přejděte na metodu MoveObject, okomentujte this.State.Move()a odkomentujte this.State.Move(true). Tato změna otočí objekty po upgradu služby.

Musíme také aktualizovat soubor ServiceManifest.xml (v části PackageRoot) projektu VisualObjects.ActorService. Aktualizujte CodePackage a verzi služby na 2.0 a odpovídající řádky v souboru ServiceManifest.xml. Po kliknutí pravým tlačítkem na řešení můžete provést změny souboru manifestu pomocí možnosti Upravit soubory manifestu sady Visual Studio.

Po provedení změn by manifest měl vypadat takto (zvýrazněné části zobrazují změny):

<ServiceManifestName="VisualObjects.ActorService" Version="2.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">

<CodePackageName="Code" Version="2.0">

Teď se soubor ApplicationManifest.xml (nalezený v projektu VisualObjects v řešení VisualObjects ) aktualizuje na verzi 2.0 projektu VisualObjects.ActorService . Kromě toho se verze aplikace aktualizuje na verzi 2.0.0.0 z verze 1.0.0.0. ApplicationManifest.xml by měl vypadat jako následující fragment kódu:

<ApplicationManifestxmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VisualObjects" ApplicationTypeVersion="2.0.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

 <ServiceManifestRefServiceManifestName="VisualObjects.ActorService" ServiceManifestVersion="2.0" />

Teď projekt sestavte tak, že vyberete jenom projekt ActorService a pak kliknete pravým tlačítkem myši a vyberete možnost Sestavení v sadě Visual Studio. Pokud vyberete Možnost Znovu sestavit vše, měli byste aktualizovat verze pro všechny projekty, protože kód by se změnil. V dalším kroku zabalme aktualizovanou aplikaci tak, že klikneme pravým tlačítkem na VisualObjectsApplication, vybereme nabídku Service Fabric a zvolíme Balíček. Tato akce vytvoří balíček aplikace, který lze nasadit. Aktualizovaná aplikace je připravená k nasazení.

Krok 3: Rozhodnutí o zásadách stavu a parametrech upgradu

Seznamte se s parametry upgradu aplikace a procesem upgradu, abyste lépe porozuměli různým parametrům upgradu, časovým limitům a použitým kritériím stavu. Pro účely tohoto názorného postupu je kritérium vyhodnocení stavu služby nastavené na výchozí (a doporučené) hodnoty, což znamená, že po upgradu by měly být všechny služby a instance v pořádku .

Pojďme ale zvýšit healthCheckStableDuration na 180 sekund (aby služby byly v pořádku alespoň 120 sekund před upgradem na další aktualizační doménu). Pojďme také nastavit UpgradeDomainTimeout na 1200 sekund a UpgradeTimeout na 3000 sekund.

Nakonec nastavíme upgradeFailureAction na vrácení zpět. Tato možnost vyžaduje, aby Service Fabric vrátila aplikaci zpět na předchozí verzi, pokud během upgradu narazí na nějaké problémy. Při spuštění upgradu (v kroku 4) jsou tedy zadány následující parametry:

FailureAction = vrácení zpět

HealthCheckStableDurationSec = 180

UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000

Krok 4: Příprava aplikace na upgrade

Teď je aplikace sestavená a připravená k upgradu. Pokud otevřete okno PowerShellu jako správce a zadáte Get-ServiceFabricApplication, měli byste vědět, že se jedná o typ aplikace 1.0.0.0 nasazených objektů VisualObjects .

Balíček aplikace je uložen pod následující relativní cestou, kde jste nekomprimovali sadu Service Fabric SDK: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. V daném adresáři byste měli najít složku Package, ve které je balíček aplikace uložený. Zkontrolujte časová razítka a ujistěte se, že se jedná o nejnovější build (možná budete muset upravit i cesty).

Teď zkopírujeme aktualizovaný balíček aplikace do Service Fabric ImageStore (kde jsou balíčky aplikací uložené službou Service Fabric). Parametr ApplicationPackagePathInImageStore informuje Service Fabric, kde může najít balíček aplikace. Aktualizovanou aplikaci jsme dali do "VisualObjects_V2" pomocí následujícího příkazu (možná budete muset upravit cesty znovu odpovídajícím způsobem).

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug\Package -ApplicationPackagePathInImageStore "VisualObjects\_V2"

Dalším krokem je registrace této aplikace ve službě Service Fabric, kterou je možné provést pomocí příkazu Register-ServiceFabricApplicationType :

Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"

Pokud předchozí příkaz neuspěje, pravděpodobně budete potřebovat opětovné sestavení všech služeb. Jak je uvedeno v kroku 2, možná budete muset aktualizovat i verzi webové služby.

Po úspěšné registraci aplikace doporučujeme odebrat balíček aplikace. Odstranění balíčků aplikací z úložiště imagí uvolní systémové prostředky. Udržování nepoužívaných balíčků aplikací spotřebovává diskové úložiště a vede k problémům s výkonem aplikací.

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore "VisualObjects\_V2" -ImageStoreConnectionString fabric:ImageStore

Krok 5: Spuštění upgradu aplikace

Teď jsme všichni připraveni spustit upgrade aplikace pomocí příkazu Start-ServiceFabricApplicationUpgrade :

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000   -FailureAction Rollback -Monitored

Název aplikace je stejný jako v souboru ApplicationManifest.xml . Service Fabric používá tento název k identifikaci aplikace, která se upgraduje. Pokud nastavíte časový limit tak, aby byl příliš krátký, může se zobrazit chybová zpráva s informacemi o problému. Projděte si část řešení potíží nebo zvyšte časový limit.

Když teď upgrade aplikace pokračuje, můžete ho monitorovat pomocí Service Fabric Exploreru nebo pomocí příkazu PowerShellu Get-ServiceFabricApplicationUpgrade :

Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects

Za několik minut by se stav, který jste získali pomocí předchozího příkazu PowerShellu, měl zobrazit stav, že všechny aktualizační domény byly upgradovány (dokončené). A měli byste zjistit, že se objekty vizuálů v okně prohlížeče začaly otáčet.

Jako cvičení můžete zkusit upgradovat z verze 2 na verzi 3 nebo z verze 2 na verzi 1. Přechod z verze 2 na verzi 1 se také považuje za upgrade. Hrajte s časovými limity a zásadami stavu, abyste se s nimi seznámili. Při nasazování do clusteru Azure je potřeba správně nastavit parametry. Je dobré nastavit časové limity konzervativně.

Další kroky

Upgrade aplikace pomocí sady Visual Studio vás provede upgradem aplikace pomocí sady Visual Studio.

Pomocí parametrů upgradu můžete řídit, jak se vaše aplikace upgraduje.

Zkompilujte aplikace kompatibilní tím, že se naučíte používat serializaci dat.

Informace o používání pokročilých funkcí při upgradu aplikace najdete v tématu 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í.