Service Fabric-toepassingsupgrade met behulp van PowerShell


De meest gebruikte en aanbevolen upgradebenadering is de bewaakte rolling upgrade. Azure Service Fabric bewaakt de status van de toepassing die wordt bijgewerkt op basis van een set statusbeleidsregels. Zodra een updatedomein (UD) is bijgewerkt, evalueert Service Fabric de toepassingsstatus en gaat naar het volgende updatedomein of mislukt de upgrade, afhankelijk van het statusbeleid.

Een bewaakte toepassingsupgrade kan worden uitgevoerd met behulp van de beheerde of systeemeigen API's, PowerShell, Azure CLI, Java of REST. Zie Uw toepassing upgraden met Visual Studio voor instructies over het uitvoeren van een upgrade met Visual Studio.

Met door Service Fabric bewaakte rolling upgrades kan de toepassingsbeheerder het statusevaluatiebeleid configureren dat Service Fabric gebruikt om te bepalen of de toepassing in orde is. Bovendien kan de beheerder de actie configureren die moet worden uitgevoerd wanneer de statusevaluatie mislukt (bijvoorbeeld het uitvoeren van een automatische terugdraaiactie). In deze sectie wordt een bewaakte upgrade beschreven voor een van de SDK-voorbeelden die gebruikmaken van PowerShell.

Bekijk deze pagina voor een trainingsvideo die u ook begeleidt bij een toepassingsupgrade:

Notitie

ApplicationParameters blijven niet behouden tijdens een toepassingsupgrade. Om de huidige toepassingsparameters te behouden, moet de gebruiker eerst de parameters ophalen en deze doorgeven aan de upgrade-API-aanroep, zoals hieronder:

$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

Stap 1: het voorbeeld van visuele objecten bouwen en implementeren

Bouw en publiceer de toepassing door met de rechtermuisknop op het toepassingsproject, VisualObjectsApplication, te klikken en de opdracht Publiceren te selecteren. Zie zelfstudie voor het upgraden van Service Fabric-toepassingen voor meer informatie. U kunt ook PowerShell gebruiken om uw toepassing te implementeren.

Notitie

Voordat een van de Service Fabric-opdrachten kan worden gebruikt in PowerShell, moet u eerst verbinding maken met het cluster met behulp van de Connect-ServiceFabricCluster cmdlet. Op dezelfde manier wordt ervan uitgegaan dat het cluster al is ingesteld op uw lokale computer. Zie het artikel over het instellen van uw Service Fabric-ontwikkelomgeving.

Nadat u het project in Visual Studio hebt gemaakt, kunt u de PowerShell-opdracht Copy-ServiceFabricApplicationPackage gebruiken om het toepassingspakket naar de ImageStore te kopiëren. Als u het app-pakket lokaal wilt controleren, gebruikt u de cmdlet Test-ServiceFabricApplicationPackage . De volgende stap is het registreren van de toepassing bij de Service Fabric-runtime met behulp van de cmdlet Register-ServiceFabricApplicationType . De volgende stap is het starten van een exemplaar van de toepassing met behulp van de cmdlet New-ServiceFabricApplication . Deze drie stappen zijn vergelijkbaar met het gebruik van de menuopdracht Implementeren in Visual Studio. Zodra het inrichten is voltooid, moet u het gekopieerde toepassingspakket uit het installatiekopieënarchief opschonen om de verbruikte resources te verminderen. Als een toepassingstype niet meer vereist is, moet het om dezelfde reden de registratie ervan ongedaan maken. Zie Toepassingen implementeren en verwijderen met PowerShell voor meer informatie.

U kunt nu Service Fabric Explorer gebruiken om het cluster en de toepassing weer te geven. De toepassing heeft een webservice waarnaar kan worden genavigeerd in Internet Explorer door in de adresbalk te typen http://localhost:8081/visualobjects . Als het goed is, ziet u een aantal zwevende visuele objecten in het scherm bewegen. Daarnaast kunt u Get-ServiceFabricApplication gebruiken om de status van de toepassing te controleren.

Stap 2: Het voorbeeld van visuele objecten bijwerken

Mogelijk ziet u dat met de versie die in stap 1 is geïmplementeerd, de visuele objecten niet worden gedraaid. We gaan deze toepassing upgraden naar een toepassing waarin de visuele objecten ook worden geroteerd.

Selecteer het project VisualObjects.ActorService in de VisualObjects-oplossing en open het bestand StatefulVisualObjectActor.cs. Navigeer in dat bestand naar de methode MoveObject, commentaar uit this.State.Move()en verwijder commentaar this.State.Move(true). Met deze wijziging worden de objecten gedraaid nadat de service is bijgewerkt.

We moeten ook het ServiceManifest.xml-bestand (onder PackageRoot) van het project VisualObjects.ActorService bijwerken. Werk het CodePackage en de serviceversie bij naar 2.0 en de bijbehorende regels in het ServiceManifest.xml-bestand . U kunt de optie Manifestbestanden bewerken in Visual Studio gebruiken nadat u met de rechtermuisknop op de oplossing hebt geklikt om het manifestbestand te wijzigen.

Nadat de wijzigingen zijn aangebracht, moet het manifest er als volgt uitzien (gemarkeerde gedeelten geven de wijzigingen aan):

<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">

Nu is het ApplicationManifest.xml-bestand (te vinden onder het project VisualObjects onder de VisualObjects-oplossing ) bijgewerkt naar versie 2.0 van het project VisualObjects.ActorService . Daarnaast wordt de toepassingsversie bijgewerkt naar 2.0.0.0 van 1.0.0.0. De ApplicationManifest.xml moet eruitzien als het volgende codefragment:

<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" />

Bouw nu het project door alleen het project ActorService te selecteren en vervolgens met de rechtermuisknop te klikken en de optie Bouwen te selecteren in Visual Studio. Als u Alles opnieuw opbouwen selecteert, moet u de versies voor alle projecten bijwerken, omdat de code dan zou zijn gewijzigd. Vervolgens gaan we de bijgewerkte toepassing inpakken door met de rechtermuisknop op VisualObjectsApplication te klikken, het menu Service Fabric te selecteren en Pakket te kiezen. Met deze actie maakt u een toepassingspakket dat kan worden geïmplementeerd. Uw bijgewerkte toepassing is gereed om te worden geïmplementeerd.

Stap 3: Beslissen over statusbeleid en upgradeparameters

Maak uzelf vertrouwd met de upgradeparameters van de toepassing en het upgradeproces om een goed inzicht te krijgen in de verschillende upgradeparameters, time-outs en toegepast statuscriterium. Voor dit scenario is het evaluatiecriterium voor de servicestatus ingesteld op de standaardwaarden (en aanbevolen waarden), wat betekent dat alle services en exemplaren na de upgrade in orde moeten zijn.

Laten we de HealthCheckStableDuration echter verhogen naar 180 seconden (zodat de services ten minste 120 seconden in orde zijn voordat de upgrade naar het volgende updatedomein wordt uitgevoerd). We gaan ook UpgradeDomainTimeout instellen op 1200 seconden en UpgradeTimeout op 3000 seconden.

Ten slotte gaan we ook UpgradeFailureAction instellen om terug te draaien. Voor deze optie moet Service Fabric de toepassing terugdraaien naar de vorige versie als er problemen optreden tijdens de upgrade. Bij het starten van de upgrade (in stap 4), worden de volgende parameters opgegeven:

FailureAction = Terugdraaien

HealthCheckStableDurationSec = 180

UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000

Stap 4: toepassing voorbereiden voor upgrade

De toepassing is nu gebouwd en klaar om te worden bijgewerkt. Als u als beheerder een PowerShell-venster opent en Get-ServiceFabricApplication typt, moet u weten dat het toepassingstype 1.0.0.0 van VisualObjects is dat is geïmplementeerd.

Het toepassingspakket wordt opgeslagen in het volgende relatieve pad waar u de Service Fabric SDK ongedaan maakt: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. U vindt de map Package in die map, waarin het toepassingspakket is opgeslagen. Controleer de tijdstempels om er zeker van te zijn dat dit de meest recente build is (mogelijk moet u de paden ook op de juiste manier wijzigen).

Nu gaan we het bijgewerkte toepassingspakket kopiëren naar de Service Fabric ImageStore (waar de toepassingspakketten worden opgeslagen door Service Fabric). De parameter ApplicationPackagePathInImageStore informeert Service Fabric waar het toepassingspakket kan worden gevonden. We hebben de bijgewerkte toepassing in 'VisualObjects_V2' geplaatst met de volgende opdracht (mogelijk moet u paden opnieuw op de juiste manier wijzigen).

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

De volgende stap is het registreren van deze toepassing bij Service Fabric, die kan worden uitgevoerd met de opdracht Register-ServiceFabricApplicationType :

Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"

Als de voorgaande opdracht niet slaagt, moet u waarschijnlijk alle services opnieuw opbouwen. Zoals vermeld in stap 2, moet u mogelijk ook uw webserviceversie bijwerken.

Het wordt aanbevolen om het toepassingspakket te verwijderen nadat de toepassing is geregistreerd. Als u toepassingspakketten verwijdert uit het installatiekopieënarchief, worden systeembronnen vrijgemaakt. Het bewaren van ongebruikte toepassingspakketten verbruikt schijfopslag en leidt tot prestatieproblemen van de toepassing.

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

Stap 5: de toepassingsupgrade starten

Nu zijn we klaar om de toepassingsupgrade te starten met behulp van de opdracht Start-ServiceFabricApplicationUpgrade :

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

De naam van de toepassing is hetzelfde als die is beschreven in het ApplicationManifest.xml-bestand . Service Fabric gebruikt deze naam om te bepalen welke toepassing wordt bijgewerkt. Als u de time-outs te kort instelt, krijgt u mogelijk een foutbericht waarin het probleem wordt vermeld. Raadpleeg de sectie probleemoplossing of verhoog de time-outs.

Naarmate de toepassing wordt bijgewerkt, kunt u deze nu bewaken met behulp van Service Fabric Explorer of met behulp van de PowerShell-opdracht Get-ServiceFabricApplicationUpgrade:

Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects

In een paar minuten moet de status die u hebt verkregen met behulp van de voorgaande PowerShell-opdracht, aangeven dat alle updatedomeinen zijn bijgewerkt (voltooid). En u ziet dat de visuele objecten in uw browservenster zijn gaan draaien.

U kunt proberen een upgrade uit te voeren van versie 2 naar versie 3 of van versie 2 naar versie 1 als oefening. Overstappen van versie 2 naar versie 1 wordt ook beschouwd als een upgrade. Speel met time-outs en gezondheidsbeleid om uzelf vertrouwd te maken met deze beleidsregels. Wanneer u implementeert in een Azure-cluster, moeten de parameters correct worden ingesteld. Het is goed om de time-outs voorzichtig in te stellen.

Volgende stappen

Bij het upgraden van uw toepassing met Visual Studio wordt u begeleid bij het uitvoeren van een toepassingsupgrade met behulp van Visual Studio.

Bepaal hoe uw toepassing wordt bijgewerkt met behulp van upgradeparameters.

Maak uw toepassingsupgrades compatibel door te leren hoe u gegevensserialisatie gebruikt.

Raadpleeg Geavanceerde onderwerpen voor meer informatie over het gebruik van geavanceerde functionaliteit tijdens het upgraden van uw toepassing.

Los veelvoorkomende problemen in toepassingsupgrades op door te verwijzen naar de stappen in Problemen met toepassingsupgrades oplossen.