Динамическое добавление или удаление серверных хостов в Varnish

Каков наилучший способ программно добавить или удалить отдельные внутренние серверы в/из директора Varnish без простоев? Я искал хороший пример этого и не мог его найти.

Я хотел бы иметь возможность масштабировать свои внутренние серверы в зависимости от спроса.

Спасибо!

Сэм


person user1950119    schedule 08.01.2013    source источник


Ответы (1)


Хотя это не самый элегантный или даже динамичный способ добавления серверных частей, я бы подошёл к этому, определив серверные части в отдельном VCL и включив его в default.vcl с помощью

include "backend.vcl";

Где вы определяете свои бэкенды и директора. Например

probe healthcheck {
   .url = "/online";
   .interval = 15s;
   .timeout = 0.3 s;
   .window = 3;
   .threshold = 1;
   .initial = 1;
}

backend web1 {
  .host = "10.1.2.1";
  .port = "80";
  .connect_timeout = 300s;
  .first_byte_timeout = 5000s;
  .between_bytes_timeout = 300s;
  .probe = healthcheck;
}

director backendpool round-robin {
  { .backend = web1; }
}

И используйте backendpool в качестве бэкенда. Затем с помощью сценариев оболочки, ssh, пользовательского демона или любого другого метода, который лучше всего соответствует вашим потребностям, обновите backend.vcl, добавив бэкэнды, и выполните перезагрузку для Varnish.

Проблема с этим подходом заключается в том, что Varnish на самом деле не удаляет серверные части, которые были удалены из файла backend.vcl. Несмотря на то, что они не используются, Varnish будет продолжать их исследовать. Это может привести к неожиданному поведению в долгосрочной перспективе. По крайней мере, результаты проверки работоспособности серверной части могут запутаться, если имена серверной части используются повторно. Например, после переименования бэкенда web1 в приведенном выше примере пару раз, а затем изменения его хоста на недопустимый, вот результаты опроса Backend_health после возврата к вышеуказанной конфигурации с определенным только допустимым бэкендом web1.

0 Backend_health - web1 Still healthy 4--X-RH 3 1 3 0.001141 0.001055 HTTP/1.1 200 OK
0 Backend_health - web1 Still sick ------- 0 1 3 0.000000 0.000000
0 Backend_health - web2 Still healthy 4--X-RH 3 1 3 0.001061 0.001111 HTTP/1.1 200 OK
0 Backend_health - web3 Still healthy 4--X-RH 3 1 3 0.001007 0.001021 HTTP/1.1 200 OK

Существует патч для более детальной обработки серверной части Varnish 2.1, но Насколько мне известно, он недоступен для Varnish 3.

person Ketola    schedule 10.01.2013