使用 mod-proxy-balancer 在平衡器之间进行负载平衡

使用 mod-proxy-balancer 在平衡器之间进行负载平衡

使用 Apache mod-proxy-balancer,我想在两个平衡器之间实现平衡。这可能吗?

背景:

我们正在升级部分服务器堆栈,对于部署过程,我们希望通过将一小部分用户发送到新堆栈来慢慢引入新堆栈。

我为旧堆栈定义了一个平衡器,为新堆栈定义了一个平衡器。我想要的是第三个平衡器,其成员是其他平衡器。

例子:

<Proxy balancer://oldstack>
    BalancerMember http://10.10.10.5    retry=30 timeout=20 route=old1
    BalancerMember http://10.10.10.6    retry=30 timeout=20 route=old2
</Proxy>

<Proxy balancer://newstack>
    BalancerMember http://10.10.10.8    retry=30 timeout=20 route=new1
    BalancerMember http://10.10.10.9    retry=30 timeout=20 route=new2
</Proxy>

<Proxy balancer://entrypoint>
    BalancerMember balancer://oldstack  retry=30 timeout=20 route=old loadfactor=90  #90%
    BalancerMember balancer://newstack  retry=30 timeout=20 route=new loadfactor=10  #10%
    ProxySet stickysession=ROUTEID
</Proxy>

当我尝试运行它时,它会抱怨[warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

是否可能让 BalancerMember 成为另一个平衡器?

答案1

文档没有定论,但我认为您不能这样做,您需要深入研究mod_proxy_balancer以确认。正如@ETL 建议的那样,您可以通过将每个平衡器组移动到单独的 Apache 虚拟主机来做到这一点。

或者可能,这样的事情会起作用吗?

<Proxy balancer://entrypoint>
  # Members of Old stack
  BalancerMember http://10.10.10.5 retry=30 timeout=20 route=old1 loadfactor=45
  BalancerMember http://10.10.10.6 retry=30 timeout=20 route=old2 loadfactor=45
  # Members of new stack
  BalancerMember http://10.10.10.8 retry=30 timeout=20 route=new1 loadfactor=5
  BalancerMember http://10.10.10.9 retry=30 timeout=20 route=new2 loadfactor=5
  ProxySet stickysession=ROUTEID
</Proxy>

相关内容