本地 Azure Service Fabric 集群的负载均衡器

Load balancer for Azure Service Fabric Cluster on-premises

作为开发人员,我们在 Azure Service Fabric 上编写微服务,我们可以 运行 在 Azure 中为许多客户提供某种 PaaS 概念。但是我们的一些客户不想 运行 在云中,因为数据库是本地的,不能从外部访问,甚至不能通过 DMZ。没关系,我们承诺支持它,因为 Azure Service Fabric 可以作为本地集群安装。

我们在每个虚拟机的集群中都有一个 API-gateway 微服务 运行ning,它使用名称解析器,并相应地路由和分发请求,但是 API API 网关微服务提供的是我们客户使用的另一个客户端软件的入口,该软件 运行 在集群外部,必须向 API 发送请求。

我建议在客户端软件将请求发送到的单独机器(或机器)上使用像 HA-Proxy 或 Nginx 这样的负载平衡器,然后反向代理会将其转发到集群内可用的机器。

这似乎不是我们客户想要的,另一台机器作为负载平衡器不是一个选择。他们建议:让客户端软件更智能地确定去哪个主机,换句话说:我们应该在客户端软件中编写我们自己的 fail-over/load 平衡器。

我们还有哪些其他选择?

PS: 客户端应用程序每秒发送的请求不多,可能每分钟发送几个。

非常相似的问题,我们有许多在本地运行的服务和 Service Fabric 集群。当需要使用负载均衡器时,我们会在运行 Service Fabric 集群的同一台机器上安装 IIS。由于 IIS 是一个很好的负载平衡器,我们仅将 IIS 用作 API 网关的反向代理。 Kestrel 托管用于通过 HTTP 通信的其他服务。 API 网关微服务是所有客户端的单一入口点,并且在 SF 中始终具有静态 URI,我们使用该 URI 来配置 IIS

如果您无法使用 IIS,请查看 Using nginx as HTTP load balancer

您不需要另一台机器来进行 HTTP 转发。只是 use/run 它作为集群上的一项服务。

您是否考虑过使用 Service Fabric 的内置 Reverse Proxy?这 运行s 在所有节点上,它将转发 http 调用到集群内的服务。

您还可以 运行 nginx 作为集群上的 guest executable or inside a Container

我们在开始使用 Service Fabric 集群时也遇到过同样的情况。我们将应用程序网关配置为代理,但它不会提供类似 HTTP 到 HTTPS 重定向的功能。

为此,我们配置了 Nginx 而不是 Azure 应用程序网关作为 Service Fabric 应用程序的代理。