0

我已按照Microsoft的步骤创建多节点本地 Service Fabric 群集。我已经向集群部署了一个无状态应用程序,它似乎工作正常。当我连接到集群时,我使用了其中一个节点的 IP 地址。这样做,我可以使用 Powershell 进行Connect-ServiceFabricCluster nodename:19000连接,并且可以连接到 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 条目允许我连接到集群?还是我正在尝试做一些本地不支持的事情?

4

1 回答 1

1

是的,您缺少负载平衡器。

这是我能找到的最好的帮助资源,如果它变得不可用,我会粘贴相关内容。

反向代理 — 预配 Service Fabric 群集时,您可以选择在群集上的每个节点上安装反向代理。它代表客户端执行服务解析并将请求转发到包含应用程序的正确节点。在大多数情况下,在 Service Fabric 上运行的服务仅在节点的子集上运行。由于负载均衡器不知道哪些节点包含请求的服务,因此客户端库必须将请求包装在重试循环中以解析服务端点。使用反向代理将解决该问题,因为它在每个节点上运行,并且将确切知道服务在哪些节点上运行。集群外的客户端可以通过反向代理访问集群内运行的服务,无需任何额外配置。

典型的 Service Fabric 群集基础结构图

资料来源:Azure Service Fabric 非常棒

我有一个 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。

于 2018-06-25T13:06:50.070 回答