Service Fabric Несколько экземпляров службы с переопределением конфигурации

Наше приложение фабрики сервисов включает сервис без сохранения состояния, который предоставляет конечную точку HTTP черезOwinCommunicationListener.

ServiceManifest.Xml для этой службы указывает конечную точку службы<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8090" />

Затем к службе без сохранения состояния можно получить доступ через браузерHTTP: // локальный: 8090 /

Мы пытаемся создать несколько экземпляров этой службы на разных конечных точках в одном приложении Service Fabric через ApplicationManifest.

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 Explorer, однако FooInstanceB отвечает сообщением об ошибке HTTP 503, когда мы обращаемся с помощьюHTTP: // локальный: 8091 /

Как мы можем заставить экземпляры службы прослушивать разные порты?

Надеюсь, это понятно, спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос