Share via


Meglévő végrehajtható fájl csomagolása és üzembe helyezése a Service Fabricben

Ha egy meglévő végrehajtható fájlt vendég végrehajtható fájlként csomagol be, választhat, hogy Visual Studio-projektsablont használ, vagy manuálisan hozza létre az alkalmazáscsomagot. A Visual Studióval az alkalmazáscsomag struktúráját és jegyzékfájljait az új projektsablon hozza létre.

Tipp

Egy meglévő Windows-végrehajtható fájl szolgáltatásba való becsomagolásának legegyszerűbb módja a Visual Studio és Linux rendszeren a Yeoman használata

Meglévő végrehajtható fájl csomagolása és üzembe helyezése a Visual Studióval

A Visual Studio egy Service Fabric-szolgáltatássablont biztosít, amely segít üzembe helyezni egy Service Fabric-fürtön végrehajtható vendéget.

  1. Válassza azÚj projektfájlja> lehetőséget, és hozzon létre egy Service Fabric-alkalmazást.
  2. Válassza a Vendég végrehajtható fájl lehetőséget szolgáltatássablonként.
  3. Kattintson a Tallózás gombra a végrehajtható fájlt tartalmazó mappa kiválasztásához, és töltse ki a többi paramétert a szolgáltatás létrehozásához.
    • Kódcsomag viselkedése. Beállíthatja úgy, hogy a mappa teljes tartalmát a Visual Studio Projectbe másolja, ami akkor hasznos, ha a végrehajtható fájl nem változik. Ha azt várja, hogy a végrehajtható fájl megváltozik, és dinamikusan szeretné felvenni az új buildeket, választhatja, hogy inkább a mappára hivatkozik. Csatolt mappákat is használhat az alkalmazásprojekt Visual Studióban való létrehozásakor. Ez a hivatkozás a forráshelyre mutat a projekten belül, így a vendég végrehajtható fájlját frissítheti a forrás célhelyén. Ezek a frissítések az alkalmazáscsomag részévé válnak a buildelés során.
    • A Program a szolgáltatás elindításához futtatandó végrehajtható fájlt adja meg.
    • Az argumentumok azokat az argumentumokat határozzák meg, amelyeket át kell adni a végrehajtható fájlnak. Ez argumentumokat tartalmazó paraméterek listája lehet.
    • A WorkingFolder megadja az elindítandó folyamat munkakönyvtárát. Három értéket adhat meg:
      • CodeBase azt adja meg, hogy a munkakönyvtár az alkalmazáscsomag kódkönyvtárára lesz beállítva (Code a könyvtár az előző fájlszerkezetben látható).
      • CodePackage azt adja meg, hogy a munkakönyvtár az alkalmazáscsomag gyökerére lesz állítva (GuestService1Pkg az előző fájlszerkezetben látható).
      • Work azt adja meg, hogy a fájlok egy work nevű alkönyvtárba kerülnek.
  4. Nevezze el a szolgáltatást, és kattintson az OK gombra.
  5. Ha a szolgáltatásnak végpontra van szüksége a kommunikációhoz, hozzáadhatja a protokollt, a portot és a típust a ServiceManifest.xml fájlhoz. Példa: <Endpoint Name="NodeAppTypeEndpoint" Protocol="http" Port="3000" UriScheme="http" PathSuffix="myapp/" Type="Input" />.
  6. Most már használhatja a csomagot, és közzéteheti a műveletet a helyi fürtön a Megoldás hibakeresésével a Visual Studióban. Ha készen áll, közzéteheti az alkalmazást egy távoli fürtön, vagy beadhatja a megoldást a verziókövetéshez.
  7. Olvassa el a futó alkalmazás ellenőrzése című cikket, amelyből megtudhatja, hogyan tekintheti meg a Service Fabric Explorer-ban futó vendég végrehajtható szolgáltatást.

Egy példaútmutatóért lásd: Az első végrehajtható vendégalkalmazás létrehozása a Visual Studióval.

Több végrehajtható fájl csomagolása a Visual Studióval

A Visual Studióval több vendég végrehajtható fájlt tartalmazó alkalmazáscsomagot hozhat létre. Az első vendég végrehajtható fájl hozzáadása után kattintson a jobb gombbal az alkalmazásprojektre, és válassza az Add-New> Service Fabric szolgáltatást a második vendég végrehajtható projekt megoldáshoz való hozzáadásához.

Megjegyzés

Ha úgy dönt, hogy összekapcsolja a forrást a Visual Studio-projektben a Visual Studio-megoldás létrehozásakor, győződjön meg arról, hogy az alkalmazáscsomag naprakész a forrás módosításaival.

Meglévő végrehajtható fájl csomagolása és üzembe helyezése Linuxon a Yeoman használatával

A linuxos vendég végrehajtható fájlok létrehozására és üzembe helyezésére vonatkozó eljárás ugyanaz, mint egy C# vagy Java-alkalmazás üzembe helyezése.

  1. Írja be a terminálba a következőt: yo azuresfguest.
  2. Adjon nevet az alkalmazásnak.
  3. Nevezze el a szolgáltatást, és adja meg a részleteket, beleértve a végrehajtható fájl elérési útját és azokat a paramétereket, amelyeket meg kell hívnia.

A Yeoman létrehoz egy alkalmazáscsomagot a megfelelő alkalmazás- és jegyzékfájlokkal, valamint telepítési és eltávolítási szkriptekkel.

Több végrehajtható fájl csomagolása a Yeoman használatával Linuxon

Ha egy másik szolgáltatást szeretne hozzáadni a yo használatával már létrehozott alkalmazáshoz, hajtsa végre az alábbi lépéseket:

  1. Lépjen a meglevő alkalmazás gyökérkönyvtárába. Például cd ~/YeomanSamples/MyApplication, ha a MyApplication a Yeoman által létrehozott alkalmazás.
  2. Futtassa a parancsot yo azuresfguest:AddService , és adja meg a szükséges adatokat.

Meglévő végrehajtható fájl manuális csomagolása és üzembe helyezése

A vendég végrehajtható fájl manuális csomagolásának folyamata a következő általános lépéseken alapul:

  1. Hozza létre a csomag könyvtárszerkezetét.
  2. Adja hozzá az alkalmazás kód- és konfigurációs fájljait.
  3. Szerkessze a szolgáltatásjegyzékfájlt.
  4. Szerkessze az alkalmazás jegyzékfájlját.

A csomag könyvtárszerkezetének létrehozása

Első lépésként hozza létre a címtárstruktúrát az Azure Service Fabric-alkalmazás csomagolása című cikkben leírtak szerint.

Az alkalmazás kód- és konfigurációs fájljainak hozzáadása

A címtárstruktúra létrehozása után hozzáadhatja az alkalmazás kód- és konfigurációs fájljait a kód- és konfigurációs könyvtárakhoz. A kód- vagy konfigurációs könyvtárak alatt további könyvtárakat vagy alkönyvtárakat is létrehozhat.

A Service Fabric elvégzi xcopy az alkalmazás gyökérkönyvtárának tartalmát, így a két legfelső könyvtár, kód és beállítás létrehozásán kívül nincs előre definiált struktúra. (Igény szerint különböző neveket is választhat. További részletek a következő szakaszban találhatók.)

Megjegyzés

Győződjön meg arról, hogy tartalmazza az alkalmazáshoz szükséges összes fájlt és függőséget. A Service Fabric átmásolja az alkalmazáscsomag tartalmát azon fürt összes csomópontján, ahol az alkalmazás szolgáltatásai üzembe lesznek helyezve. A csomagnak tartalmaznia kell az alkalmazás által futtatandó összes kódot. Ne feltételezzük, hogy a függőségek már telepítve vannak.

A szolgáltatás jegyzékfájljának szerkesztése

A következő lépés a szolgáltatásjegyzékfájl szerkesztése a következő információk belefoglalásával:

  • A szolgáltatástípus neve. Ez egy olyan azonosító, amelyet a Service Fabric egy szolgáltatás azonosítására használ.
  • Az alkalmazás elindításához használandó parancs (ExeHost).
  • Minden olyan szkript, amelyet futtatni kell az alkalmazás beállításához (SetupEntrypoint).

Az alábbiakban egy példa látható egy fájlra ServiceManifest.xml :

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" Name="NodeApp" Version="1.0.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
   <ServiceTypes>
      <StatelessServiceType ServiceTypeName="NodeApp" UseImplicitHost="true"/>
   </ServiceTypes>
   <CodePackage Name="code" Version="1.0.0.0">
      <SetupEntryPoint>
         <ExeHost>
             <Program>scripts\launchConfig.cmd</Program>
         </ExeHost>
      </SetupEntryPoint>
      <EntryPoint>
         <ExeHost>
            <Program>node.exe</Program>
            <Arguments>bin/www</Arguments>
            <WorkingFolder>CodePackage</WorkingFolder>
         </ExeHost>
      </EntryPoint>
   </CodePackage>
   <Resources>
      <Endpoints>
         <Endpoint Name="NodeAppTypeEndpoint" Protocol="http" Port="3000" Type="Input" />
      </Endpoints>
   </Resources>
</ServiceManifest>

A következő szakaszok végighaladnak a fájl azon részein, amelyeket frissítenie kell.

ServiceTypes frissítése

<ServiceTypes>
  <StatelessServiceType ServiceTypeName="NodeApp" UseImplicitHost="true" />
</ServiceTypes>
  • Tetszőleges nevet választhat a számára ServiceTypeName. A fájl a ApplicationManifest.xml szolgáltatás azonosítására használja az értéket.
  • Adja meg a következőt: UseImplicitHost="true". Ez az attribútum arra utasítja a Service Fabricet, hogy a szolgáltatás egy önálló alkalmazáson alapul, ezért a Service Fabricnek mindössze annyit kell tennie, hogy elindítja folyamatként, és figyeli annak állapotát.

A CodePackage frissítése

A CodePackage elem határozza meg a szolgáltatás kódjának helyét (és verzióját).

<CodePackage Name="Code" Version="1.0.0.0">

Az Name elem a szolgáltatás kódját tartalmazó alkalmazáscsomag könyvtárának nevének megadására szolgál. CodePackage is rendelkezik a version attribútummal. Ez a kód verziójának megadására használható, és felhasználható a szolgáltatás kódjának frissítésére is a Service Fabric alkalmazás életciklus-felügyeleti infrastruktúrájának használatával.

Nem kötelező: SetupEntrypoint frissítése

<SetupEntryPoint>
   <ExeHost>
       <Program>scripts\launchConfig.cmd</Program>
   </ExeHost>
</SetupEntryPoint>

A SetupEntryPoint elem segítségével megadhatja azokat a végrehajtható vagy kötegelt fájlokat, amelyeket a szolgáltatás kódjának elindítása előtt végre kell hajtani. Nem kötelező lépés, ezért nem kell belefoglalni, ha nincs szükség inicializálásra. A SetupEntryPoint a szolgáltatás minden újraindításakor végre lesz hajtva.

Csak egy SetupEntryPoint van, ezért a beállítási szkripteket egyetlen kötegfájlba kell csoportosítani, ha az alkalmazás beállításához több szkriptre van szükség. A SetupEntryPoint bármilyen típusú fájlt végrehajthat: végrehajtható fájlokat, kötegelt fájlokat és PowerShell-parancsmagokat. További részletekért lásd: SetupEntryPoint konfigurálása.

Az előző példában a SetupEntryPoint egy nevű LaunchConfig.cmd kötegfájlt futtat, amely a scripts kódkönyvtár alkönyvtárában található (feltéve, hogy a WorkingFolder elem CodeBase értékre van állítva).

Az EntryPoint frissítése

<EntryPoint>
  <ExeHost>
    <Program>node.exe</Program>
    <Arguments>bin/www</Arguments>
    <WorkingFolder>CodeBase</WorkingFolder>
  </ExeHost>
</EntryPoint>

A EntryPoint szolgáltatás jegyzékfájljának eleme határozza meg a szolgáltatás elindításának módját.

Az ExeHost elem határozza meg a szolgáltatás elindításához használandó végrehajtható fájlokat (és argumentumokat). Ha szeretné, hozzáadhatja az IsExternalExecutable="true" attribútumot ExeHost , hogy jelezze, hogy a program külső végrehajtható fájl a kódcsomagon kívül. Például: <ExeHost IsExternalExecutable="true">.

  • Program annak a végrehajtható fájlnak a nevét adja meg, amely elindítja a szolgáltatást.
  • Arguments megadja azokat az argumentumokat, amelyeket át kell adni a végrehajtható fájlnak. Argumentumokkal rendelkező paraméterek listája lehet.
  • WorkingFolder a elindítandó folyamat munkakönyvtárát adja meg. Három értéket adhat meg:
    • CodeBase meghatározza, hogy a munkakönyvtár az alkalmazáscsomag kódkönyvtárára (az előző fájlstruktúra könyvtárára)Code legyen beállítva.
    • CodePackage megadja, hogy a munkakönyvtár az alkalmazáscsomag gyökerére legyen állítva (GuestService1Pkg az előző fájlstruktúrában).
      • Work azt határozza meg, hogy a fájlok egy munka nevű alkönyvtárba kerüljenek.

A WorkingFolder segítségével beállíthatja a megfelelő munkakönyvtárat, hogy a relatív elérési utakat az alkalmazás vagy az inicializálási szkriptek használhassák.

Végpontok frissítése és regisztrálás az Elnevezési szolgáltatásban kommunikáció céljából

<Endpoints>
   <Endpoint Name="NodeAppTypeEndpoint" Protocol="http" Port="3000" Type="Input" />
</Endpoints>

Az előző példában az Endpoint elem határozza meg azokat a végpontokat, amelyeket az alkalmazás figyelhet. Ebben a példában a Node.js alkalmazás http-n figyel a 3000-s porton.

Emellett megkérheti a Service Fabricet, hogy tegye közzé ezt a végpontot az elnevezési szolgáltatásban, hogy más szolgáltatások felfedezhessék a végpont címét a szolgáltatás számára. Ez lehetővé teszi a vendég végrehajtható szolgáltatások közötti kommunikációt. A közzétett végpont címe a következő formában jelenik UriScheme://IPAddressOrFQDN:Port/PathSuffixmeg: . UriScheme és PathSuffix választható attribútumok. IPAddressOrFQDN a végrehajtható csomópont IP-címe vagy teljes tartományneve, és a rendszer kiszámítja Önnek.

Az alábbi példában a szolgáltatás üzembe helyezése után a Service Fabric Explorer egy, a szolgáltatáspéldányhoz közzétetthez http://10.1.4.92:3000/myapp/ hasonló végpont jelenik meg. Vagy ha ez egy helyi gép, megjelenik a következő http://localhost:3000/myapp/: .

<Endpoints>
   <Endpoint Name="NodeAppTypeEndpoint" Protocol="http" Port="3000"  UriScheme="http" PathSuffix="myapp/" Type="Input" />
</Endpoints>

Ezeket a címeket fordított proxyval használhatja a szolgáltatások közötti kommunikációhoz.

Az alkalmazás jegyzékfájljának szerkesztése

Miután konfigurálta a Servicemanifest.xml fájlt, módosítania kell a ApplicationManifest.xml fájlt, hogy a megfelelő szolgáltatástípust és nevet használja.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="NodeAppType" ApplicationTypeVersion="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
   <ServiceManifestImport>
      <ServiceManifestRef ServiceManifestName="NodeApp" ServiceManifestVersion="1.0.0.0" />
   </ServiceManifestImport>
</ApplicationManifest>

ServiceManifestImport

ServiceManifestImport Az elemben megadhat egy vagy több szolgáltatást, amelyet be szeretne vonni az alkalmazásba. A szolgáltatásokra a ( ) hivatkozik ServiceManifestName, amely annak a könyvtárnak a nevét adja meg, amelyben a ServiceManifest.xml fájl található.

<ServiceManifestImport>
  <ServiceManifestRef ServiceManifestName="NodeApp" ServiceManifestVersion="1.0.0.0" />
</ServiceManifestImport>

Naplózás beállítása

A vendég végrehajtható fájlok esetében hasznos lehet megtekinteni a konzolnaplókat, hogy megtudja, az alkalmazás és a konfigurációs szkriptek hibát jeleznek-e. A konzol átirányítása konfigurálható a fájlban az ServiceManifest.xmlConsoleRedirection elem használatával.

Figyelmeztetés

Soha ne használja a konzol átirányítási szabályzatát éles környezetben üzembe helyezett alkalmazásokban, mert ez hatással lehet az alkalmazás feladatátvételére. Ezt csak helyi fejlesztési és hibakeresési célokra használja.

<EntryPoint>
  <ExeHost>
    <Program>node.exe</Program>
    <Arguments>bin/www</Arguments>
    <WorkingFolder>CodeBase</WorkingFolder>
    <ConsoleRedirection FileRetentionCount="5" FileMaxSizeInKb="2048"/>
  </ExeHost>
</EntryPoint>

ConsoleRedirection segítségével átirányíthatja a konzol kimenetét (stdout és stderr) egy munkakönyvtárba. Ez lehetővé teszi annak ellenőrzését, hogy nincsenek-e hibák az alkalmazás beállítása vagy végrehajtása során a Service Fabric-fürtben.

FileRetentionCount meghatározza, hogy a program hány fájlt ment a munkakönyvtárba. Az 5-ös érték például azt jelenti, hogy az előző öt végrehajtás naplófájljai a munkakönyvtárban vannak tárolva.

FileMaxSizeInKb A naplófájlok maximális méretét határozza meg.

A naplófájlokat a szolgáltatás egyik munkakönyvtárában menti a rendszer. A fájlok helyét a Service Fabric Explorer használatával állapíthatja meg, hogy a szolgáltatás melyik csomóponton fut, és melyik munkakönyvtárat használja. Erről a folyamatról a cikk későbbi részében olvashat.

Üzembe helyezés

Az utolsó lépés az alkalmazás üzembe helyezése. Az alábbi PowerShell-szkript bemutatja, hogyan helyezheti üzembe az alkalmazást a helyi fejlesztési fürtben, és hogyan indíthat el egy új Service Fabric-szolgáltatást.


Connect-ServiceFabricCluster localhost:19000

Write-Host 'Copying application package...'
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath 'C:\Dev\MultipleApplications' -ImageStoreConnectionString 'file:C:\SfDevCluster\Data\ImageStoreShare' -ApplicationPackagePathInImageStore 'nodeapp'

Write-Host 'Registering application type...'
Register-ServiceFabricApplicationType -ApplicationPathInImageStore 'nodeapp'

New-ServiceFabricApplication -ApplicationName 'fabric:/nodeapp' -ApplicationTypeName 'NodeAppType' -ApplicationTypeVersion 1.0

New-ServiceFabricService -ApplicationName 'fabric:/nodeapp' -ServiceName 'fabric:/nodeapp/nodeappservice' -ServiceTypeName 'NodeApp' -Stateless -PartitionSchemeSingleton -InstanceCount 1

Tipp

Tömörítse a csomagot, mielőtt a lemezképtárba másol, ha a csomag nagy vagy sok fájllal rendelkezik. További tudnivalók itt.

A Service Fabric-szolgáltatások különböző "konfigurációkban" helyezhetők üzembe. Üzembe helyezhető például egy vagy több példányként, vagy úgy is üzembe helyezhető, hogy a Service Fabric-fürt minden csomópontján egy-egy példány legyen.

A InstanceCount parancsmag paramétere New-ServiceFabricService határozza meg, hogy a szolgáltatás hány példányát kell elindítani a Service Fabric-fürtben. Az értéket az InstanceCount üzembe helyezni kívánt alkalmazás típusától függően állíthatja be. A két leggyakoribb forgatókönyv a következő:

  • InstanceCount = "1". Ebben az esetben a szolgáltatásnak csak egy példánya van üzembe helyezve a fürtben. A Service Fabric ütemezője határozza meg, hogy a szolgáltatás melyik csomóponton lesz üzembe helyezve.
  • InstanceCount ="-1". Ebben az esetben a szolgáltatás egy példánya lesz üzembe helyezve a Service Fabric-fürt minden csomópontján. Az eredmény az, hogy a szolgáltatásnak egy (és csak egy) példánya van a fürt minden csomópontja számára.

Ez egy hasznos konfiguráció az előtérbeli alkalmazásokhoz (például EGY REST-végponthoz), mivel az ügyfélalkalmazásoknak a végpont használatához "csatlakozniuk" kell a fürt bármely csomópontjához. Ez a konfiguráció akkor is használható, ha például a Service Fabric-fürt összes csomópontja csatlakozik egy terheléselosztóhoz. Az ügyfélforgalom ezután elosztható a fürt összes csomópontján futó szolgáltatás között.

A futó alkalmazás ellenőrzése

A Service Fabric Explorer azonosítsa azt a csomópontot, amelyen a szolgáltatás fut. Ebben a példában a Node1-en fut:

Csomópont, amelyen a szolgáltatás fut

Ha megkeresi a csomópontot, és megkeresi az alkalmazást, láthatja a csomópont alapvető adatait, beleértve annak helyét a lemezen.

Hely a lemezen

Ha a Kiszolgálókezelővel böngészi a könyvtárat, a következő képernyőképen látható módon megtalálhatja a munkakönyvtárat és a szolgáltatás naplómappáját:

A napló helye

Következő lépések

Ebben a cikkben megtanulta, hogyan csomagolhat be egy vendég végrehajtható fájlt, és hogyan helyezheti üzembe a Service Fabricben. A kapcsolódó információkért és feladatokért tekintse meg az alábbi cikkeket.