サービス ファブリック アプリケーションには、 を介して HTTP エンドポイントを公開するステートレス サービスが含まれていますOwinCommunicationListener
。
このサービスの ServiceManifest.Xml は、サービス エンドポイントを指定します<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8090" />
ステートレス サービスは、 http://localhost:8090/のブラウザーを介してアクセスできます。
私たちがやろうとしているのは、ApplicationManifest を使用して、同じ Service Fabric アプリケーション内の異なるエンドポイントでこのサービスの複数のインスタンスをインスタンス化することです。
はServiceManifestImport
サービス パッケージをインポートし、アプリケーション レベルでの構成のオーバーライドを可能にします。この方法で ServiceEndpoint をオーバーライドすることはできません。Settings.xml の値のみです。
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="FooServicePkg" ServiceManifestVersion="1.0.0" >
<ConfigOverrides Name="Config">
<Settings>
<SectionName Name="MySettings">
<Parameter Name="MySetting" Value="SomeValue">
</Settings>
</ConfigOverrides>
</ServiceManifestImport>
Service
下に複数のノードを指定することで、サービスの名前付きインスタンスを作成できますDefaultServices
<DefaultServices>
<Service Name="FooInstanceA">
<StatelessService ServiceTypeName="FooType" InstanceCount="1" />
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="FooInstanceB">
<StatelessService ServiceTypeName="FooType" InstanceCount="1" />
<SingletonPartition />
</StatelessService>
</Service>
</DefaultServices>
構成を通じて、サービスのインスタンスごとに構成のオーバーライドを指定することはできますか?
I tried to make the service instances listen on a specific port by using their service name to work out which port so FooInstanceA listens on port 8090 and FooInstanceB listens on 8091.
Clearly Service Fabric is doing some magic during deployment because when FooInstanceB listens on a port other than the one specified on the ServiceEndpoint configuration the service is not accessible.
The first reason is the DACL is not set on the endpoint, this is resolved by running;
netsh http add urlacl http://+:8091/ user=everyone listen=yes
This allows the services to come up and show healthy in the Service Fabric Explorer, however the FooInstanceB is responding with an HTTP 503 error when we access with http://localhost:8091/
How can we get the service instances listening on different ports?
I hope that's clear, thank you.