我已按照from Microsoft步骤创建了一个多节点内部部署服务Fabric集群。我已经为群集部署了一个无状态应用程序,它似乎工作正常。当我连接到群集时,我使用了其中一个节点的IP地址。这样做,我可以使用Connect-ServiceFabricCluster nodename:19000
通过Powershell连接,我可以连接到Service Fabric Explorer网站(http://nodename:19080/explorer/index.html)。
在线示例表明,如果我在Azure中托管,我可以连接到http://mycluster.eastus.cloudapp.azure.com:19000并且它会解析,但是我无法弄清楚当地的等效内容。我尝试连接到我的示例集群:Connect-ServiceFabricCluster sampleCluster.domain.local:19000
但返回:
警告:无法联系命名服务。尝试联系故障转移管理器服务... 警告:无法联系故障转移管理器服务,尝试联系FMM ... 假 警告:没有这样的主机
Connect-ServiceFabricCluster:无法访问群集端点,请检查是否存在连接/防火墙/ DNS问题。
我在设置中遗漏了什么?是否应该在某处允许我连接到群集的中央DNS条目?或者我是否尝试做一些内部不支持的事情?
答案 0 :(得分:1)
是的,您缺少负载均衡器。
这是我能找到的最好的资源,如果无法使用,我会粘贴相关内容。
反向代理”-设置Service Fabric群集时,可以选择在群集上的每个节点上安装反向代理。它代表客户执行服务解析,并将请求转发到包含应用程序的正确节点。在大多数情况下,在Service Fabric上运行的服务仅在节点的子集上运行。由于负载平衡器将不知道哪些节点包含所请求的服务,因此客户端库将不得不将请求包装在重试循环中以解析服务端点。使用反向代理将解决此问题,因为它在每个节点上运行,并且将确切知道服务在哪个节点上运行。群集外部的客户端可以通过反向代理访问群集内部运行的服务,而无需任何其他配置。
来源:Azure Service Fabric is amazing
我正在运行Azure Service Fabric资源,但是适用相同的规则。如本文所述,您将需要一个反向代理/负载平衡器,不仅要解决正在运行API的节点,还要平衡运行该API的节点之间的负载。因此,运行状况探测器也是必需的,以便负载均衡器知道哪些节点是向其发送流量的可行选择。
作为示例,Azure会立即创建2条规则: 1. TCP / 19080上的LBHttpRule,每5秒在端口19080上使用TCP探针,错误阈值为2。 2. TCP / 19000上的LBRule,每5秒在端口19000上使用TCP探针,错误阈值为2。
要使其具有前向性,您需要添加的内容是将端口80转发到服务http端口的规则。然后,运行状况探针可以是http探针,它会命中一条路径来测试200的收益。
一旦进入集群,就可以正常解析服务,SF将负责可用性。
在Azure领域中,这再次被抽象为使用诸如API管理之类的东西来进一步将其反向代理到SSL。真是一团糟,但是行得通。
设置好负载均衡器后,您将需要一个IP来管理,发布和常规流量。