天蓝色负载均衡器如何支持服务结构集群的动态端口?

时间:2017-03-03 02:40:46

标签: azure azure-service-fabric

在ServiceManifest.xml文件中的服务的端点配置中,visual studio通常会创建以下信息:

<Resources>
 <Endpoints>
  <Endpoint Protocol="http" Name="ServiceEndpointHttp" Type="Input" Port="8304" />
 </Endpoints>
</Resources>

如果我删除了Port属性及其值(如下所示),

<Resources>
 <Endpoints>
  <Endpoint Protocol="http" Name="ServiceEndpointHttp" Type="Input" />
 </Endpoints>
</Resources>

服务结构运行时将为此服务分配动态端口。

由于相关负载均衡器会自动阻止所有端口,因此如何配置负载均衡器以便可以从外部访问服务?

2 个答案:

答案 0 :(得分:2)

您可以为每项服务更新Azure负载均衡器,但由于端口是动态的,这不是一个好主意。

最好使用反向代理,例如内置reverse proxy。它将接收所有传入呼叫(在固定端口上,如80)并将它们转发到群集中的HTTP端点。

由于端点是在命名服务内部注册的,因此内置的反向代理可以找到它们。

您也可以自己构建代理并使用FabricClient.QueryManager来解析服务端点。

答案 1 :(得分:0)

根据微软的说法,内置的反向代理并不安全。它公开所有端点甚至系统服务。他们的文档中有警告。 https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy

我们一直在开发.Net Core无状态服务作为客户可执行文件,我们现在面临的问题是安全性。微软顾问建议不要使用内置的反向代理。我们现在正在编写自己的代理,它只公开我们想要公开的端点。

我们编写了一个ARM模板,用于为Azure Application Gateway配置公共IP和Azure Service Fabric集群。对于每个Web API,我们配置Azure Traffic Manager配置文件。来电从TM路由到APP网关,然后通过负载均衡器路由到VM Scale Set。