Назад | Перейти на главную страницу

Varnish настроить бэкэнд на несколько зондов?

Возможно ли в Varnish 3 настроить бэкэнд на несколько зондов?

У меня есть несколько серверов Varnish и несколько внутренних серверов под управлением Drupal. Я настроил базовый файл PHP проверки работоспособности с интервалом в 1 секунду для проверки работоспособности сервера приложений, но я также хотел бы использовать проверку работоспособности для стека Drupal, однако эта проверка должна выполняться реже, чем базовая проверка работоспособности. например: Каждые 5 секунд он может проверять стек Drupal.

Можно ли в таком случае использовать 2 отдельных зонда на одном сервере?

Теоретическая конфигурация:

probe healthcheck {
    .url = "/healthcheck.php";
    .interval = 1s;
    .timeout = 100 ms;
    .window = 5;
    .threshold = 5;
}

probe drupalcheck {
    .url = "/index.php";
    .interval = 5s;
    .timeout = 5s;
    .window = 5;
    .threshold = 5;
}

backend apache_1 {.host = "server01"; .port = "8080"; .probe = healthcheck; .probe = drupalcheck}
backend apache_2 {.host = "server02"; .port = "8080"; .probe = healthcheck; .probe = drupalcheck}
backend apache_3 {.host = "server03"; .port = "8080"; .probe = healthcheck; .probe = drupalcheck}

Зонд просто проверяет возвращенный заголовок. Таким образом, вы можете получить скрипт /probe.php который сначала отправляет запрос на /healthcheck.php а потом еще один index.php.

Внутри /probe.php ты можешь использовать $headers = get_headers($url,1); и проанализируйте код возврата 40X или 50X для каждого URL-адреса.

В конце:

if($atleastOneOfTheUrlsReturnedSomeThingBad){
  header('HTTP/1.0 404 Not Found');
}
else{
  header( "HTTP/1.1 200 OK" );
}
exit();

Быстрый ответ: нет.

Более длинный ответ: вы можете указать столько бэкэндов для одного реального бэкэнд-сервера, и каждый может иметь свой собственный зонд. Затем вы можете направлять к ним трафик по своему усмотрению.

Вы также можете вызвать что-то вроде сценария «проверки-проверки» на сервере приложений через вызов проверки, который может выполнять свои собственные проверки статуса. В любом случае вы просто вызываете скрипт php / python / etc, так что это может быть созданный вами скрипт.

Здесь есть еще (не совсем актуальное): https://www.varnish-cache.org/lists/pipermail/varnish-misc/2011-October/021298.html