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 status van de toepassing en gaat het 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. Daarnaast kan de beheerder de actie configureren die moet worden uitgevoerd wanneer de statusevaluatie mislukt (bijvoorbeeld een automatische terugdraaibewerking uitvoeren.) In deze sectie wordt een bewaakte upgrade beschreven voor een van de SDK-voorbeelden die gebruikmaken van PowerShell.
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 visualobjecten 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 de 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 gebouwd, kunt u de PowerShell-opdracht Copy-ServiceFabricApplicationPackage gebruiken om het toepassingspakket naar de ImageStore te kopiëren. Als u het app-pakket lokaal wilt verifiëren, 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 dit om dezelfde reden ongedaan worden gesteld. Zie Toepassingen implementeren en verwijderen met Behulp van PowerShell voor meer informatie.
Nu kunt u 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
. U ziet een aantal zwevende visuele objecten die in het scherm bewegen. Daarnaast kunt u Get-ServiceFabricApplication gebruiken om de toepassingsstatus te controleren.
Stap 2: het voorbeeld van visuele objecten bijwerken
Mogelijk merkt u dat de visualobjecten niet worden gedraaid met de versie die is geïmplementeerd in stap 1. We gaan deze toepassing upgraden naar een toepassing waar de visuele objecten ook draaien.
Selecteer het project VisualObjects.ActorService in de VisualObjects-oplossing en open het bestand StatefulVisualObjectActor.cs. Navigeer in dat bestand naar de methode MoveObject
, markeer opmerkingen this.State.Move()
en verwijder opmerkingen this.State.Move(true)
. Met deze wijziging worden de objecten geroteerd nadat de service is bijgewerkt.
We moeten ook het ServiceManifest.xml-bestand (onder PackageRoot) van het project VisualObjects.ActorService bijwerken. Werk codepackage en de serviceversie bij naar 2.0 en de bijbehorende regels in het bestand ServiceManifest.xml. U kunt de optie Manifestbestanden van Visual Studio bewerken 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 weer):
<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 wordt het bestand ApplicationManifest.xml (gevonden onder het VisualObjects-project onder de VisualObjects-oplossing ) bijgewerkt naar versie 2.0 van het project VisualObjects.ActorService . Bovendien wordt de toepassingsversie bijgewerkt naar 2.0.0.0 vanaf 1.0.0.0. De ApplicationManifest.xml moet eruitzien als het volgende fragment:
<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 ActorService-project 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 zou zijn gewijzigd. Vervolgens gaan we de bijgewerkte toepassing verpakken door met de rechtermuisknop op VisualObjectsApplication te klikken, het Service Fabric-menu 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 kennis met de parameters voor de toepassingsupgrade en het upgradeproces om een goed beeld te krijgen van de verschillende upgradeparameters, time-outs en het statuscriterium dat is toegepast. Voor dit scenario wordt het criterium voor servicestatusevaluatie ingesteld op de standaardwaarden (en aanbevolen), wat betekent dat alle services en exemplaren na de upgrade in orde moeten zijn.
Laten we de HealthCheckStableDuration echter verhogen tot 180 seconden (zodat de services ten minste 120 seconden in orde zijn voordat de upgrade naar het volgende updatedomein gaat). Laten we ook de UpgradeDomainTimeout 1200 seconden en de UpgradeTimeout 3000 seconden instellen.
Ten slotte stellen we de UpgradeFailureAction ook in op terugdraaien. 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 dus de volgende parameters opgegeven:
FailureAction = Terugdraaien
HealthCheckStableDurationSec = 180
UpgradeDomainTimeoutSec = 1200
UpgradeTimeout = 3000
Stap 4: De toepassing voorbereiden voor de upgrade
De toepassing is nu gebouwd en gereed om te worden bijgewerkt. Als u een PowerShell-venster opent als beheerder 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 onder het volgende relatieve pad waar u de Service Fabric SDK niet hebt gecomprimeerd: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. U vindt een map 'Pakket' in die map, waar het toepassingspakket is opgeslagen. Controleer de tijdstempels om ervoor te zorgen dat het de nieuwste 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 behulp van de opdracht Register-ServiceFabricApplicationType :
Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"
Als de voorgaande opdracht niet slaagt, hebt u waarschijnlijk een herbouw van alle services nodig. Zoals vermeld in stap 2, moet u mogelijk ook uw webserviceversie bijwerken.
Het is raadzaam het toepassingspakket te verwijderen nadat de toepassing is geregistreerd. Als u toepassingspakketten verwijdert uit het installatiekopieënarchief, worden systeembronnen vrijgemaakt. Ongebruikte toepassingspakketten verbruiken schijfopslag en leiden tot prestatieproblemen van toepassingen.
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 in het ApplicationManifest.xml-bestand is beschreven. Service Fabric gebruikt deze naam om te bepalen welke toepassing wordt bijgewerkt. Als u de time-outs instelt op te kort, kan er een foutbericht worden weergegeven waarin het probleem wordt aangegeven. Raadpleeg de sectie probleemoplossing of verhoog de time-outs.
Nu de toepassingsupgrade wordt uitgevoerd, kunt u deze bewaken met 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 gekregen met behulp van de voorgaande PowerShell-opdracht, aangeven dat alle updatedomeinen zijn bijgewerkt (voltooid). En u zou moeten zien dat de visuele objecten in uw browservenster zijn begonnen met 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 statusbeleid om uzelf vertrouwd te maken met deze beleidsregels. Wanneer u implementeert in een Azure-cluster, moeten de parameters op de juiste manier worden ingesteld. Het is goed om de time-outs conservatief in te stellen.
Volgende stappen
Als u uw toepassing bijwerken met Visual Studio , wordt u begeleid bij het uitvoeren van een toepassingsupgrade met behulp van Visual Studio.
Bepalen hoe uw toepassing wordt bijgewerkt met behulp van upgradeparameters.
Uw toepassingsupgrades compatibel maken door te leren hoe u gegevensserialisatie kunt gebruiken.
Meer informatie over het gebruik van geavanceerde functionaliteit tijdens het upgraden van uw toepassing door te verwijzen naar geavanceerde onderwerpen.
Los veelvoorkomende problemen in toepassingsupgrades op door te verwijzen naar de stappen in Het oplossen van problemen met toepassingsupgrades.