Uppgradering av Service Fabric-program med PowerShell
Den vanligaste och rekommenderade uppgraderingsmetoden är den övervakade löpande uppgraderingen. Azure Service Fabric övervakar hälsotillståndet för programmet som uppgraderas baserat på en uppsättning hälsoprinciper. När en uppdateringsdomän (UD) har uppgraderats utvärderar Service Fabric programmets hälsa och fortsätter antingen till nästa uppdateringsdomän eller misslyckas uppgraderingen beroende på hälsoprinciperna.
En övervakad programuppgradering kan utföras med hjälp av hanterade eller inbyggda API:er, PowerShell, Azure CLI, Java eller REST. Anvisningar om hur du utför en uppgradering med Visual Studio finns i Uppgradera ditt program med Visual Studio.
Med Service Fabric-övervakade löpande uppgraderingar kan programadministratören konfigurera hälsoutvärderingsprincipen som Service Fabric använder för att avgöra om programmet är felfritt. Dessutom kan administratören konfigurera den åtgärd som ska vidtas när hälsoutvärderingen misslyckas (till exempel genom att göra en automatisk återställning.) Det här avsnittet går igenom en övervakad uppgradering för ett av de SDK-exempel som använder PowerShell.
På den här sidan finns en träningsvideo som också vägleder dig genom en programuppgradering:
Kommentar
ApplicationParametersbevaras inte i en programuppgradering. För att bevara aktuella programparametrar bör användaren hämta parametrarna först och skicka dem till uppgraderings-API-anropet som nedan:
$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
Steg 1: Skapa och distribuera exemplet visuella objekt
Skapa och publicera programmet genom att högerklicka på programprojektet VisualObjectsApplication och välja kommandot Publicera. Mer information finns i självstudien om uppgradering av Service Fabric-program. Du kan också använda PowerShell för att distribuera ditt program.
Kommentar
Innan något av Service Fabric-kommandona kan användas i PowerShell måste du först ansluta till klustret med hjälp av cmdleten Connect-ServiceFabricCluster
. På samma sätt antas det att klustret redan har konfigurerats på den lokala datorn. Se artikeln om hur du konfigurerar din Service Fabric-utvecklingsmiljö.
När du har skapat projektet i Visual Studio kan du använda PowerShell-kommandot Copy-ServiceFabricApplicationPackage för att kopiera programpaketet till ImageStore. Om du vill verifiera apppaketet lokalt använder du cmdleten Test-ServiceFabricApplicationPackage . Nästa steg är att registrera programmet till Service Fabric-körningen med hjälp av cmdleten Register-ServiceFabricApplicationType . Följande steg är att starta en instans av programmet med hjälp av cmdleten New-ServiceFabricApplication . Dessa tre steg motsvarar användningen av menyalternativet Distribuera i Visual Studio. När etableringen är klar bör du rensa det kopierade programpaketet från avbildningsarkivet för att minska de resurser som förbrukas. Om en programtyp inte längre krävs bör den avregistreras av samma anledning. Mer information finns i Distribuera och ta bort program med PowerShell .
Nu kan du använda Service Fabric Explorer för att visa klustret och programmet. Programmet har en webbtjänst som kan navigeras till i Internet Explorer genom att http://localhost:8081/visualobjects
skriva i adressfältet. Du bör se några flytande visuella objekt som rör sig runt på skärmen. Dessutom kan du använda Get-ServiceFabricApplication för att kontrollera programstatusen.
Steg 2: Uppdatera exemplet på visuella objekt
Du kanske märker att med den version som distribuerades i steg 1 roterar inte de visuella objekten. Nu ska vi uppgradera det här programmet till ett program där de visuella objekten också roterar.
Välj projektet VisualObjects.ActorService i VisualObjects-lösningen och öppna filen StatefulVisualObjectActor.cs. I filen navigerar du till metoden MoveObject
, kommenterar ut this.State.Move()
och avkommentar this.State.Move(true)
. Den här ändringen roterar objekten när tjänsten har uppgraderats.
Vi måste också uppdatera filen ServiceManifest.xml (under PackageRoot) för projektet VisualObjects.ActorService. Uppdatera CodePackage och tjänstversionen till 2.0 och motsvarande rader i filen ServiceManifest.xml. Du kan använda alternativet Redigera manifestfiler i Visual Studio när du högerklickar på lösningen för att göra ändringar i manifestfilen.
När ändringarna har gjorts bör manifestet se ut så här (markerade delar visar ändringarna):
<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 uppdateras ApplicationManifest.xml -filen (som finns under VisualObjects-projektet under VisualObjects-lösningen) till version 2.0 av projektet VisualObjects.ActorService. Dessutom uppdateras programversionen till 2.0.0.0 från 1.0.0.0. ApplicationManifest.xml bör se ut som följande kodfragment:
<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" />
Nu skapar du projektet genom att bara välja Projektet ActorService och sedan högerklicka och välja alternativet Skapa i Visual Studio. Om du väljer Återskapa alla bör du uppdatera versionerna för alla projekt eftersom koden skulle ha ändrats. Nu ska vi paketera det uppdaterade programmet genom att högerklicka på VisualObjectsApplication, välja Service Fabric-menyn och välja Paket. Den här åtgärden skapar ett programpaket som kan distribueras. Ditt uppdaterade program är redo att distribueras.
Steg 3: Besluta om hälsoprinciper och uppgraderingsparametrar
Bekanta dig med programuppgraderingsparametrarna och uppgraderingsprocessen för att få en god förståelse för de olika uppgraderingsparametrar, tidsgränser och hälsovillkor som tillämpas. För den här genomgången är utvärderingskriteriet för tjänsthälsa inställt på standardvärdena (och rekommenderade), vilket innebär att alla tjänster och instanser ska vara felfria efter uppgraderingen.
Men vi ska öka HealthCheckStableDuration till 180 sekunder (så att tjänsterna är felfria i minst 120 sekunder innan uppgraderingen fortsätter till nästa uppdateringsdomän). Nu ska vi också ange UpgradeDomainTimeout till 1200 sekunder och UpgradeTimeout till 3 000 sekunder.
Slutligen ställer vi också in UpgradeFailureAction som återställning. Det här alternativet kräver att Service Fabric återställer programmet till den tidigare versionen om det uppstår problem under uppgraderingen. När du startar uppgraderingen (i steg 4) anges följande parametrar:
FailureAction = Återställning
HealthCheckStableDurationSec = 180
UpgradeDomainTimeoutSec = 1200
UpgradeTimeout = 3000
Steg 4: Förbereda programmet för uppgradering
Nu är programmet skapat och redo att uppgraderas. Om du öppnar ett PowerShell-fönster som administratör och skriver Get-ServiceFabricApplication bör du veta att det är programtypen 1.0.0.0 av VisualObjects som har distribuerats .
Programpaketet lagras under följande relativa sökväg där du avkomprimerade Service Fabric SDK: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. Du bör hitta en "Paket"-mapp i den katalogen, där programpaketet lagras. Kontrollera tidsstämplarna för att se till att det är den senaste versionen (du kan också behöva ändra sökvägarna på rätt sätt).
Nu ska vi kopiera det uppdaterade programpaketet till Service Fabric ImageStore (där programpaketen lagras av Service Fabric). Parametern ApplicationPackagePathInImageStore informerar Service Fabric om var programpaketet finns. Vi har placerat det uppdaterade programmet i "VisualObjects_V2" med följande kommando (du kan behöva ändra sökvägarna igen på rätt sätt).
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug\Package -ApplicationPackagePathInImageStore "VisualObjects\_V2"
Nästa steg är att registrera det här programmet med Service Fabric, som kan utföras med hjälp av kommandot Register-ServiceFabricApplicationType :
Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"
Om föregående kommando inte lyckas är det troligt att du behöver återskapa alla tjänster. Som du nämnde i steg 2 kan du också behöva uppdatera din WebService-version.
Vi rekommenderar att du tar bort programpaketet när programmet har registrerats. Om du tar bort programpaket från avbildningsarkivet frigörs systemresurser. Att behålla oanvända programpaket förbrukar disklagring och leder till problem med programprestanda.
Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore "VisualObjects\_V2" -ImageStoreConnectionString fabric:ImageStore
Steg 5: Starta programuppgradering
Nu är vi redo att starta programuppgraderingen med hjälp av kommandot Start-ServiceFabricApplicationUpgrade :
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000 -FailureAction Rollback -Monitored
Programnamnet är samma som det beskrevs i filen ApplicationManifest.xml . Service Fabric använder det här namnet för att identifiera vilket program som uppgraderas. Om du anger att tidsgränserna ska vara för korta kan det uppstå ett felmeddelande som anger problemet. Se felsökningsavsnittet eller öka tidsgränserna.
Nu när programuppgraderingen fortsätter kan du övervaka den med Service Fabric Explorer eller med hjälp av PowerShell-kommandot Get-ServiceFabricApplicationUpgrade :
Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects
Om några minuter bör den status som du fick med hjälp av föregående PowerShell-kommando ange att alla uppdateringsdomäner har uppgraderats (slutförts). Och du bör upptäcka att de visuella objekten i webbläsarfönstret har börjat rotera!
Du kan prova att uppgradera från version 2 till version 3 eller från version 2 till version 1 som en övning. Att flytta från version 2 till version 1 betraktas också som en uppgradering. Spela med tidsgränser och hälsoprinciper för att bekanta dig med dem. När du distribuerar till ett Azure-kluster måste parametrarna anges på rätt sätt. Det är bra att fastställa tidsgränserna konservativt.
Nästa steg
När du uppgraderar ditt program med Hjälp av Visual Studio får du hjälp med en programuppgradering med Hjälp av Visual Studio.
Kontrollera hur programmet uppgraderas med hjälp av uppgraderingsparametrar.
Gör dina programuppgraderingar kompatibla genom att lära dig hur du använder data serialisering.
Lär dig hur du använder avancerade funktioner när du uppgraderar ditt program genom att läsa Avancerade ämnen.
Åtgärda vanliga problem i programuppgraderingar genom att referera till stegen i Felsöka programuppgraderingar.