varnish 4 を使用して、複数のサーバーからの同じリクエストの異なるコンテンツをキャッシュします。あるサーバーからの最初のリクエストをキャッシュし、後続のすべてのリクエストに対して同じコンテンツを提供し続けているようです。
curl を実行すると、2 つのキャッシュと異なる年齢で応答が得られます。
粘着性の動作に負荷などの要因はありますか? Jmeter と apache ベンチマークを負荷で使用しましたが、それでも同じ動作が得られました。
私の vcl_hash は良いですか? バックエンド サーバーの url と ip のハッシュの組み合わせでオブジェクトを保存したい。
少なくとも私の場合、キャッシュ オブジェクトの ttl の後に、varnish が 2 番目のサーバーからキャッシュされ、ttl が完了するまで同じ値を返します。しかし、これは私たちが期待する動作ではありませんか?
私は何か不足していますか?
ラウンド ロビンと hash_data を使用します。以下は私のconfig.vclです
backend s1{
.host = "190.120.90.1";
}
backend s2{
.host = "190.120.90.2";
}
sub vcl_init {
new vms = directors.round_robin();
vms.add_backend(s1);
vms.add_backend(s2);
}
sub vcl_recv {
set req.backend_hint = vms.backend();
}
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
return(lookup);
}