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