我有兩個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個餘額。 –