Livscykel för Service Fabric-program

Precis som med andra plattformar går ett program i Azure Service Fabric vanligtvis igenom följande faser: design, utveckling, testning, distribution, uppgradering, underhåll och borttagning. Service Fabric ger förstklassigt stöd för hela programlivscykeln för molnprogram, från utveckling till distribution, daglig hantering och underhåll till eventuell avveckling. Tjänstmodellen gör det möjligt för flera olika roller att delta oberoende av varandra i programmets livscykel. Den här artikeln innehåller en översikt över API:er och hur de används av de olika rollerna under faserna i Service Fabric-programlivscykeln.

På den här sidan finns en träningsvideo som beskriver hur du hanterar programmets livscykel:

Viktigt

Det finns två CLI-verktyg som används för att interagera med Service Fabric. Azure CLI används för att hantera Azure-resurser, till exempel ett Azure-baserat Service Fabric-kluster. Service Fabric CLI används för att ansluta direkt till Service Fabric-klustret (oavsett var det finns) och hantera klustret, programmen och tjänsterna.

Tjänstmodellroller

Tjänstmodellrollerna är:

  • Tjänstutvecklare: Utvecklar modulära och generiska tjänster som kan återanvändas och användas i flera program av samma typ eller olika typer. En kötjänst kan till exempel användas för att skapa ett biljettprogram (supportavdelningen) eller ett e-handelsprogram (kundvagn).
  • Programutvecklare: Skapar program genom att integrera en samling tjänster för att uppfylla vissa specifika krav eller scenarier. En e-handelswebbplats kan till exempel integrera "JSON Stateless Front-End Service", "Auction Stateful Service" och "Queue Stateful Service" för att skapa en auktionslösning.
  • Programadministratör: Fattar beslut om programkonfigurationen (fyller i parametrarna för konfigurationsmallen), distribution (mappning till tillgängliga resurser) och tjänstkvalitet. En programadministratör bestämmer till exempel språkspråket (engelska för USA eller japanska för Japan) för programmet. Ett annat distribuerat program kan ha olika inställningar.
  • Operator: Distribuerar program baserat på programkonfigurationen och kraven som angetts av programadministratören. En operatör etablerar och distribuerar till exempel programmet och ser till att det körs i Azure. Operatörer övervakar programhälsa och prestandainformation och underhåller den fysiska infrastrukturen efter behov.

Utveckla

  1. En tjänstutvecklare utvecklar olika typer av tjänster med hjälp av programmeringsmodellen Reliable Actors eller Reliable Services .
  2. En tjänstutvecklare beskriver de deklarativt utvecklade tjänsttyperna i en tjänstmanifestfil som består av ett eller flera kod-, konfigurations- och datapaket.
  3. En programutvecklare skapar sedan ett program med olika tjänsttyper.
  4. En programutvecklare beskriver deklarativt programtypen i ett programmanifest genom att referera till tjänstmanifesten för de ingående tjänsterna och på lämpligt sätt åsidosätta och parameterisera olika konfigurations- och distributionsinställningar för de ingående tjänsterna.

Se Kom igång med Reliable Actors och Kom igång med Reliable Services för exempel.

Distribuera

  1. En programadministratör anpassar programtypen till ett specifikt program som ska distribueras till ett Service Fabric-kluster genom att ange lämpliga parametrar för ApplicationType-elementet i programmanifestet.
  2. En operatör laddar upp programpaketet till klusteravbildningsarkivet med hjälp av metoden CopyApplicationPackage eller cmdleten Copy-ServiceFabricApplicationPackage. Programpaketet innehåller programmanifestet och samlingen av tjänstpaket. Service Fabric distribuerar program från programpaketet som lagras i avbildningsarkivet, som kan vara ett Azure-bloblager eller Service Fabric-systemtjänsten.
  3. Operatorn etablerar sedan programtypen i målklustret från det uppladdade programpaketet med hjälp av metoden ProvisionApplicationAsync, cmdleten Register-ServiceFabricApplicationType eller REST-åtgärdenEtablera ett program.
  4. När programmet har etablerats startar en operatör programmet med de parametrar som tillhandahålls av programadministratören med metoden CreateApplicationAsync, cmdleten New-ServiceFabricApplication eller rest-åtgärden Create Application.
  5. När programmet har distribuerats använder en operatörmetoden CreateServiceAsync, cmdleten New-ServiceFabricService eller åtgärden Create Service REST för att skapa nya tjänstinstanser för programmet baserat på tillgängliga tjänsttyper.
  6. Programmet körs nu i Service Fabric-klustret.

Se Distribuera ett program för exempel.

Testa

  1. När du har distribuerat till det lokala utvecklingsklustret eller ett testkluster kör en tjänstutvecklare det inbyggda redundanstestscenariot med hjälp av klasserna FailoverTestScenarioParameters och FailoverTestScenario eller cmdleten Invoke-ServiceFabricFailoverTestScenario. Redundanstestscenariot kör en angiven tjänst genom viktiga övergångar och redundansväxlingar för att säkerställa att den fortfarande är tillgänglig och fungerar.
  2. Tjänstutvecklaren kör sedan det inbyggda kaostestscenariot med hjälp av klasserna ChaosTestScenarioParameters och ChaosTestScenario eller cmdleten Invoke-ServiceFabricChaosTestScenario. Scenariot med kaostestet inducerar slumpmässigt flera noder, kodpaket och replikfel i klustret.
  3. Tjänstutvecklarentestar tjänst-till-tjänst-kommunikation genom att redigera testscenarier som flyttar primära repliker runt klustret.

Mer information finns i Introduktion till tjänsten för felanalys .

Uppgradera

  1. En tjänstutvecklare uppdaterar de ingående tjänsterna i det instansierade programmet och/eller åtgärdar buggar och tillhandahåller en ny version av tjänstmanifestet.
  2. En programutvecklare åsidosätter och parameteriserar konfigurations- och distributionsinställningarna för de konsekventa tjänsterna och tillhandahåller en ny version av programmanifestet. Programutvecklaren införlivar sedan de nya versionerna av tjänstmanifesten i programmet och tillhandahåller en ny version av programtypen i ett uppdaterat programpaket.
  3. En programadministratör införlivar den nya versionen av programtypen i målprogrammet genom att uppdatera lämpliga parametrar.
  4. En operatör laddar upp det uppdaterade programpaketet till klusteravbildningsarkivet med hjälp av metoden CopyApplicationPackage eller cmdleten Copy-ServiceFabricApplicationPackage. Programpaketet innehåller programmanifestet och samlingen av tjänstpaket.
  5. En operator etablerar den nya versionen av programmet i målklustret med hjälp av metoden ProvisionApplicationAsync, cmdleten Register-ServiceFabricApplicationType eller REST-åtgärdenEtablera ett program.
  6. En operatör uppgraderar målprogrammet till den nya versionen med hjälp av metoden UpgradeApplicationAsync, cmdleten Start-ServiceFabricApplicationUpgrade eller REST-åtgärdenUppgradera ett program.
  7. En operatör kontrollerar uppgraderingsförloppet med metoden GetApplicationUpgradeProgressAsync, cmdleten Get-ServiceFabricApplicationUpgrade eller REST-åtgärdenGet Application Upgrade Progress.
  8. Vid behov ändrar och återställer operatorn parametrarna för den aktuella programuppgraderingen med hjälp av metoden UpdateApplicationUpgradeAsync, cmdletenUpdate-ServiceFabricApplicationUpgrade eller REST-åtgärdenUpdate Application Upgrade.
  9. Vid behov återställer operatorn den aktuella programuppgraderingen med hjälp av metoden RollbackApplicationUpgradeAsync, cmdleten Start-ServiceFabricApplicationRollback eller REST-åtgärdenRollback Application Upgrade.
  10. Service Fabric uppgraderar målprogrammet som körs i klustret utan att förlora tillgängligheten för någon av dess komponenter.

Se självstudiekursen om programuppgradering för exempel.

Underhåll

  1. För operativsystemuppgraderingar och korrigeringar använder Service Fabric gränssnitt med Azure-infrastrukturen för att garantera tillgängligheten för alla program som körs i klustret.
  2. För uppgraderingar och korrigeringar till Service Fabric-plattformen uppgraderar Service Fabric sig själv utan att förlora tillgängligheten för något av de program som körs i klustret.
  3. En programadministratör godkänner tillägg eller borttagning av noder från ett kluster efter att ha analyserat historiska kapacitetsanvändningsdata och projicerat framtida efterfrågan.
  4. En operatör lägger till och tar bort noder som angetts av programadministratören.
  5. När nya noder läggs till eller befintliga noder tas bort från klustret lastbalanserar Service Fabric automatiskt de program som körs över alla noder i klustret för att uppnå optimala prestanda.

Ta bort

  1. En operatör kan ta bort en specifik instans av en tjänst som körs i klustret utan att ta bort hela programmet med hjälp av metoden DeleteServiceAsync, cmdleten Remove-ServiceFabricService eller rest-åtgärden Delete Service.
  2. En operatör kan också ta bort en programinstans och alla dess tjänster med hjälp av metoden DeleteApplicationAsync, cmdleten Remove-ServiceFabricApplication eller rest-åtgärden Delete Application.
  3. När programmet och tjänsterna har stoppats kan operatorn avetablera programtypen med hjälp av metoden UnprovisionApplicationAsync,cmdleten Unregister-ServiceFabricApplicationType eller Rest-åtgärden Unprovision an Application. Avetablering av programtypen tar inte bort programpaketet från ImageStore.
  4. En operatör tar bort programpaketet från ImageStore med hjälp av metoden RemoveApplicationPackage eller cmdleten Remove-ServiceFabricApplicationPackage.

Se Distribuera ett program för exempel.

Bevara diskutrymme i klusteravbildningsarkivet

ImageStoreService behåller kopierade och etablerade paket, vilket kan leda till ackumulering av filer. Filackumulering kan göra att ImageStoreService (fabric:/System/ImageStoreService) fyller disken och kan öka byggtiden för ImageStoreService-repliker.

Använd följande etableringssekvens för att undvika filackumulering:

  1. Kopiera paketet till ImageStore och använd alternativet komprimera

  2. Etablera paketet

  3. Ta bort paketet i avbildningsarkivet

  4. Uppgradera programmet/klustret

  5. Avetablera den gamla versionen

Steg 3 och 5 i proceduren ovan förhindrar ackumulering av filer i bildarkivet.

Konfiguration för automatisk rensning

Du kan automatisera steg 3 ovan med hjälp av PowerShell eller XML. Detta gör att programpaketet tas bort automatiskt efter den lyckade registreringen av programtypen.

PowerShell:

Register-ServiceFabricApplicationTye -ApplicationPackageCleanupPolicy Automatic

XML:

<Section Name="Management">
  <Parameter Name="CleanupApplicationPackageOnProvisionSuccess" Value="True" />
</Section>

Du kan automatisera steg 5 ovan med hjälp av XML. Detta gör att oanvända programtyper avregistreras automatiskt.

<Section Name="Management">
  <Parameter Name="CleanupUnusedApplicationTypes" Value="true" />
  <Parameter Name="PeriodicCleanupUnusedApplicationTypes" Value="true" />     
  <Parameter Name="TriggerAppTypeCleanupOnProvisionSuccess" Value="true" />
  <Parameter Name="MaxUnusedAppTypeVersionsToKeep" Value="3" />
</Section>

Rensa filer och data på noder

Replikeringen av programfiler distribuerar slutligen filerna till alla noder beroende på utjämningsåtgärder. Detta kan skapa disktryck beroende på antalet program och deras filstorlek. Även om ingen aktiv instans körs på en nod sparas filerna från en tidigare instans. Detsamma gäller för data från tillförlitliga samlingar som används av tillståndskänsliga tjänster. Detta tjänar syftet med högre tillgänglighet. Vid en ny programinstans på samma nod får inga filer kopieras. För tillförlitliga samlingar måste endast deltat replikeras.

Om du vill ta bort programbinärfilerna helt måste du avregistrera programtypen.

Rekommendationer för att minska disktrycket:

  1. Remove-ServiceFabricApplicationPackage detta tar bort paketet från den tillfälliga uppladdningsplatsen.
  2. Unregister-ServiceFabricApplicationType frigör lagringsutrymme genom att ta bort filer av programtyp från bildlagringstjänsten och alla noder. Borttagningshanteraren körs varje timme per standard.
  3. CleanupUnusedApplicationTypes rensar gamla oanvända programversioner automatiskt.
    {
      "name": "Management",
      "parameters": [
        {
          "name": "CleanupUnusedApplicationTypes",
          "value": true
        },
        {
          "name": "MaxUnusedAppTypeVersionsToKeep",
          "value": "3"
        }
      ]
    }
    
  4. Remove-ServiceFabricClusterPackage tar bort gamla binärfiler för oanvänd körningsinstallation.

Anteckning

En funktion är under utveckling så att Service Fabric kan ta bort programmappar när programmet har evakuerats från noden.

Nästa steg

Mer information om hur du utvecklar, testar och hanterar Service Fabric-program och -tjänster finns i: