我有两个Varnish服务器,位于F5负载均衡器和两个应用程序服务器(Apache httpd)之间的中间层。我想让Varnish在两台Apache服务器之间平均分配负载。下面是我使用的结构的要位:清漆client.identity - 如何更均匀地分割负载?
backend prod1 {
.host = "172.16.1.1";
.port = "80";
}
backend prod2 {
.host = "172.16.2.1";
.port = "80";
}
director wpprod client {
{ .backend = "prod1"; .weight = 1; }
{ .backend = "prod2"; .weight = 1; }
}
sub vcl_recv {
set client.identity = req.http.user-agent;
set req.backend = wpprod;
}
这样做的目的是采取不应该在会话过程中更改头,而应是半随机的(客户端的用户代理:头) ,并用它来拆分两台后端服务器之间的负载。
不幸的是,在实践中,负载被分成70-30左右,其中一个后端的流量大约是另一个后端的两倍。
我也尝试过使用X-Forwarded-For:标题,我的F5s作为client.identity添加,但有同样的问题。
我可以稍微调整权重,尝试平衡负载,但这不是真正的可伸缩性,或者可用于多台服务器。
我可以使用的标题的任何建议将导致更均匀的流量分裂?
因此,最终证明这完全不是一个光油问题。在我们网络的其他地方,一个失控的搜索引擎/蜘蛛正在锤击这些服务器。由于它占我们所有流量的40%,并且由于它发送的每个请求都具有相同的User-Agent:,修复该问题可以恢复大约50-50个余额。 –