Хотя это не самый элегантный или даже динамичный способ добавления серверных частей, я бы подошёл к этому, определив серверные части в отдельном 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