Dela via


Service Fabric-programresursmodell

Du har flera alternativ för att distribuera Azure Service Fabric-program i ditt Service Fabric-kluster. Vi rekommenderar att du använder Azure Resource Manager. Om du använder Resource Manager kan du beskriva program och tjänster i JSON och sedan distribuera dem i samma Resource Manager-mall som klustret. Till skillnad från att använda PowerShell eller Azure CLI för att distribuera och hantera program behöver du inte vänta tills klustret är klart om du använder Resource Manager. programregistrering, etablering och distribution kan ske i ett enda steg. Att använda Resource Manager är det bästa sättet att hantera programmets livscykel i klustret. Mer information finns i Metodtips: Infrastruktur som kod.

Att hantera dina program som resurser i Resource Manager kan hjälpa dig att få förbättringar inom följande områden:

  • Spårningslogg: Resource Manager granskar varje åtgärd och behåller en detaljerad aktivitetslogg. En aktivitetslogg kan hjälpa dig att spåra ändringar som gjorts i programmen och i klustret.
  • Rollbaserad åtkomstkontroll: Du kan hantera åtkomst till kluster och till program som distribueras i klustret med hjälp av samma Resource Manager-mall.
  • Hanteringseffektivitet: Om du använder Resource Manager får du en enda plats (Azure-portalen) för att hantera klustret och kritiska programdistributioner.

I det här dokumentet får du lära dig att:

  • Distribuera programresurser med hjälp av Resource Manager.
  • Uppgradera programresurser med hjälp av Resource Manager.
  • Ta bort programresurser.

Distribuera programresurser

De övergripande steg du vidtar för att distribuera ett program och dess tjänster med hjälp av Resource Manager-programresursmodellen är:

  1. Paketera programkoden.
  2. Ladda upp paketet.
  3. Referera till paketets plats i en Resource Manager-mall som en programresurs.

Mer information finns i Paketera ett program.

Sedan skapar du en Resource Manager-mall, uppdaterar parameterfilen med programinformation och distribuerar mallen i Service Fabric-klustret. Utforska exempel.

Skapa ett lagringskonto

Om du vill distribuera ett program från en Resource Manager-mall måste du ha ett lagringskonto. Lagringskontot används för att mellanlagra programbilden.

Du kan återanvända ett befintligt lagringskonto eller skapa ett nytt lagringskonto för mellanlagring av dina program. Om du använder ett befintligt lagringskonto kan du hoppa över det här steget.

Skapa ett lagringskonto

Konfigurera ditt lagringskonto

När lagringskontot har skapats skapar du en blobcontainer där programmen kan mellanlagras. I Azure-portalen går du till det Azure Storage-konto där du vill lagra dina program. Välj Blobar>Lägg till container.

Resurser i klustret kan skyddas genom att ställa in den offentliga åtkomstnivån på privat. Du kan bevilja åtkomst på flera sätt:

Exemplet i följande skärmbild använder anonym läsåtkomst för blobar.

Skapa blob

Mellanlagra programmet i ditt lagringskonto

Innan du kan distribuera ett program måste du mellanlagra programmet i Blob Storage. I den här självstudien skapar vi programpaketet manuellt. Tänk på att det här steget kan automatiseras. Mer information finns i Paketera ett program.

I den här självstudien använder vi exempelprogrammet Röstning.

  1. Högerklicka på projektet Voting i Visual Studio och välj sedan Paket.

    Paketprogram

  2. Gå till katalogen .\service-fabric-dotnet-quickstart\Voting\pkg\Debug . Zippa innehållet i en fil med namnet Voting.zip. Den ApplicationManifest.xml filen ska finnas vid roten i zip-filen.

    Zip-program

  3. Byt namn på filen för att ändra tillägget från .zip till .sfpkg.

  4. I Azure-portalen går du till appcontainern för ditt lagringskonto, väljer Ladda upp och laddar sedan upp Voting.sfpkg.

    Ladda upp apppaket

Nu är programmet mellanlagrat och du kan skapa Resource Manager-mallen för att distribuera programmet.

Skapa Resource Manager-mallen

Exempelprogrammet innehåller Azure Resource Manager-mallar som du kan använda för att distribuera programmet. Mallfilnamnen är UserApp.json och UserApp.Parameters.json.

Kommentar

Filen UserApp.Parameters.json måste uppdateras med namnet på klustret.

Parameter Description Exempel Kommentarer
clusterName Namnet på klustret som du distribuerar till sf-cluster123
program Namnet på programmet Röstning
applicationTypeName Typnamnet på programmet VotingType Måste matcha ApplicationManifest.xml
applicationTypeVersion Versionen av programtypen 1.0.0 Måste matcha ApplicationManifest.xml
serviceName Namnet på tjänsten Voting~VotingWeb Måste vara i formatet ApplicationName~ServiceType
serviceTypeName Typnamnet på tjänsten VotingWeb Måste matcha ServiceManifest.xml
appPackageUrl Bloblagrings-URL:en för programmet https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg URL:en för programpaketet i Blob Storage (proceduren för att ange URL:en beskrivs senare i artikeln)
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Distribuera programmet

Kör cmdleten New-AzResourceGroupDeployment för att distribuera programmet till resursgruppen som innehåller klustret:

New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose

Uppgradera Service Fabric-programmet med hjälp av Resource Manager

Viktigt!

Alla tjänster som distribueras via ARM JSON-definition måste tas bort från avsnittet DefaultServices i motsvarande ApplicationManifest.xml fil.

Du kan uppgradera ett program som redan har distribuerats till ett Service Fabric-kluster av någon av följande skäl:

  • En ny tjänst läggs till i programmet. En tjänstdefinition måste läggas till i service-manifest.xml och application-manifest.xml filer när en tjänst läggs till i programmet. Om du vill återspegla en ny version av ett program måste du också ändra programtypsversionen från 1.0.0 till 1.0.1 i UserApp.Parameters.json:

    "applicationTypeVersion": {
        "value": "1.0.1"
    },
    "serviceName2": {
        "value": "Voting~VotingData"
    },
    "serviceTypeName2": {
        "value": "VotingDataType"
    }
    
  • En ny version av en befintlig tjänst läggs till i programmet. Exempel är programkodändringar och uppdateringar av apptypsversion och namn. För den här uppgraderingen uppdaterar du UserApp.Parameters.json så här:

     "applicationTypeVersion": {
        "value": "1.0.1"
    },
    

Ta bort programresurser

Så här tar du bort ett program som har distribuerats med hjälp av programresursmodellen i Resource Manager:

  1. Använd cmdleten Get-AzResource för att hämta resurs-ID:t för programmet:

    Get-AzResource  -Name <String> | f1
    
  2. Använd cmdleten Remove-AzResource för att ta bort programresurserna:

    Remove-AzResource  -ResourceId <String> [-Force] [-ApiVersion <String>]
    

Vanliga frågor och svar

Fel: "Programnamnet måste vara ett prefix för tjänstnamnet" Svar: Kontrollera att tjänstnamnet är formaterat på följande sätt: ProfileVetSF~CallTicketDataWebApi.

Nästa steg

Hämta information om programresursmodellen: