我们使用代理平衡器将 Apache 作为反向代理运行,我们从 7 台云机器运行 jMeter 负载测试,但流量似乎没有均匀分布,我认为这是一个 Apache 配置问题,但不确定是什么
基本上在我们的 VirtualHost 指令中我有:
ProxyPreserveHost on
ProxyRequests Off
ProxyPass / balancer://my-site/
ProxyPassReverse / balancer://my-site/
Header add Set-Cookie "route=.%{BALANCER_WORKER_ROUTE}e; path=/"
和
<Proxy balancer://my-site>
BalancerMember https://MYMACHINE:8443 route=1 loadfactor=20
BalancerMember https://MYMACHINE:8443 route=2 loadfactor=20
ProxySet stickysession=route
</Proxy>
最初它没有 loadfactor=20,负载平衡做得不好,在我添加它之后,情况有所改善,但不是很好。流量仍然会被路由到比其他机器多 1-2 台机器(我们总共有 5 台机器)。
答案1
由于您正在运行粘性会话,因此您不能期望每个成员的工作负载完全相等。如果我理解正确的话,您有 7 台机器发出请求,平衡器中有 5 台机器来回答这些请求 - 如果是这样的话,那么 3 台服务器各有 1 个客户端,2 台服务器各有 2 个客户端 - 所以这是完全可以预料到的。
随着节点数量的增加,这种情况将会变得均匀,但是当您使用粘性会话时,不可能获得完美均匀的分布。
请求的动态分配默认考虑已分配的请求计数,但显然在节点被粘贴后无法对其进行更改;它不计算每个后端有多少个节点被粘贴。
您可以尝试添加ProxySet lbmethod=bybusyness
到您的<Proxy balancer://my-site>
配置中;这可能有助于在更高的负载下使事情更加均衡(但当您处理如此低的客户端数量时不会改变任何事情)。