Alkalmazások üzembe helyezése és eltávolítása a PowerShell használatával


Miután egy alkalmazástípust becsomagolt, készen áll egy Azure Service Fabric-fürtben való üzembe helyezésre. Az üzembe helyezés a következő három lépést foglalja magában:

  1. Töltse fel az alkalmazáscsomagot a képtárolóba.
  2. Regisztrálja az alkalmazástípust a képtároló relatív elérési útján.
  3. Hozza létre az alkalmazáspéldányt.

Miután az üzembe helyezett alkalmazásra már nincs szükség, törölheti az alkalmazáspéldányt és annak alkalmazástípusát. Ha teljesen el szeretne távolítani egy alkalmazást a fürtből, az alábbi lépéseket kell elvégeznie:

  1. Távolítsa el (vagy törölje) a futó alkalmazáspéldányt.
  2. Ha már nincs rá szüksége, törölje az alkalmazástípus regisztrációjának megszüntetését.
  3. Távolítsa el az alkalmazáscsomagot a képtárolóból.

Ha a Visual Studiót használja alkalmazások helyi fejlesztői fürtben való üzembe helyezéséhez és hibakereséséhez, a rendszer automatikusan egy PowerShell-szkripttel kezeli az összes fenti lépést. Ez a szkript az alkalmazásprojekt Szkriptek mappájában található. Ez a cikk hátteret biztosít a szkript működéséhez, hogy ugyanazokat a műveleteket a Visual Studión kívül is végrehajthassa.

Az alkalmazások üzembe helyezésének másik módja a külső kiépítés használata. Az alkalmazáscsomag egy külső tárolóba csomagolható sfpkg és feltölthető. Ebben az esetben nincs szükség a képtárolóba való feltöltésre. Az üzembe helyezéshez a következő lépések szükségesek:

  1. Töltse fel a sfpkg fájlt egy külső tárolóba. A külső tároló lehet bármely olyan tároló, amely rest http- vagy https-végpontot tesz elérhetővé.
  2. Regisztrálja az alkalmazástípust a külső letöltési URI és az alkalmazástípus adataival.
  3. Hozza létre az alkalmazáspéldányt.

A törléshez távolítsa el az alkalmazáspéldányokat, és törölje az alkalmazástípus regisztrációját. Mivel a csomag nem lett átmásolva a képtárolóba, nincs ideiglenes hely a törlésre. A külső tárolóból való kiépítés a Service Fabric 6.1-es verziójától kezdve érhető el.

Megjegyzés:

A Visual Studio jelenleg nem támogatja a külső kiépítést.

Csatlakozás a fürthöz

Mielőtt bármilyen PowerShell-parancsot futtatna ebben a cikkben, mindig a Csatlakozás-ServiceFabricCluster használatával csatlakozzon a Service Fabric-fürthöz. A helyi fejlesztési fürthöz való csatlakozáshoz futtassa a következőket:

Connect-ServiceFabricCluster

Ha például Microsoft Entra ID, X509-tanúsítványok vagy Windows Active Directory használatával védett távoli fürthöz vagy fürthöz szeretne csatlakozni, tekintse meg a biztonságos fürthöz való Csatlakozás.

Az alkalmazáscsomag feltöltése

Az alkalmazáscsomag feltöltése olyan helyre helyezi, amely elérhető a belső Service Fabric-összetevők számára. Ha helyben szeretné ellenőrizni az alkalmazáscsomagot, használja a Test-ServiceFabricApplicationPackage parancsmagot.

A Copy-ServiceFabricApplicationPackage parancs feltölti az alkalmazáscsomagot a fürt lemezképtárolójába.

Tegyük fel, hogy létrehoz és csomagol egy MyApplication nevű alkalmazást a Visual Studio 2015-ben. Alapértelmezés szerint az ApplicationManifest.xml fájlban szereplő alkalmazástípus neve "MyApplicationType". A szükséges alkalmazásjegyzéket, szolgáltatásjegyzékeket és kód/konfiguráció/adatcsomagokat tartalmazó alkalmazáscsomag a C:\Users<username>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug mappában található.

Az alábbi parancs az alkalmazáscsomag tartalmát sorolja fel:

$path = 'C:\Users\<user\>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug'
tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
│   ApplicationManifest.xml
│
└───Stateless1Pkg
    │   ServiceManifest.xml
    │
    ├───Code
    │       Microsoft.ServiceFabric.Data.dll
    │       Microsoft.ServiceFabric.Data.Interfaces.dll
    │       Microsoft.ServiceFabric.Internal.dll
    │       Microsoft.ServiceFabric.Internal.Strings.dll
    │       Microsoft.ServiceFabric.Services.dll
    │       ServiceFabricServiceModel.dll
    │       Stateless1.exe
    │       Stateless1.exe.config
    │       Stateless1.pdb
    │       System.Fabric.dll
    │       System.Fabric.Strings.dll
    │
    └───Config
            Settings.xml

Ha az alkalmazáscsomag nagy méretű, és/vagy sok fájllal rendelkezik, tömörítheti. A tömörítés csökkenti a fájlok méretét és számát. Ez gyorsabb regisztrációt és az alkalmazástípus regisztrációjának megszüntetését eredményezi. A feltöltési idő jelenleg lassabb lehet, különösen akkor, ha belefoglalja a csomag tömörítésének idejét.

A csomagok tömörítéséhez használja ugyanazt a Copy-ServiceFabricApplicationPackage parancsot. A tömörítés a feltöltéstől függetlenül, a SkipCopy jelölő használatával vagy a feltöltési művelettel együtt is elvégezhető. A tömörített csomagok tömörítésének alkalmazása nem működik. A tömörített csomagok kibontásához használja ugyanazt a Copy-ServiceFabricApplicationPackage parancsot a UncompressPackage kapcsolóval.

Az alábbi parancsmag tömöríti a csomagot anélkül, hogy a képtárolóba másolta volna. A csomag mostantól tömörített fájlokat tartalmaz a csomagokhoz és Config a Code csomagokhoz. Az alkalmazás és a szolgáltatásjegyzékek nincsenek tömörítve, mert számos belső művelethez szükségesek (például csomagmegosztáshoz, alkalmazástípusnévhez és verziókinyeréshez bizonyos ellenőrzésekhez). Ha a jegyzékfájlokat tömöríti, akkor ezek a műveletek nem lesznek hatékonyak.

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -CompressPackage -SkipCopy
tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
|   ApplicationManifest.xml
|
└───Stateless1Pkg
       Code.zip
       Config.zip
       ServiceManifest.xml

Nagy alkalmazáscsomagok esetén a tömörítés időt vesz igénybe. A legjobb eredmény érdekében használjon gyors SSD-meghajtót. A tömörített csomag tömörítési ideje és mérete a csomag tartalma alapján is eltér. Itt látható például néhány csomag tömörítési statisztikája, amelyek a kezdeti és a tömörített csomag méretét mutatják a tömörítési idővel együtt.

Kezdeti méret (MB) Fájlszám Tömörítési idő Tömörített csomag mérete (MB)
100 100 00:00:03.3547592 60
512 100 00:00:16.3850303 307
1024 500 00:00:32.5907950 615
2048 1000 00:01:04.3775554 1231
5012 100 00:02:45.2951288 3074

A csomagok tömörítése után szükség szerint feltölthető egy vagy több Service Fabric-fürtbe. Az üzembehelyezési mechanizmus ugyanaz a tömörített és tömörítetlen csomagok esetében. A tömörített csomagok a fürt lemezképtárolójában vannak tárolva. A csomagok tömörítetlenek a csomóponton az alkalmazás futtatása előtt.

Az alábbi példa feltölti a csomagot a képtárolóba egy "MyApplicationV1" nevű mappába:

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -TimeoutSec 1800

Ha nem adja meg az -ApplicationPackagePathInImageStore paramétert, a rendszer az alkalmazáscsomagot a képtároló "Hibakeresés" mappájába másolja.

Megjegyzés:

A Copy-ServiceFabricApplicationPackage automatikusan észleli a megfelelő képtárolót kapcsolati sztring, ha a PowerShell-munkamenet egy Service Fabric-fürthöz van csatlakoztatva. Az 5.6-nál régebbi Service Fabric-verziók esetében a -ImageStore Csatlakozás ionString argumentumot explicit módon kell megadni.

PS C:\> Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -ImageStoreConnectionString (Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)) -TimeoutSec 1800

A Get-ImageStore Csatlakozás ionStringFromClusterManifest parancsmag, amely a Service Fabric SDK PowerShell-modul része, a rendszerképtár kapcsolati sztring lekérésére szolgál. Az SDK-modul importálásához futtassa a következőt:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

A képtárolóval és a képtárolóval kapcsolati sztring kapcsolatos kiegészítő információkért tekintse meg a képtároló kapcsolati sztring ismertetése című témakört.

A csomagok feltöltésének időtartama több tényezőtől függően eltérő. Néhány ilyen tényező a csomagban lévő fájlok száma, a csomag mérete és a fájlméretek. A forrásgép és a Service Fabric-fürt közötti hálózati sebesség a feltöltési időt is befolyásolja. A Copy-ServiceFabricApplicationPackage alapértelmezett időtúllépése 30 perc. A leírt tényezőktől függően előfordulhat, hogy növelnie kell az időtúllépést. Ha a másolási hívásban tömöríti a csomagot, figyelembe kell vennie a tömörítési időt is.

Az alkalmazáscsomag regisztrálása

Az alkalmazásjegyzékben deklarált alkalmazástípus és -verzió az alkalmazáscsomag regisztrálásakor válik elérhetővé. A rendszer beolvassa az előző lépésben feltöltött csomagot, ellenőrzi a csomagot, feldolgozza a csomag tartalmát, és átmásolja a feldolgozott csomagot egy belső rendszerhelyre.

Futtassa a Register-ServiceFabricApplicationType parancsmagot az alkalmazás típusának a fürtben való regisztrálásához, és tegye elérhetővé az üzembe helyezéshez:

A képtárolóba másolt alkalmazáscsomag regisztrálása

Amikor egy csomagot korábban átmásoltak a képtárolóba, a regisztrációs művelet megadja a képtároló relatív elérési útját.

Register-ServiceFabricApplicationType -ApplicationPathInImageStore MyApplicationV1
Register application type succeeded

A "MyApplicationV1" a képtároló azon mappája, amelyben az alkalmazáscsomag található. A "MyApplicationType" nevű és az "1.0.0" verziójú alkalmazástípus (mindkettő megtalálható az alkalmazásjegyzékben) már regisztrálva van a fürtben.

A külső tárolóba másolt alkalmazáscsomag regisztrálása

A Service Fabric 6.1-es verziójától kezdve a kiépítés támogatja a csomag külső tárolóból való letöltését. A letöltési URI annak az alkalmazáscsomagnak az sfpkg elérési útját jelöli, ahonnan az alkalmazáscsomag http- vagy HTTPS-protokollokkal tölthető le. A csomagot korábban fel kellett tölteni erre a külső helyre. Az URI-nak engedélyeznie kell a READ-hozzáférést, hogy a Service Fabric letölthesse a fájlt. A sfpkg fájlnak a ".sfpkg" kiterjesztéssel kell rendelkeznie. A kiépítési műveletnek tartalmaznia kell az alkalmazástípus adatait az alkalmazásjegyzékben található módon.

Register-ServiceFabricApplicationType -ApplicationPackageDownloadUri "https://sftestresources.blob.core.windows.net:443/sfpkgholder/MyAppPackage.sfpkg" -ApplicationTypeName MyApp -ApplicationTypeVersion V1 -Async

A Register-ServiceFabricApplicationType parancs csak azután ad vissza, hogy a rendszer sikeresen regisztrálta az alkalmazáscsomagot. A regisztráció időtartama az alkalmazáscsomag méretétől és tartalmától függ. Szükség esetén a -TimeoutSec paraméterrel hosszabb időtúllépést adhat meg (az alapértelmezett időtúllépés 60 másodperc).

Ha nagy alkalmazáscsomagot használ, vagy időtúllépést tapasztal, használja az -Async paramétert . A parancs akkor ad vissza, ha a fürt elfogadja a regisztrációs parancsot. A regisztrációs művelet szükség szerint folytatódik. A Get-ServiceFabricApplicationType parancs felsorolja az alkalmazástípus-verziókat és azok regisztrációs állapotát. Ezzel a paranccsal meghatározhatja a regisztráció befejezésének időpontját.

Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Alkalmazáscsomag eltávolítása a képtárolóból

Ha egy csomagot átmásoltak a képtárolóba, az alkalmazás sikeres regisztrálása után el kell távolítania azt az ideiglenes helyről. Az alkalmazáscsomagok lemezképtárból való törlése felszabadítja a rendszererőforrásokat. A nem használt alkalmazáscsomagok megtartása lemeztárolót használ, és az alkalmazás teljesítményével kapcsolatos problémákhoz vezet.

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore MyApplicationV1

Az alkalmazás létrehozása

Az alkalmazásokat a New-ServiceFabricApplication parancsmaggal bármely sikeresen regisztrált alkalmazástípus-verzióból példányosíthatja. Az egyes alkalmazások nevének a "háló:" sémával kell kezdődnie, és minden alkalmazáspéldány esetében egyedinek kell lennie. A célalkalmazás-típus alkalmazásjegyzékében definiált alapértelmezett szolgáltatások is létrejönnek.

New-ServiceFabricApplication fabric:/MyApp MyApplicationType 1.0.0
ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationParameters  : {}

Egy regisztrált alkalmazástípus tetszőleges verziójához több alkalmazáspéldány is létrehozható. Minden alkalmazáspéldány külön fut, saját munkakönyvtárral és folyamattal.

Annak megtekintéséhez, hogy mely elnevezett alkalmazások és szolgáltatások futnak a fürtben, futtassa a Get-ServiceFabricApplication és a Get-ServiceFabricService parancsmagokat:

Get-ServiceFabricApplication  
ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationStatus      : Ready
HealthState            : Ok
ApplicationParameters  : {}
Get-ServiceFabricApplication | Get-ServiceFabricService
ServiceName            : fabric:/MyApp/Stateless1
ServiceKind            : Stateless
ServiceTypeName        : Stateless1Type
IsServiceGroup         : False
ServiceManifestVersion : 1.0.0
ServiceStatus          : Active
HealthState            : Ok

Alkalmazás eltávolítása

Ha egy alkalmazáspéldányra már nincs szükség, a Remove-ServiceFabricApplication parancsmaggal véglegesen eltávolíthatja név alapján. A Remove-ServiceFabricApplication automatikusan eltávolítja az alkalmazáshoz tartozó összes szolgáltatást, és véglegesen eltávolítja az összes szolgáltatásállapotot.

Figyelmeztetés:

Ez a művelet nem vonható vissza, és az alkalmazás állapota nem állítható helyre.

Remove-ServiceFabricApplication fabric:/MyApp
Confirm
Continue with this operation?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
Remove application instance succeeded
Get-ServiceFabricApplication

Alkalmazástípus regisztrációja törlése

Ha egy alkalmazástípus egy adott verziójára már nincs szükség, a Unregister-ServiceFabricApplicationType parancsmaggal törölje az alkalmazástípus regisztrációját. A nem használt alkalmazástípusok regisztrációjának megszüntetése felszabadítja a képtároló által használt tárhelyet az alkalmazástípusfájlok eltávolításával. Az alkalmazástípus regisztrációjának törlése nem távolítja el a képtárolóba másolt alkalmazáscsomagot ideiglenes helyre, ha a rendszerképtárba másolt példányt használták. Az alkalmazástípusok regisztrációja törölhető, ha nem példányosítanak alkalmazásokat, és nem hivatkoznak rá függőben lévő alkalmazásfrissítések.

Futtassa a Get-ServiceFabricApplicationType parancsot a fürtben jelenleg regisztrált alkalmazástípusok megtekintéséhez:

Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Futtassa a Unregister-ServiceFabricApplicationType parancsot egy adott alkalmazástípus regisztrációjához:

Unregister-ServiceFabricApplicationType MyApplicationType 1.0.0

Hibaelhárítás

A Copy-ServiceFabricApplicationPackage imageStore-t kér Csatlakozás ionString

A Service Fabric SDK-környezetnek már be kell állítania a megfelelő alapértelmezett értékeket. Szükség esetén azonban az ImageStore Csatlakozás ionString függvénynek minden parancshoz meg kell egyeznie a Service Fabric-fürt által használt értékkel. Az ImageStore Csatlakozás ionString a fürtjegyzékben található, a Get-ServiceFabricClusterManifest és a Get-ImageStore Csatlakozás ionStringFromClusterManifest parancsokkal kérhető le:

Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)

A Get-ImageStore Csatlakozás ionStringFromClusterManifest parancsmag, amely a Service Fabric SDK PowerShell-modul része, a rendszerképtár kapcsolati sztring lekérésére szolgál. Az SDK-modul importálásához futtassa a következőt:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

Az ImageStore Csatlakozás ionString a fürtjegyzékben található:

<ClusterManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" Name="Server-Default-SingleNode" Version="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

    [...]

    <Section Name="Management">
      <Parameter Name="ImageStoreConnectionString" Value="file:D:\ServiceFabric\Data\ImageStore" />
    </Section>

    [...]

A képtárolóval és a képtárolóval kapcsolati sztring kapcsolatos kiegészítő információkért tekintse meg a képtároló kapcsolati sztring ismertetése című témakört.

Nagyméretű alkalmazáscsomag üzembe helyezése

Probléma: A Copy-ServiceFabricApplicationPackage időtúllépést jelent egy nagy alkalmazáscsomag esetében (GB-os sorrendben). Próbálja ki:

  • Adjon meg egy nagyobb időtúllépést a Copy-ServiceFabricApplicationPackage parancshoz paraméterrel TimeoutSec . Alapértelmezés szerint az időtúllépés 30 perc.
  • Ellenőrizze a forrásgép és a fürt közötti hálózati kapcsolatot. Ha a kapcsolat lassú, érdemes lehet jobb hálózati kapcsolattal rendelkező gépet használni. Ha az ügyfélszámítógép más régióban van, mint a fürt, fontolja meg egy ügyfélgép használatát a fürthöz közelebbi vagy ugyanabban a régióban.
  • Ellenőrizze, hogy külső szabályozást ér-e el. Ha például a képtároló az Azure Storage használatára van konfigurálva, a feltöltés szabályozható lehet.

Probléma: A csomag feltöltése sikeresen befejeződött, de a Register-ServiceFabricApplicationType időtúllépést jelent. Próbálja:

  • Tömörítse a csomagot a képtárolóba való másolás előtt. A tömörítés csökkenti a fájlok méretét és számát, ami viszont csökkenti a Service Fabric által végrehajtandó forgalmat és munkát. A feltöltési művelet lassabb lehet (különösen akkor, ha a tömörítési időt is belefoglalja), de az alkalmazástípus regisztrálása és regisztrációjának megszüntetése gyorsabb.
  • Adjon meg egy nagyobb időtúllépést a Register-ServiceFabricApplicationType paraméterrel TimeoutSec .
  • Adja meg Async a Register-ServiceFabricApplicationType kapcsolót. A parancs akkor ad vissza, ha a fürt elfogadja a parancsot, és az alkalmazástípus regisztrálása aszinkron módon folytatódik. Ezért ebben az esetben nincs szükség nagyobb időtúllépés megadására. A Get-ServiceFabricApplicationType parancs felsorolja az összes sikeresen regisztrált alkalmazástípus-verziót és azok regisztrációs állapotát. Ezzel a paranccsal meghatározhatja a regisztráció befejezésének időpontját.
Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Alkalmazáscsomag üzembe helyezése sok fájllal

Probléma: A Register-ServiceFabricApplicationType időtúllépést jelent egy sok fájlt tartalmazó alkalmazáscsomag esetében (ezres nagyságrendű). Próbálja ki:

  • Tömörítse a csomagot a képtárolóba való másolás előtt. A tömörítés csökkenti a fájlok számát.
  • Adjon meg egy nagyobb időtúllépést a Register-ServiceFabricApplicationType paraméterrel TimeoutSec .
  • Adja meg Async a Register-ServiceFabricApplicationType kapcsolót. A parancs akkor ad vissza, ha a fürt elfogadja a parancsot, és az alkalmazástípus regisztrálása aszinkron módon folytatódik. Ezért ebben az esetben nincs szükség nagyobb időtúllépés megadására. A Get-ServiceFabricApplicationType parancs felsorolja az összes sikeresen regisztrált alkalmazástípus-verziót és azok regisztrációs állapotát. Ezzel a paranccsal meghatározhatja a regisztráció befejezésének időpontját.
Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Következő lépések

Alkalmazás becsomagolása

Service Fabric-alkalmazás frissítése

A Service Fabric állapotának bemutatása

Service Fabric-szolgáltatás diagnosztizálása és hibaelhárítása

Alkalmazás modellezése a Service Fabricben