私は、F5ロードバランサと2つのアプリケーションサーバー(Apache httpd)の間の中間層に、2つのVarnishサーバーを持っています。私は、ワニスが2つのApacheサーバーの間で負荷を多かれ少なかれ均等に分割したいと思っています。ここで私が使用しているコンフィギュレーションの重要なビットです:クライアントを識別する - より均等に負荷を分割する方法は?
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;
}
意図は、セッション中に変更しないでくださいヘッダーを取ることが、半ランダムであるべきである
(クライアントのユーザーエージェント:ヘッダ) 2つのバックエンドサーバー間で負荷を分散するために使用します。
残念ながら、実際には、負荷は約70-30に分割されています。一方のバックエンドはもう一方のトラフィックと比べて約2倍のトラフィックがあります。
また、私のF5がclient.identityとして追加しているが、同じ問題があったX-Forwarded-For:ヘッダを使ってみました。
負荷を均等にしようとするにはちょっとだけ微調整することができますが、それは実際にはスケーラブルではなく、複数のサーバーで実行可能ではありません。
私が使用できるヘッダーに関する提案は、トラフィックの均等分割を招くでしょうか?
これは最終的にワニスの問題ではないことが判明しました。私たちのネットワークのどこかで、暴走する検索エンジン/スパイダーがこれらのサーバーを叩いていました。それはすべてのトラフィックの約40%で、送信されたすべてのリクエストに同じUser-Agentがあるため、この問題を修正すると約50-50のバランスが回復しました。ワニスサーバがロードバランサの背後にあるので、 –