Um diretor Varnish pode ser consultado quanto ao número de back-ends íntegros que ele contém?

Um diretor Varnish pode ser consultado quanto ao número de back-ends íntegros que ele contém?

Especificamente no Varnish 3, existe uma maneira de verificar se um diretor possui back-ends saudáveis?

Meu caso de uso é que tenho um balanceador de carga que distribui tráfego para duas caixas de verniz, que por sua vez estão na frente de vários servidores web. Quero que o Varnish retorne 200 para a verificação de integridade do balanceador de carga se o diretor tiver pelo menos um back-end íntegro, sem depender de passar a solicitação para um back-end real.

Estou procurando algo como:

if (req.url ~ "healthcheck.html") {
    if (my_director.has_healthy_backend) {
        return 200
    } else {
        error 500 "No backends available"
    }
}

Responder1

O principal é que você tenha seu diretor configurado para sondar, para que ele realmente tenha um status de integridade em seus back-ends. Se for esse o caso, você poderia simplesmente usar algo como o seguinte:

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...]

Responder2

A solução equivalente de Verniz 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"));
  }
}

informação relacionada