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.
- Válassza azÚj projektfájlja> lehetőséget, és hozzon létre egy Service Fabric-alkalmazást.
- Válassza a Vendég végrehajtható fájl lehetőséget szolgáltatássablonként.
- 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.
- Nevezze el a szolgáltatást, és kattintson az OK gombra.
- 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" />
. - 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.
- 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.
- Írja be a terminálba a következőt:
yo azuresfguest
. - Adjon nevet az alkalmazásnak.
- 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:
- Lépjen a meglevő alkalmazás gyökérkönyvtárába. Például
cd ~/YeomanSamples/MyApplication
, ha aMyApplication
a Yeoman által létrehozott alkalmazás. - 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:
- Hozza létre a csomag könyvtárszerkezetét.
- Adja hozzá az alkalmazás kód- és konfigurációs fájljait.
- Szerkessze a szolgáltatásjegyzékfájlt.
- 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 aApplicationManifest.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/PathSuffix
meg: . 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.xml
ConsoleRedirection
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:
Ha megkeresi a csomópontot, és megkeresi az alkalmazást, láthatja a csomópont alapvető adatait, beleértve annak helyét 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:
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.
- Minta egy vendég végrehajtható fájl csomagolásához és üzembe helyezéséhez, beleértve a csomagolóeszköz előzetes verziójára mutató hivatkozást
- Minta az elnevezési szolgáltatáson keresztül a REST használatával kommunikáló két vendég végrehajtható fájlból (C# és nodejs)
- Az első Service Fabric-alkalmazás létrehozása a Visual Studióval
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: