Лак 3.0.5 круговой робин директор не балансирует
У меня есть архитектура с двумя серверами лака, расположенными перед 5 веб-головами. Каждый сервер лака настроен с круговым директором бэк-робина, но в периоды времени от умеренной до высокой нагрузки лак, по-видимому, сильно предпочитает первый определенный бэкэнд в списке.
Лаковая версия 3.0.5.
Если первый бэкэнд помечен как больной, второй бэкэнд в списке сильно предпочтен, и так далее.
varnish> backend.list
200
Backend name Refs Admin Probe
web1(************,,8080) 102 probe Healthy 8/8
web2(************,,8080) 17 probe Healthy 8/8
web3(************,,8080) 9 probe Healthy 8/8
web4(************,,8080) 17 probe Healthy 8/8
web5(************,,8080) 12 probe Healthy 8/8
Некоторые части VCL, которые могут быть уместны:
probe healthcheck {
.request =
"GET /LICENSE.txt HTTP/1.1"
"Host: **********.co.uk"
"Connection: close";
.interval = 120s;
.timeout = 90s; # High values due to expected slow responses
.window = 8;
.threshold = 3;
.initial = 3;
#.expected_response = 200; # Still want the Magento maintenance page to display so no response code check
}
backend web1 {
.host = "************";
.port = "8080";
.connect_timeout = 240s; # High values due to expected slow responses
.first_byte_timeout = 240s; # High values due to expected slow responses
.between_bytes_timeout = 240s; # High values due to expected slow responses
.probe = healthcheck;
}
backend web2 {
.host = "************";
.port = "8080";
.connect_timeout = 240s; # High values due to expected slow responses
.first_byte_timeout = 240s; # High values due to expected slow responses
.between_bytes_timeout = 240s; # High values due to expected slow responses
.probe = healthcheck;
}
backend web3 {
.host = "************";
.port = "8080";
.connect_timeout = 240s; # High values due to expected slow responses
.first_byte_timeout = 240s; # High values due to expected slow responses
.between_bytes_timeout = 240s; # High values due to expected slow responses
.probe = healthcheck;
}
backend web4 {
.host = "************";
.port = "8080";
.connect_timeout = 240s; # High values due to expected slow responses
.first_byte_timeout = 240s; # High values due to expected slow responses
.between_bytes_timeout = 240s; # High values due to expected slow responses
.probe = healthcheck;
}
backend web5 {
.host = "************";
.port = "8080";
.connect_timeout = 240s; # High values due to expected slow responses
.first_byte_timeout = 240s; # High values due to expected slow responses
.between_bytes_timeout = 240s; # High values due to expected slow responses
.probe = healthcheck;
}
director backend_director round-robin {
{ .backend = web1; }
{ .backend = web2; }
{ .backend = web3; }
{ .backend = web4; }
{ .backend = web5; }
}
sub vcl_recv {
set req.backend = backend_director;
# loads more stuff
}
Может ли кто-нибудь пролить свет на то, почему директор циклического робота так сильно одобряет первый определенный бэкэнд, или что может полностью вызвать обход директора? Я уже убедился, что return(pipe)
не используется в vcl_recv.