外部和内部接口上基于 IP 的负载平衡

外部和内部接口上基于 IP 的负载平衡

我有一个分布式(即多台机器上的多个组件)服务,应该从外部世界提供。因此,在 LVS 术语中,客户端“在互联网上”,而真实服务器在私有网络中。据我所知,使用 LVS 设置这一点并不特别困难。

但是(总有一个但是!)私有网络上有一些组件应该进行负载平衡(实际上,对于这部分,我并不关心“负载”。我只需要故障转移功能),但它们的客户端也在私有网络上。例如,应用程序服务器对队列代理的访问必须通过负载平衡器。

我可以使用同一个控制器执行这两项任务吗?显然,它将至少有两个网络接口(一个在外部网络上,一个在专用网络上)。

理想情况下,我需要通过 VRRP 为导演提供冗余(大概是利用 keepalived 来实现)。

这种设置有意义吗?这样做正常吗?也许我最好使用单独的负载均衡器来处理仅限内部的流量?不过,这有点不可取,因为它将引入至少 2 台不常用的额外机器,因为队列代理接收的流量很少(我需要的只是故障转移)。

答案1

对于内部负载平衡,我已开始在每个原始服务器上使用 HAProxy 并代理到其他内部服务器。这不是一个好的负载平衡解决方案,因为它只能部分查看请求,但对于故障转移非常有效,无需设置新的 lb 对/keepalived 或使用面向公众的基础设施。您仍然可以使用循环或 leastconn 平衡和 maxconn 来减轻峰值对其余基础设施的影响。

这在尝试自动设置新服务的 LB 对后尤为明显。使用一年后,该技术没有出现任何此设置特有的问题。这还允许按原始节点推出 LB 更改,而不是弄乱单个对。

相关内容