作为开发人员,我们在 Azure Service Fabric 上编写了微服务,我们可以在 Azure 中为许多客户以某种 PaaS 概念运行它们。但是我们的一些客户不希望在云中运行,因为数据库是本地的,并且不能从外部使用,即使通过 DMZ 也不能使用。没关系,我们承诺支持它,因为 Azure Service Fabric 可以作为集群安装在本地。
我们在每个虚拟机上的集群内部都有一个 API-gateway 微服务,它使用名称解析器,并相应地路由和分发请求,但是 API 网关微服务提供的 API 是我们的另一个客户端软件的入口客户使用,该软件在集群外部运行,并且必须向 API 发送请求。
我建议在单独的机器(或多台机器)上使用负载均衡器,如 HA-Proxy 或 Nginx,客户端软件将请求发送到该机器,然后反向代理会将其转发到集群内的可用机器。
这似乎不是我们的客户想要的,另一台机器作为负载均衡器不是一个选择。他们建议:让客户端软件更智能地确定要转到哪个主机,换句话说:我们应该在客户端软件中编写自己的故障转移/负载平衡器。
我们还有哪些其他选择?
在每个虚拟机上安装网络负载均衡器功能,为集群提供一个 IP 地址,这甚至可能吗?像https://www.poweradmin.com/blog/configuring-network-load-balancing-in-windows-server/
建议集群外的 API 网关,如 KONG https://getkong.org/
还有什么?
PS:客户端应用程序每秒发送的请求并不多,可能每分钟发送几个。