Я пытаюсь измерить отдельные статистические данные для двух разных версий веб-страницы. Поэтому мне нужно перенаправить определенный процент моего веб-трафика на страницу, отличную от запрошенной (т.е. 20% запросов для page_1 переходят на page_1.1).
Мне не кажется, что Varnish может изначально подсчитывать трафик или запросы.
Я думаю, что я мог бы сделать так, чтобы серверная часть Apache подсчитывала запросы, вставляла настраиваемый заголовок, а затем Varnish отправляла перезапуск клиенту, если ответ серверной части содержит этот определенный заголовок.
Есть идеи или предложения?
Привет,
Джереми
РЕДАКТИРОВАТЬ: я забыл упомянуть, что перед Varnish есть HAProxy, поэтому я подумал, что еще один хороший способ сделать это может быть:
На HAProxy:
подсчитывать запросы для page1
если количество> 80 вставьте собственный заголовок
если count = 100 сбросить счетчик
На лаке
если в запросе присутствует настраиваемый заголовок, перезапустите клиента с помощью page1-> page1.1 rewrite
Не знаю, как это сделать с помощью ACL, gpc0 и stick-tables. Я изучаю решение :-)
Как всегда, идеи или предложения более чем приветствуются
Мне никогда не приходилось настраивать сервер Varnish, но я полагаю, что это возможно с помощью встроенный балансировщик нагрузки с циклической конфигурацией.
Например, если вы настроили 4 серверных модуля, указывающих на старую версию вашего сайта / страницы и 1 на новую версию, вот так ..
backend old1 {
.host = "old.example.com";
.probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; }
}
backend old2 {
.host = "old.example.com";
.probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; }
}
backend old3 {
.host = "old.example.com";
.probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; }
}
backend old4 {
.host = "old.example.com";
.probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; }
}
backend new {
.host = "new.example.com";
.probe = { .url = "/"; .interval = 5s; .timeout = 1 s; .window = 5; .threshold = 3; }
}
А потом был режиссер, который перебирал их ...
director blah round-robin {
{ .backend = old1; }
{ .backend = old2; }
{ .backend = old3; }
{ .backend = old4; }
{ .backend = new; }
}
Версия сайта new.example.com получит 20% трафика.
Это своего рода хак (вполне может быть лучшее решение), но я считаю, что это сработает.