У меня есть два сервера Varnish, средний уровень между балансировщиком нагрузки F5 и двумя серверами приложений (Apache httpd). Я хочу, чтобы Varnish разделил нагрузку более или менее равномерно между двумя серверами Apache. Вот важные биты конфигурации я использую:Varnish 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;
}
Цель состоит в том, чтобы взять заголовок, который не должен менять во время сессии, но должен быть полу-случайных чисел (клиента User-Agent: заголовок) , и использовать его для разделения нагрузки между двумя серверными серверами.
К сожалению, на практике нагрузка разделяется примерно на 70-30, при этом один бэкэнд получает примерно вдвое больше трафика, чем другой.
Я также попытался использовать заголовок X-Forwarded-For: мои F5 добавляются как client.identity, но имеют ту же проблему.
Я мог бы немного подправить весы, чтобы попытаться выровнять нагрузку, но это не очень масштабируемо или возможно с более чем несколькими серверами.
Любые предложения по заголовкам, которые я могу использовать, приведут к более четкому разделению трафика?
Итак, это в конечном итоге оказалось вовсе не проблемой с лаком. В другом месте в нашей сети, беглый поисковик/паук забивал эти серверы. Так как это было около 40% всего нашего трафика, и поскольку каждый отправленный запрос имел тот же User-Agent :, исправление этой проблемы восстановило баланс примерно 50-50. –