环境:5 个 apache 实例(balancerX),将流量分配到 3 个应用程序服务器(serverX)。
根据请求使用相同负载因子的 mod_balancer 配置,server1 负载巨大,而其他服务器负载较小,这就是为什么无论服务器的实际负载如何,平衡器配置都以相同的方式应用于所有服务器,因此始终将到平衡器 1、2、3、4 或 5 的第一个连接重定向到 server1。由于 HW 平衡器(不幸的是无法管理)会随机为用户分配平衡器,因此我无法控制 3 台服务器是否接收相同数量的连接。
我该如何配置它才能在服务器 1、2 和 3 上具有相同的负载?
架构:
Balancer1 Balancer2 Balancer3 Balancer4 Balancer5
--------- --------- --------- --------- ---------
Server1 Server1 Server1 Server1 Server1
Server2 Server2 Server2 Server2 Server2
Server3 Server3 Server3 Server3 Server3
答案1
我认为要完美实现这一点会很困难。但我首先要改变BalancerMember
5 个 Apache 服务器上的指令顺序,使它们在每台服务器上都不同。例如:
Balancer1 Balancer2 Balancer3 Balancer4 Balancer5
--------- --------- --------- --------- ---------
Server1 Server2 Server3 Server1 Server2
Server2 Server3 Server1 Server3 Server1
Server3 Server1 Server2 Server2 Server3
您需要第 6 个 Apache 服务器才能使其达到 100% 均匀。
请注意,以下选项是 Apache v2.4 特有的,如果您使用的是 v2.2,则仅使用第一个建议。我还会尝试不同的负载平衡方法,看看是否有区别。选项是lbmethod=bybusyness
和lbmethod=bytraffic
(确保您加载相关模块)。如果您的底层服务器也使用 Apache,您也可以尝试lbmethod=heartbeat