作为开发人员,我们在Azure Service Fabric上编写了微服务,我们可以在Azure中以某种PaaS概念为许多客户运行它们.但是我们的一些客户不希望在云中运行,因为数据库是本地的,而不是从外部可用,甚至不是通过DMZ.没关系,我们承诺支持它,因为Azure Service Fabric可以作为集群安装在本地.
我们在每个虚拟机上运行一个API网关微服务,它使用名称解析器,并相应地路由和分发请求,但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:客户端应用程序每秒发送的请求不多,可能每分钟发送一次.