gpt4 book ai didi

azure-service-fabric - Service Fabric具有配置覆盖的多个服务实例

转载 作者:行者123 更新时间:2023-12-03 12:18:26 25 4
gpt4 key购买 nike

我们的服务结构应用程序包括无状态服务,该服务通过OwinCommunicationListener公开HTTP端点。

此服务的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>

是否可以通过配置为每个服务实例指定配置替代?

我试图通过使用服务名称来确定服务实例在特定端口上的侦听,以便FooInstanceA在端口8090上侦听,而FooInstanceB在8091上侦听。

显然,Service Fabric在部署过程中发挥了不可思议的作用,因为当FooInstanceB侦听ServiceEndpoint配置上指定的端口以外的端口时,该服务将不可访问。

第一个原因是未在端点上设置DACL,这可以通过运行来解决;
netsh http add urlacl http://+:8091/ user=everyone listen=yes

这允许服务启动并在Service Fabric资源管理器中显示正常,但是当我们使用 http://localhost:8091/访问时,FooInstanceB响应时显示HTTP 503错误。

如何使服务实例在不同的端口上侦听?

我希望这很清楚,谢谢。

最佳答案

要实现此目的,没有很多好的选择。这里有一些想法:

  • 在一个应用程序内创建多个应用程序实例,而不是多个相同类型的服务。这样一来,您便可以使用应用程序参数来配置特定服务的行为。
  • 在您的服务类型中创建多个配置包。每个配置包将用于其中一个服务实例。确定服务实例分配给哪个配置包将需要动态,也许基于服务实例的名称?当然,这不是一个很好的选择,因为它将服务定义与将要创建的实例数量结合在一起。
  • 自定义配置实现。也许让您的服务公开一个端点,使您可以在部署后对其进行配置。或者让服务调用其他一些在激活时提供其配置的管理服务。
  • 关于azure-service-fabric - Service Fabric具有配置覆盖的多个服务实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163124/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com