Service Fabric manifestů aplikací a služeb
Tento článek popisuje, jak se Service Fabric aplikace a služby definují a používají ApplicationManifest.xml a ServiceManifest.xml soubory. Podrobnější příklady najdete v tématu Příklady manifestu aplikace a služby. Schéma XML pro tyto soubory manifestu je dokumentováno v dokumentaci ke schématu ServiceFabricServiceModel. xsd.
Upozornění
Schéma souboru XML manifestu vynutilo správné pořadí podřízených elementů. V případě částečného alternativního řešení otevřete při vytváření nebo úpravách Service Fabric manifestů "C:\Program Files\Microsoft SDKs\Service Fabric\schemas\ServiceFabricServiceModel.xsd" v aplikaci Visual Studio. To vám umožní kontrolovat pořadí podřízených elementů a poskytuje práci.
Popište službu v ServiceManifest.xml
Manifest služby deklarativně definuje typ a verzi služby. Určuje metadata služby, jako je typ služby, vlastnosti stavu, metriky vyrovnávání zatížení, binární soubory služby a konfigurační soubory. Jiným způsobem, popisuje kód, konfiguraci a balíčky dat, které tvoří balíček služby pro podporu jednoho nebo více typů služeb. Manifest služby může obsahovat více balíčků kódu, konfigurací a dat, které mohou být nezávislé na verzi. Tady je manifest služby pro ASP.NET Core webovou front-end službu pro hlasovací ukázkovou aplikaci (a tady jsou některé podrobnější příklady):
<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="VotingWebPkg"
Version="1.0.0"
xmlns="http://schemas.microsoft.com/2011/01/fabric"
xmlns:xsd="https://www.w3.org/2001/XMLSchema"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<ServiceTypes>
<!-- This is the name of your ServiceType.
This name must match the string used in RegisterServiceType call in Program.cs. -->
<StatelessServiceType ServiceTypeName="VotingWebType" />
</ServiceTypes>
<!-- Code package is your service executable. -->
<CodePackage Name="Code" Version="1.0.0">
<EntryPoint>
<ExeHost>
<Program>VotingWeb.exe</Program>
<WorkingFolder>CodePackage</WorkingFolder>
</ExeHost>
</EntryPoint>
</CodePackage>
<!-- Config package is the contents of the Config directory under PackageRoot that contains an
independently-updateable and versioned set of custom configuration settings for your service. -->
<ConfigPackage Name="Config" Version="1.0.0" />
<Resources>
<Endpoints>
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" Port="8080" />
</Endpoints>
</Resources>
</ServiceManifest>
Atributy verze jsou nestrukturované řetězce a nejsou analyzovány systémem. Atributy verze se používají ke každé součásti pro upgradování.
ServiceTypes deklaruje, jaké typy služeb jsou podporovány CodePackages v tomto manifestu. Při vytváření instance služby proti jednomu z těchto typů služeb jsou všechny balíčky kódu deklarované v tomto manifestu aktivovány spuštěním jejich vstupních bodů. Očekává se, že výsledné procesy zaregistrují podporované typy služeb za běhu. Typy služeb jsou deklarovány na úrovni manifestu, nikoli na úrovni balíčku kódu. Pokud tedy existuje více balíčků kódu, všechny se aktivují pokaždé, když systém hledá některý z deklarovaných typů služeb.
Spustitelný soubor určený entrypointem je obvykle dlouhotrý hostitel služby. SetupEntryPoint je privilegovaný vstupní bod, který se spouští se stejnými přihlašovacími údaji jako Service Fabric (obvykle účet LocalSystem) před libovolným jiným vstupním bodem. Přítomnost samostatného instalačního vstupního bodu zabraňuje spuštění hostitele služby s vysokými oprávněními po delší časová období. Spustitelný soubor určený entrypointem se spustí po úspěšném ukončení SetupEntryPoint. Pokud se proces někdy ukončí nebo dojde k chybě, výsledný proces se monitoruje a restartuje (počínaje znovu SetupEntryPoint).
Typické scénáře použití SetupEntryPoint jsou při spuštění spustitelného souboru před spuštěním služby nebo provedení operace se zvýšenými oprávněními. Například:
- Nastavení a inicializace proměnných prostředí, které spustitelný soubor služby potřebuje. To není omezeno pouze na spustitelné soubory zapsané prostřednictvím Service Fabric programovacích modelů. Například npm.exe některé proměnné prostředí nakonfigurované pro nasazení node.js aplikace.
- Nastavení řízení přístupu instalací certifikátů zabezpečení
Další informace o tom, jak nakonfigurovat SetupEntryPoint, najdete v tématu Konfigurace zásad pro vstupní bod instalace služby.
EnvironmentVariables (nenastavenou v předchozím příkladu) poskytuje seznam proměnných prostředí, které jsou nastavené pro tento balíček kódu. Proměnné prostředí je možné přepsat v objektu , ApplicationManifest.xml aby poskytovaly různé hodnoty pro různé instance služby.
Datový balíček (není nastaven v předchozím příkladu) deklaruje složku s názvem atribut Name , která obsahuje libovolná statická data, která má proces za běhu spotřebovat.
ConfigPackage deklaruje složku, která je pojmenována atributem Name , který obsahuje soubor Settings.xml . Soubor nastavení obsahuje oddíly nastavení dvojice klíč-hodnota, které proces načítá za běhu zpět. Pokud se během upgradu změnila jenom verze ConfigPackage, spuštěný proces se nerestartuje. Místo toho zpětné volání upozorní proces, že došlo ke změně nastavení konfigurace, aby bylo možné je znovu načíst dynamicky. Tady je příklad Settings.xml souboru:
<Settings xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Section Name="MyConfigurationSection">
<Parameter Name="MySettingA" Value="Example1" />
<Parameter Name="MySettingB" Value="Example2" />
</Section>
</Settings>
Service Fabric koncový bod služby je příkladem Service Fabric prostředků. Prostředek Service Fabric lze deklarovat nebo změnit bez změny zkompilovaného kódu. Přístup k Service Fabric prostředkům, které jsou zadány v manifestu služby, lze ovládat prostřednictvím služby zabezpečení v manifestu aplikace. Pokud je prostředek koncového bodu definovaný v manifestu služby, Service Fabric přiřadí porty z rezervovaného rozsahu portů aplikace, když není explicitně zadaný port. Přečtěte si další informace o zadávání nebo přepisu prostředků koncových bodů.
Upozornění
Návrhem statických portů se nesmí překrývat s rozsahem portů aplikace zadaným v manifestem clusteru. Pokud zadáte statický port, přiřaďte ho mimo rozsah portů aplikace, jinak bude výsledkem konflikty portů. S vydáním verze 6.5 CU2 budeme při zjišťování takového konfliktu vystavovat Upozornění na stav , ale nasazení bude pokračovat v synchronizaci s dodaným chováním 6,5. Můžeme ale zabránit nasazení aplikace z dalších hlavních verzí.
Popis aplikace v ApplicationManifest.xml
Manifest aplikace deklarativně popisuje typ a verzi aplikace. Určuje metadata složení služby, jako jsou stabilní názvy, schéma dělení, faktor počtu instancí nebo replikace, zásady zabezpečení/izolace, omezení umístění, přepsání konfigurace a základní typy služeb. Jsou popsány také domény vyrovnávání zatížení, do kterých je aplikace umístěna.
Manifest aplikace proto popisuje prvky na úrovni aplikace a odkazuje na jeden nebo více manifestů služby pro vytvoření typu aplikace. Tady je manifest aplikace pro ukázkovou aplikaci Voting (a tady je několik podrobnějších příkladů):
<?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="VotingType" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="VotingData_MinReplicaSetSize" DefaultValue="3" />
<Parameter Name="VotingData_PartitionCount" DefaultValue="1" />
<Parameter Name="VotingData_TargetReplicaSetSize" DefaultValue="3" />
<Parameter Name="VotingWeb_InstanceCount" DefaultValue="-1" />
</Parameters>
<!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion
should match the Name and Version attributes of the ServiceManifest element defined in the
ServiceManifest.xml file. -->
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="VotingDataPkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
</ServiceManifestImport>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="VotingWebPkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
</ServiceManifestImport>
<DefaultServices>
<!-- The section below creates instances of service types, when an instance of this
application type is created. You can also create one or more instances of service type using the
ServiceFabric PowerShell module.
The attribute ServiceTypeName below must match the name defined in the imported ServiceManifest.xml file. -->
<Service Name="VotingData">
<StatefulService ServiceTypeName="VotingDataType" TargetReplicaSetSize="[VotingData_TargetReplicaSetSize]" MinReplicaSetSize="[VotingData_MinReplicaSetSize]">
<UniformInt64Partition PartitionCount="[VotingData_PartitionCount]" LowKey="0" HighKey="25" />
</StatefulService>
</Service>
<Service Name="VotingWeb" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="VotingWebType" InstanceCount="[VotingWeb_InstanceCount]">
<SingletonPartition />
<PlacementConstraints>(NodeType==NodeType0)</PlacementConstraints
</StatelessService>
</Service>
</DefaultServices>
</ApplicationManifest>
Podobně jako manifesty služby jsou atributy verze nestrukturované řetězce a systém je ne parsuje. Atributy verze se také používají k verzím jednotlivých komponent pro upgrady.
Parametry definují parametry používané v manifestu aplikace. Hodnoty těchto parametrů lze zadat při vytvoření instance aplikace a mohou přepsat nastavení konfigurace aplikace nebo služby. Výchozí hodnota parametru se použije, pokud se hodnota během vytváření instance aplikace nezmění. Informace o tom, jak udržovat různé parametry aplikací a služeb pro jednotlivá prostředí, najdete v tématu Správa parametrů aplikace pro více prostředí.
ServiceManifestImport obsahuje odkazy na manifesty služby, které tvoří tento typ aplikace. Manifest aplikace může obsahovat více importů manifestu služby, každý z nich může být nezávisle na verzích. Manifesty importované služby určují, jaké typy služeb jsou v rámci tohoto typu aplikace platné. V rámci ServiceManifestImport přepíšete hodnoty konfigurace v Settings.xml a proměnných prostředí v ServiceManifest.xml souborech. Zásady (nenastavené v předchozím příkladu) pro vazby koncových bodů, zabezpečení a přístup a sdílení balíčků je možné nastavit u importovaných manifestů služby. Další informace najdete v tématu Konfigurace zásad zabezpečení pro vaši aplikaci.
DefaultServices deklaruje instance služby, které jsou automaticky vytvořeny pokaždé, když je vytvořena instance aplikace proti tomuto typu aplikace. Výchozí služby jsou v každém ohledu na pohodlí a chovají se jako běžné služby, a to po jejich vytvoření. Jsou upgradovány spolu s jinými službami v instanci aplikace a lze je také odebrat. Manifest aplikace může obsahovat několik výchozích služeb.
Certifikáty (nenastavené v předchozím příkladu) deklaruje certifikáty používané k nastavení koncových bodů https nebo k šifrování tajných klíčů v manifestu aplikace.
Omezení umístění jsou příkazy, které definují, kde by měly být spouštěny služby. Tyto příkazy jsou připojeny k jednotlivým službám, které vyberete pro jednu nebo více vlastností uzlu. Další informace najdete v tématu omezení umístění a syntaxe vlastností uzlů .
Zásady (nenastavené v předchozím příkladu) popisují shromažďování protokolů, výchozí zásady spuštění jako, stava přístup k nastavení na úrovni aplikace, včetně toho, jestli služba (y) má přístup k modulu runtime Service Fabric.
Poznámka
Ve výchozím nastavení mají aplikace Service Fabric přístup k modulu runtime Service Fabric, ve formě koncového bodu, který přijímá požadavky specifické pro aplikaci, a proměnných prostředí odkazujících na cesty k souborům na hostiteli, který obsahuje prostředky infrastruktury a soubory specifické pro aplikaci. Zvažte zakázání tohoto přístupu, pokud je aplikace hostitelem nedůvěryhodného kódu (tj. kód, jehož provenience je neznámá nebo který vlastník aplikace ví, že nebudete moci provádět zabezpečení). Další informace najdete v tématu osvědčené postupy zabezpečení v Service Fabric.
Objekty zabezpečení (nejsou nastavené v předchozím příkladu) popisují objekty zabezpečení (uživatele nebo skupiny), které jsou potřebné ke spouštění služeb a zabezpečení prostředků služby. Na objekty zabezpečení se odkazuje v oddílech zásad .
Další kroky
- Zabalit aplikaci a připravit ji na nasazení.
- Použijte StartupServices.xml v aplikaci.
- Nasaďte a odeberte aplikace.
- Nakonfigurujte parametry a proměnné prostředí pro různé instance aplikace.
- Nakonfigurujte zásady zabezpečení pro vaši aplikaci.
- Nastavení koncových bodů HTTPS.
- Šifrování tajných kódů v manifestu aplikace