Директор Varnish может быть запрошен для количества здоровых бэкендов, которые оно содержит?

Конкретно в Лаке 3, существует ли способ проверить, есть ли у директора какие-либо здоровые бэкенды?

Мой вариант использования - то, что у меня есть подсистема балансировки нагрузки, которая распределяет трафик 2 полям лака, которые в свою очередь находятся перед несколькими веб-серверами. Я хочу, чтобы Лак возвратил 200 проверке состояния подсистемы балансировки нагрузки, если у директора есть по крайней мере один здоровый бэкенд, без в зависимости от передачи запроса до фактического бэкенда.

Я ищу что-то как:

if (req.url ~ "healthcheck.html") {
    if (my_director.has_healthy_backend) {
        return 200
    } else {
        error 500 "No backends available"
    }
}
1
задан 23 February 2015 в 13:36
2 ответа

Главное, чтобы у вашего директора было настроено зондирование, чтобы он действительно имел статус работоспособности на ваших бэкэндах. Если это так, то вы можете просто использовать что-то вроде следующего:

sub vcl_recv {
    if (req.url ~ "healthcheck.html") {
        if (!req.backend.healthy) {
            error 503 "No backends available";
        } else {
            error 200 "All is well";
        }
    }
    [...rest of your logic...]
2
ответ дан 3 December 2019 в 20:59

Эквивалентное решение Varnish 4:

if (req.url ~ "healthcheck.html") {
  if (!std.healthy(req.backend_hint)) {
    return (synth (503, "No backends available"));
  }
  else {
    return (synth (200, "All is well"));
  }
}
0
ответ дан 3 December 2019 в 20:59

Теги

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