使用 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>