Баланс загрузки лака с перезаписью на запрос к серверу

В WAIK, под разделом Microsoft-Windows-Setup\DiskConfiguration\Disk\ModifyPartitions\ModifyPartition
необходимо установить несколько опций
Format=%FILESYSTEM TYPE%
и PartitionID=%ID OF PARTITION TO FORMAT% для обоих разделов.

2
задан 15 March 2013 в 20:40
1 ответ

Прежде всего, вы должны разработать стратегию, чтобы различать используемые приложения. Вы можете использовать разные имена хостов (все они указывают на ваш прокси-сервер Varnish) или вы можете использовать разные URL-адреса, чтобы решить, какой запрос должен обрабатываться какой серверной системой. Если у вас есть стратегия, настройте Varnish:

Пример A) Различные имена хостов

Подготовьте все необходимые серверные модули. Это может быть один сервер или несколько серверов с использованием директора:

backend example1 {
  .host = "...";
  .port = "...";
  ...
}

Установите правильный сервер для входящих запросов (в Varnish: req). Я установил дополнительное значение req.http.backend, чтобы использовать его на более позднем этапе. Здесь вы можете заменить или отменить любой HTTP-заголовок запроса клиента:

sub vcl_recv {
  ...
  if (req.http.host == "example1.mysite.com") {
    set req.backend = example1;
    set req.http.backend = "example1";
    set req.http.host = "application1.internal.mysite.com";
    unset req.http.Cache-Control;
    ...
  }
  ...
}

Внесите некоторые изменения в возвращенный ответ серверной части (в Varnish: beresp). Если у вас есть другое имя хоста для приложения, вы можете изменить перенаправления. Обычно я удаляю некоторые X-заголовки или заменяю кеширующие заголовки серверной части здесь:

sub vcl_fetch {
  ...
  if (req.http.backend == "example1") {
    ...
    unset beresp.http.X-Powered-By;
    ...
    if ((beresp.status == 301 || beresp.status == 302) && beresp.http.Location ~ "^http://application1\.internal\.mysite\.com") {
      set beresp.http.Location = regsub(beresp.http.Location, "^http://[^/]+", "http://example1.mysite.com");
    }
  }
  ...
}

Пример B) Различные URL-адреса

В Varnish разница заключается в методе vcl_recv. Позаботьтесь о том, чтобы ваше приложение могло работать с путем "/ example1". Возможны и другие решения, но я бы не рекомендовал их:

sub vcl_recv {
  ...
  if (req.http.host == "www.mysite.com") {
    if (req.url ~ "(?i)^/example1/") {
      set req.backend = example1;
      set req.http.backend = "example1";
      set req.http.host = "application1.internal.mysite.com";
      unset req.http.Cache-Control;
      ...
    }
    ...
  }
  ...
}

Вы можете реализовать A или B или объединить A и B.

0
ответ дан 3 December 2019 в 15:31

Теги

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