Spec-Zone.ru › Varnish

VCL-зондирование

Настройка зондирования работоспособности бэкендов

Раздел руководства:

7

Зондирование работоспособности бэкендов

Varnish можно настроить на периодическое отправление запросов для проверки ответа бэкенда и его «здоровья».

Зондирование можно настроить для каждого бэкенда:

backend foo {
    [...]
    .probe = {
        [...]
    }
}

Их можно именовать и использовать совместно между бэкендами:

probe light {
    [...]
}

backend foo {
    .probe = light;
}

backend bar {
    .probe = light;
}

Или можно определить default зондирование, которое применяется ко всем бэкендам без специфического .probe:

probe default {
    [...]
}

Основной синтаксис такой же, как и для бэкендов:

probe name {
    .attribute1 = value;
    .attribute2 = "value";
    [...]
}

Обязательных атрибутов нет, все они имеют значения по умолчанию.

Атрибут .url

URL для запроса. По умолчанию /:

.url = "/health-probe";

Атрибут .request

Можно использовать для указания полного запроса HTTP/1.1:

.request = "GET / HTTP/1.1"
    "Host: example.com"
    "X-Magic: We're fine with this."
    "Connection: close";

Для каждой строки будет добавлен CRNL , а также конечный блок HTTP-заголовков, завершающий CRNL.

Поскольку закрытие соединения является частью проверки работоспособности, Connection: close является обязательным.

Атрибут .expected_response

Ожидаемый HTTP-статус, по умолчанию 200:

.expected_response = 418;

Атрибут .expect_close

Указывает, ожидать ли закрытия соединения бэкендом.

Принимает true или false, по умолчанию true:

.expect_close = false;

Предупреждение: когда бэкенд не закрывает соединение, установка expect_close на false заставляет задачи зондирования ждать, пока они не истекут, прежде чем проверять ответ.

Атрибут .timeout

Сколько времени должно пройти, чтобы зондирование прошло успешно, по умолчанию две секунды:

.timeout = 10s;

Атрибут .interval

Время между зондированиями, по умолчанию пять секунд:

.interval = 1m;

Регистр сдвига состояния здоровья бэкенда

Зондирование работоспособности бэкендов использует 64-ступенчатый регистр сдвига для запоминания последних зондирований и оценки общего состояния бэкенда.

В консоли хороший статус работоспособности бэкенда выглядит так:

varnish> backend.list -p boot.backend
Backend name    Admin    Probe    Health     Last change
boot.backend    probe    5/5      healthy    Wed, 13 Jan 2021 10:31:50 GMT
 Current states  good:  5 threshold:  4 window:  5
  Average response time of good probes: 0.000793
  Oldest ================================================== Newest
  4444444444444444444444444444444444444444444444444444444444444444 Good IPv4
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Good Xmit
  RRRRRRRRRRRRRRRRRRRRRRR----RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR Good Recv
  HHHHHHHHHHHHHHHHHHHHHHH--------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH Happy

Начиная снизу, последняя строка показывает, что этот бэкенд объявлен «удовлетворительным» для большинства из 64 зондирований, но некоторое время назад были проблемы.

Однако в этом случае .window настроен на пять, а .threshold установлено на четыре, поэтому в данный момент бэкенд считается полностью работоспособным.

Дополнительное .initial заполняет столько же записей «удовлетворительно» в регистре сдвига при загрузке VCL, чтобы бэкенды быстро становились работоспособными, даже если их работоспособность обычно считается по многим образцам:

.interval = 1s;
.window = 60;
.threshold = 45;
.initial = 43;

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

Значения по умолчанию:

  • .window = 8
  • .threshold = 3
  • .initial = на один меньше, чем .threshold

Обратите внимание, что значение по умолчанию .initial означает, что бэкенд будет помечен как неработоспособный, пока не вернётся успешный ответ первого зондирования. Это означает, что для бэкендов, созданных по требованию (модулями vmod), нельзя использовать значение по умолчанию для .initial, так как недавно созданный бэкенд, скорее всего, всё ещё будет неработоспособным во время запроса бэкенда.

См. также

  • varnishd
  • VCL
  • VCL-бэкенды
  • Модуль VMOD directors — Модуль директоров Varnish
  • Модуль VMOD std — Стандартный модуль Varnish

История

VCL был разработан Poul-Henning Kamp в сотрудничестве с Verdens Gang AS, Redpill Linpro и Varnish Software. Эта страница руководства написана Per Buer, Poul-Henning Kamp, Martin Blix Grydeland, Kristian Lyngstøl, Lasse Karstensen и другими.

Авторские права

Этот документ лицензирован так же, как и сам Varnish. Подробности см. в файле LICENSE.

  • Copyright (c) 2006 Verdens Gang AS
  • Copyright (c) 2006-2021 Varnish Software AS

Copyright © 2006 Verdens Gang AS
Copyright © 2006–2020 Varnish Software AS
Licensed under the BSD-2-Clause License.
https://varnish-cache.org/docs/7.4/reference/vcl-probe.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API