Лак под LB сервер

У нас есть 2 файловых сервера (Apache port-82), которые работают под балансировщиком нагрузки. И я успешно настроил лак для домена (imgs.site.com) на 2 серверах (порт-80), и он работает правильно, когда я помещаю запись хоста для сервера, но когда я обращаюсь к нему глобально (через LB), он прервался запрос. Я предполагаю, что в моей конфигурации чего-то не хватает. Пожалуйста, помогите.

Вот моя конфигурация vcl, и у меня одинаковая конфигурация на серверах file1 и file2.

backend default {
  .host = "127.0.0.1";
  .port = "82";
  .first_byte_timeout = 60s;
  .between_bytes_timeout = 60s;
}

sub vcl_recv {

    if (req.request != "GET" &&
         req.request != "HEAD" &&
         req.request != "PUT" &&
         req.request != "POST" &&
        req.request != "TRACE" &&
        req.request != "OPTIONS" &&
         req.request != "DELETE") {

  return (pipe);
 }



if (req.http.host == "imgs.site.com") {

       set req.http.host = "imgs.site.com";
       set req.backend = default;
       return (lookup);
  }

}

Это может быть основной вопрос, и, поскольку мы новички в лакировании, мы не знаем, как его решить.


person user3493907    schedule 03.04.2014    source источник


Ответы (1)


Итак, чтобы уточнить, у вас есть балансировщик нагрузки для домена imgs.site.com, передающий запросы на порт 80 на двух машинах. Каждый из них запускает лак и перенаправляет запросы обратно к себе на порт 82. Если какой-то новый запрос направляется на http-сервер A, а затем тот же запрос приходит снова позже и направляется на http-сервер B, второй запрос будет таким: медленнее, чем в первый раз, и вы получите один и тот же поиск в кэше на двух машинах, поэтому вы получите лучшую производительность кэша, если настроите один лак и используете его в качестве балансировщика нагрузки в циклическая конфигурация.

Но чтобы решить эту проблему, вы можете получить диагностическую информацию о том, как лак отвечает на запрос, запустив varnishlog при поступлении запроса. Вы можете дополнительно убедиться, что запрос от лакировочной машины к ее серверной части (в данном случае к себе) работает, запустив из оболочки на лакировочной машине:

$ telnet 127.0.0.1 82

и если вы видите сообщение об успешном завершении, введите базовую команду GET (с двумя возвратами после этого):

GET / HTTP/1.0

Вы можете тестировать более сложные запросы, требующие аутентификации или полезной нагрузки POST, с помощью команд wget или curl.

И, конечно же, убедитесь, что http-сервер получает запрос, проверив журналы.

person jaybrau    schedule 27.06.2014