And*_*ker 20 azure-service-fabric
我们的服务结构应用程序包括一个公开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>
Run Code Online (Sandbox Code Playgroud)
我们可以通过指定多个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>
Run Code Online (Sandbox Code Playgroud)
是否可以通过配置为每个服务实例指定配置覆盖?
我尝试通过使用服务名来确定服务实例在特定端口上侦听以确定哪个端口,以便FooInstanceA侦听端口8090并且FooInstanceB侦听8091.
显然,Service Fabric在部署期间会发挥一些作用,因为当FooInstanceB侦听除ServiceEndpoint配置上指定的端口之外的端口时,该服务无法访问.
第一个原因是端点上没有设置DACL,这是通过运行来解决的;
netsh http add urlacl http://+:8091/ user=everyone listen=yes
Run Code Online (Sandbox Code Playgroud)
这允许服务在Service Fabric Explorer中出现并显示健康,但是当我们使用http:// localhost:8091 /访问时,FooInstanceB正在响应HTTP 503错误
我们如何让服务实例在不同的端口上监听?
我希望这很清楚,谢谢.
没有很多很好的选择来实现这一目标.以下是一些想法:
| 归档时间: |
|
| 查看次数: |
3986 次 |
| 最近记录: |