我能想到的选项是:
1)具有多个前端,每个前端都有不同的端口。
2)具有多个前端,每个前端具有不同的主机名但相同的端口。
3)拥有一个具有相同主机名和相同端口的单一前端,使用 ACL 根据 URI 进行路由
我们目前有 12 个不同的服务(微服务)需要负载平衡。这个数字可能会稍微增加一些。
选择这些方法的令人信服的理由是什么?
答案1
1)具有多个前端,每个前端都有不同的端口。
对我来说,这似乎有点草率。将多个 Web 服务集中到一个具有不同端口的 IP 地址上对我来说只有在您没有多余的 IP 地址时才有用(在这种情况下,您可能会遇到其他问题)
2)具有多个前端,每个前端具有不同的主机名但相同的端口。
对我来说这似乎是最好的选择。让每个前端绑定到不同的 IP 地址,然后每个前端使用适当的后端。
3)拥有一个具有相同主机名和相同端口的单一前端,使用 ACL 根据 URI 进行路由
这也行得通,但请记住,如果您只有一个前端,它们最终会共享一些资源。例如,如果您在前端设置了“maxconn”参数,然后有许多并发连接到其中一个服务,则对其他服务的请求最终可能会排队。
最终,我认为这实际上取决于各个前端之间有多少共同点,以及您是否希望共享它们的连接限制。如果这些服务都紧密结合,并且功能几乎相同,您可能会选择 #3,但如果它们没有真正的关联,我认为 #2 是您的最佳选择。至少,您现在可以在单个 IP 上设置它们,并拥有一个绑定到多个 IP 地址的前端,因此以后很容易将其拆分为多个前端。