HAProxy/Varnish: перенаправление процента трафика

Я пытаюсь измерить отдельную статистику для двух различных версий веб-страницы. Таким образом, я должен перенаправить определенный процент от своего веб-трафика к другой странице, чем та, которую требуют (т.е. 20% запросов на page_1 переходят к page_1.1).
Мне не кажется, что Лак может исходно считать трафик или запросы.
Я думаю, что у меня могло быть количество бэкенда Apache запросы, вставить пользовательский заголовок и затем иметь Лак, отправляют перезапуск клиенту, если ответ бэкенда содержит тот определенный заголовок.

Какие-либо идеи или предложения?

Удачи,
Jeremy

Править: Я забыл упоминать, что существует HAProxy istance перед Лаком, таким образом, я думал, что иначе, чтобы сделать это могло быть:

На HAProxy:
считайте запросы на page1
если количество> 80 вставляет пользовательский заголовок
если количество = 100 счетчиков сброса

На лаке
если пользовательский заголовок, существующий в запросе, выходит, клиентский перезапуск с page1 —> page1.1 переписывают

Не уверенный, как сделать это с ACL, gpc0 и таблицы палки. Я учусь для нахождения решения :-)

Как всегда, идеи или предложения являются больше, чем приветствие

2
задан 29 May 2015 в 13:11
1 ответ

Мне никогда не приходилось настраивать сервер 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% трафика.

Это своего рода взлом (вполне может быть лучшее решение), но я считаю, что это сработает.

1
ответ дан 3 December 2019 в 12:46

Теги

Похожие вопросы