Service Fabric Várias instâncias de serviço com substituição de configuração

Nosso aplicativo de malha de serviço inclui um serviço sem estado que expõe um terminal HTTP por meio deOwinCommunicationListener.

O ServiceManifest.Xml para este serviço especifica o terminal em serviço<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8090" />

O serviço sem estado pode ser acessado através de um navegador nahttp: // localhost: 8090 /

O que estamos tentando fazer é instanciar várias instâncias desse serviço em terminais diferentes no mesmo aplicativo do Service Fabric por meio do ApplicationManifest.

oServiceManifestImport importa nosso pacote de serviços e permite substituições de configuração no nível do aplicativo. Não podemos substituir o ServiceEndpoint dessa maneira, apenas os valores em 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>

Podemos criar instâncias nomeadas do serviço especificando váriosService nós sobDefaultServices

<DefaultServices>
  <Service Name="FooInstanceA">
    <StatelessService ServiceTypeName="FooType" InstanceCount="1" />
      <SingletonPartition />
    </StatelessService>
  </Service>
  <Service Name="FooInstanceB">
    <StatelessService ServiceTypeName="FooType" InstanceCount="1" />
      <SingletonPartition />
    </StatelessService>
  </Service>
</DefaultServices>

É possível especificar substituições de configuração por instância de um serviço através da configuração?

Tentei fazer com que as instâncias de serviço escutassem em uma porta específica usando o nome do serviço para descobrir qual porta o FooInstanceA escuta na porta 8090 e o FooInstanceB escuta no 8091.

Claramente, o Service Fabric está fazendo alguma mágica durante a implantação, porque quando FooInstanceB escuta em uma porta diferente daquela especificada na configuração do ServiceEndpoint, o serviço não está acessível.

O primeiro motivo é que o DACL não está definido no nó de extremidade; isso é resolvido executando;

netsh http add urlacl http://+:8091/ user=everyone listen=yes
,

Isso permite que os serviços apareçam e mostrem integridade no Service Fabric Explorer; no entanto, o FooInstanceB está respondendo com um erro HTTP 503 quando acessamos comhttp: // localhost: 8091 /

Como podemos fazer com que as instâncias de serviço escutem em portas diferentes?

Espero que esteja claro, obrigado.

questionAnswers(4)

yourAnswerToTheQuestion