Megosztás a következőn keresztül:


Alkalmazás becsomagolása

Ez a cikk bemutatja, hogyan csomagolhat be egy Service Fabric-alkalmazást, és hogyan készítheti fel üzembe helyezésre.

Csomagelrendezés

Az alkalmazásjegyzéket, egy vagy több szolgáltatásjegyzéket és más szükséges csomagfájlokat egy adott elrendezésben kell rendezni a Service Fabric-fürtbe való üzembe helyezéshez. A cikkben szereplő példajegyzékeket a következő könyvtárstruktúra szerint kell rendszerezni:

tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
    │   ServiceManifest.xml
    │
    ├───MyCode
    │       MyServiceHost.exe
    │
    ├───MyConfig
    │       Settings.xml
    │
    └───MyData
            init.dat

A mappák neve megegyezik az egyes megfelelő elemek Name attribútumainak nevével. Ha például a szolgáltatásjegyzék két, MyCodeA és MyCodeB nevű kódcsomagot tartalmaz, akkor két azonos nevű mappa minden kódcsomaghoz tartalmazza a szükséges bináris fájlokat.

A SetupEntryPoint használata

A SetupEntryPoint használatára általában akkor van szükség, ha a szolgáltatás elindítása előtt futtatnia kell egy végrehajtható fájlt, vagy emelt szintű jogosultságokkal kell végrehajtania egy műveletet. Például:

  • A szolgáltatás által végrehajtható környezeti változók beállítása és inicializálása. Nem csak a Service Fabric-programozási modelleken keresztül írt végrehajtható elemekre vonatkozik. Például npm.exe szüksége van néhány környezeti változóra, amely konfigurálva van egy Node.js alkalmazás üzembe helyezéséhez.
  • Hozzáférés-vezérlés beállítása biztonsági tanúsítványok telepítésével.

A SetupEntryPoint konfigurálásával kapcsolatos további információkért lásd : A szabályzat konfigurálása szolgáltatásbeállítási belépési ponthoz

Konfigurálás

Csomag létrehozása a Visual Studióval

Ha a Visual Studiót használta az alkalmazás létrehozásához, a Csomag paranccsal automatikusan létrehozhat egy olyan csomagot, amely megfelel a fent leírt elrendezésnek.

Csomag létrehozásához kattintson a jobb gombbal az alkalmazásprojektre a Megoldáskezelő, és válassza a Csomag parancsot:

Alkalmazás csomagolása a Visual Studióval

Ha a csomagolás befejeződött, a csomag helyét a Kimenet ablakban találja. A csomagolási lépés automatikusan megtörténik az alkalmazás Visual Studióban való üzembe helyezésekor vagy hibakeresésekor.

Csomag létrehozása parancssor szerint

Az alkalmazás programozott módon is csomagolható a használatával msbuild.exe. A motorháztető alatt a Visual Studio futtatja, hogy a kimenet azonos legyen.

D:\Temp> msbuild HelloWorld.sfproj /t:Package

A csomag tesztelése

A csomagstruktúrát a Test-ServiceFabricApplicationPackage paranccsal ellenőrizheti helyileg a PowerShellen keresztül. Ez a parancs ellenőrzi a jegyzékelemzési problémákat, és ellenőrzi az összes hivatkozást. Ez a parancs csak a csomagban lévő könyvtárak és fájlok szerkezeti helyességét ellenőrzi. Nem ellenőrzi a kód vagy az adatcsomag tartalmát, csak azt ellenőrzi, hogy az összes szükséges fájl megtalálható-e.

Test-ServiceFabricApplicationPackage .\MyApplicationType
False
Test-ServiceFabricApplicationPackage : The EntryPoint MySetup.bat is not found.
FileName: C:\Users\servicefabric\AppData\Local\Temp\TestApplicationPackage_7195781181\nrri205a.e2h\MyApplicationType\MyServiceManifest\ServiceManifest.xml

Ez a hiba azt mutatja, hogy a SetupEntryPoint szolgáltatásjegyzékben hivatkozott MySetup.bat fájl hiányzik a kódcsomagból. A hiányzó fájl hozzáadása után az alkalmazás ellenőrzése a következőt továbbítja:

tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
    │   ServiceManifest.xml
    │
    ├───MyCode
    │       MyServiceHost.exe
    │       MySetup.bat
    │
    ├───MyConfig
    │       Settings.xml
    │
    └───MyData
            init.dat
Test-ServiceFabricApplicationPackage .\MyApplicationType
True

Ha az alkalmazás rendelkezik definiált alkalmazásparaméterekkel , a test-ServiceFabricApplicationPackage szolgáltatásban átadhatja őket a megfelelő ellenőrzéshez.

Ha ismeri azt a fürtöt, ahol az alkalmazás üzembe lesz helyezve, javasoljuk, hogy adja meg a paramétert ImageStoreConnectionString . Ebben az esetben a csomag a fürtben már futó alkalmazás korábbi verzióival is érvényesítve van. Az ellenőrzés például észleli, hogy egy azonos verziójú, de eltérő tartalommal rendelkező csomag már üzembe lett-e helyezve.

Ha az alkalmazás megfelelően van csomagolva, és megfelel az ellenőrzésnek, fontolja meg a csomag tömörítését a gyorsabb üzembehelyezési műveletek érdekében.

Csomag tömörítése

Ha egy csomag nagy vagy sok fájllal rendelkezik, tömörítheti a gyorsabb üzembe helyezés érdekében. A tömörítés csökkenti a fájlok számát és a csomag méretét. Tömörített alkalmazáscsomagok esetén az alkalmazáscsomag feltöltése hosszabb időt vehet igénybe a tömörítetlen csomag feltöltéséhez képest, különösen akkor, ha a tömörítés a másolás részeként történik. Tömörítés esetén az alkalmazástípusregisztrálása és törlése gyorsabb.

Az üzembe helyezési mechanizmus a tömörített és tömörítetlen csomagok esetében is ugyanaz. Ha a csomag tömörítve van, a rendszer a fürt lemezképtárolójában tárolja, és az alkalmazás futtatása előtt tömörítetlenül van a csomóponton. A tömörítés az érvényes Service Fabric-csomagot a tömörített verzióra cseréli. A mappának engedélyeznie kell az írási engedélyeket. Ha már tömörített csomagon futtatja a tömörítést, az nem eredményez módosításokat.

A csomagokat a Copy-ServiceFabricApplicationPackage PowerShell-parancs kapcsolóval történő futtatásával CompressPackage tömörítheti. A csomag kibontása ugyanazzal a paranccsal, kapcsolóval UncompressPackage oldható fel.

Az alábbi parancs tömöríti a csomagot anélkül, hogy a képtárolóba másolta volna. A tömörített csomagokat szükség szerint átmásolhatja egy vagy több Service Fabric-fürtre a Copy-ServiceFabricApplicationPackage jelölő nélkül SkipCopy . A csomag mostantól tömörített fájlokat tartalmaz a code, configés data csomagokhoz. Az alkalmazásjegyzék és a szolgáltatásjegyzékek nincsenek tömörítve, mert sok belső művelethez szükségesek. Például a csomagmegosztásnak, az alkalmazástípus nevének és a verzió kinyerésének bizonyos érvényesítésekhez mind hozzá kell férnie a jegyzékekhez. Ha a jegyzékfájlokat tömöríti, akkor ezek a műveletek nem lesznek hatékonyak.

tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
    │   ServiceManifest.xml
    │
    ├───MyCode
    │       MyServiceHost.exe
    │       MySetup.bat
    │
    ├───MyConfig
    │       Settings.xml
    │
    └───MyData
            init.dat
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -CompressPackage -SkipCopy
tree /f .\MyApplicationType
D:\TEMP\MYAPPLICATIONTYPE
│   ApplicationManifest.xml
│
└───MyServiceManifest
       ServiceManifest.xml
       MyCode.zip
       MyConfig.zip
       MyData.zip

Másik lehetőségként egyetlen lépésben tömörítheti és másolhatja a csomagot a Copy-ServiceFabricApplicationPackage használatával. Ha a csomag nagy, biztosítson elég magas időtúllépést a csomagtömörítéshez és a fürtbe való feltöltéshez.

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\MyApplicationType -ApplicationPackagePathInImageStore MyApplicationType -ImageStoreConnectionString fabric:ImageStore -CompressPackage -TimeoutSec 5400

A Service Fabric belsőleg ellenőrzi az alkalmazáscsomagok ellenőrzőösszegeit az ellenőrzéshez. Tömörítés használatakor az ellenőrzőösszegek az egyes csomagok tömörített verzióin lesznek kiszámítva. Ha új zip-et hoz létre ugyanabból az alkalmazáscsomagból, különböző ellenőrzőösszegeket hoz létre. Az érvényesítési hibák elkerülése érdekében használja a diff kiépítést. Ezzel a beállítással ne foglalja bele a változatlan csomagokat az új verzióba. Ehelyett hivatkozzon rájuk közvetlenül az új szolgáltatásjegyzékből.

Ha a diff kiépítés nem lehetőség, és fel kell vennie a csomagokat, hozzon létre új verziókat a , configés data a csomagokhoz, hogy elkerülje az codeellenőrzőösszegek eltérését. Tömörített csomag használata esetén új verziók létrehozása szükséges a változatlan csomagokhoz, függetlenül attól, hogy az előző verzió tömörítést használ-e.

A csomag már megfelelően van csomagolva, érvényesítve és tömörítve (ha szükséges), így készen áll egy vagy több Service Fabric-fürtön való üzembe helyezésre .

Csomagok tömörítése a Visual Studio használatával történő üzembe helyezéskor

Utasíthatja a Visual Studiót, hogy tömörítse a csomagokat az üzembe helyezés során, ha hozzáadja az elemet a CopyPackageParameters közzétételi profilhoz, és az attribútumot a CompressPackage következőre trueállítja: .

    <PublishProfile xmlns="http://schemas.microsoft.com/2015/05/fabrictools">
        <ClusterConnectionParameters ConnectionEndpoint="mycluster.westus.cloudapp.azure.com" />
        <ApplicationParameterFile Path="..\ApplicationParameters\Cloud.xml" />
        <CopyPackageParameters CompressPackage="true"/>
    </PublishProfile>

Sfpkg létrehozása

A 6.1-es verziótól kezdve a Service Fabric lehetővé teszi a kiépítést egy külső tárolóból. Ezzel a beállítással az alkalmazáscsomagot nem kell a képtárolóba másolni. Ehelyett létrehozhat egy sfpkg fájlt, és feltöltheti egy külső tárolóba, majd a kiépítéskor adja meg a letöltési URI-t a Service Fabricnek. Ugyanaz a csomag több fürt számára is kiosztható. A külső tárolóból történő kiépítés időt takarít meg a csomag egyes fürtökre való másolásához.

A sfpkg fájl egy zip, amely tartalmazza a kezdeti alkalmazáscsomagot, és a kiterjesztéssel .sfpkgrendelkezik. A zip-ben az alkalmazáscsomag tömöríthető vagy tömörítetlen lehet. Az alkalmazáscsomag tömörítése a zip-ben kód, konfiguráció és adatcsomag szinten történik, ahogy azt korábban említettük.

Fájl létrehozásához sfpkg először egy olyan mappával kezdje, amely az eredeti alkalmazáscsomagot tartalmazza, tömörítve vagy nem. Ezután bármilyen segédprogrammal tömörítse a mappát a ".sfpkg" kiterjesztéssel. Használja például a ZipFile.CreateFromDirectory parancsot.

ZipFile.CreateFromDirectory(appPackageDirectoryPath, sfpkgFilePath);

A sfpkg fájlt sávon kívül, a Service Fabricen kívül kell feltölteni a 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é. Az üzembe helyezés során a Service Fabric get műveletet hajt végre az sfpkg alkalmazáscsomag letöltéséhez, így az áruháznak engedélyeznie kell a csomag OLVASÁSI hozzáférését.

A csomag kiépítéséhez használjon külső kiépítést, amelyhez a letöltési URI és az alkalmazástípus adatai szükségesek.

Megjegyzés

A képtároló relatív útvonalán alapuló kiépítés jelenleg nem támogatja a sfpkg fájlokat. Ezért a sfpkg képet nem szabad a képtárolóba másolni.

Következő lépések

Az alkalmazások üzembe helyezése és eltávolítása ismerteti, hogyan kezelhetők az alkalmazáspéldányok a PowerShell használatával

A több környezet alkalmazásparamétereinek kezelése azt ismerteti, hogyan konfigurálhat paramétereket és környezeti változókat a különböző alkalmazáspéldányokhoz.

Az alkalmazás biztonsági szabályzatainak konfigurálása ismerteti, hogyan futtathat szolgáltatásokat biztonsági szabályzatok alatt a hozzáférés korlátozása érdekében.