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

我有一定的分布式(如在多个机器上的多个组件)服务,应该从外部提供。 因此,在LVS术语中,客户是“在互联网上”,而服务器在专用networking中。 据我所知,使用LVS并不是特别困难。

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

我可以在两个任务中使用相同的导演吗? 显然,它将至less有两个networking接口(一个在外部,一个在专用networking上)。

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

这个设置是否有意义? 这样做是否正常? 也许我更好地使用一个单独的负载平衡器的内部stream量? 然而,这是不受欢迎的,因为它会引入至less两台额外的机器,因为队列代理接收的stream量最小(我需要的只是故障转移),所以不会使用太多的机器。

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

特别是在尝试自动为新服务设置lb对之后。 经过一年的使用这种技术没有任何问题独特的这个设置。 这也允许为每个始发节点推出LB更改,而不是混淆单个对。