Varnish vmod_directorsは、round_robin、fallback、random、およびHASHの各モードでバックエンドロードバランシングを有効にします。最初のものについては、ワニスが病気のバックエンドをどのように処理するのかは明らかです。バックエンドが病気になったとき、ワニスディレクターがキー配布をどのように処理しますか?
しかし、HASHディレクターではどうなりますか?すべてのキースペースを再配布しますか?または、1/Nキーのみがシフトされます(Nはバックエンドの数です)。
または、HAを実現するために2ペアでバックエンドをグループ化し、キャッシュを複製しないことを決定しましたか?私は本当に起こるとワニスは、現在の健康バックエンドのすべてのキーを再配布するかを確認するワニスのテストを行った
sub vcl_init {
new h = directors.hash();
h.add_backend(backend_1, 1);
h.add_backend(backend_2, 1); // <------ sick
h.add_backend(backend_3, 1);
h.add_backend(backend_4, 1);
h.add_backend(backend_5, 1);
h.add_backend(backend_6, 1);
}
sub vcl_recv {
// pick a backend based on the request URL
set req.backend_hint = h.backend(req.url);
}
VS
new main_hash_director = directors.hash();
h.add_backend(hash_director_A, 1);
h.add_backend(hash_director_B, 1);
h.add_backend(hash_director_C, 1);
new hash_director_A = directors.hash();
h.add_backend(backend_1, 1);
h.add_backend(backend_2, 1); // <------ sick
new hash_director_B = directors.hash();
h.add_backend(backend_3, 1);
h.add_backend(backend_4, 1);
new hash_director_C = directors.hash();
h.add_backend(backend_5, 1);
h.add_backend(backend_6, 1);