Uppgradering av Service Fabric-program med PowerShell


Den mest använda 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 interna 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 SDK-exemplen som använder PowerShell.

På den här sidan finns en träningsvideo som också vägleder dig genom en programuppgradering:

Anteckning

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 visualiseringsexemplet

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.

Anteckning

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 cmdleten Register-ServiceFabricApplicationType . Följande steg är att starta en instans av programmet med hjälp av cmdleten New-ServiceFabricApplication . De här tre stegen motsvarar att använda 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 på skärmen. Dessutom kan du använda Get-ServiceFabricApplication för att kontrollera programstatusen.

Steg 2: Uppdatera exemplet med 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 ServiceManifest.xml -filen (under PackageRoot) för projektet VisualObjects.ActorService. Uppdatera CodePackage och tjänstversionen till 2.0 och motsvarande rader i filenServiceManifest.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 som följande (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 denApplicationManifest.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 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 parametrarna för programuppgradering 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 kriteriet för utvärdering av 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 mappen "Paket" 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 där programpaketet finns. Vi har placerat det uppdaterade programmet i "VisualObjects_V2" med följande kommando (du kan behöva ändra sökvägar igen på lämpligt 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 behöver du förmodligen återskapa alla tjänster. Som nämnts 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 ApplicationManifest.xml-filen . 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 du stöta på ett felmeddelande som anger problemet. Läs 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 går vi igenom 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 dataserialisering.

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 med hjälp av stegen i Felsöka programuppgraderingar.