Um diretor de vernizes pode ser consultado sobre o número de backends que ele contém?

1

Especificamente em Varnish 3, existe uma maneira de verificar se um diretor tem algum back-end saudável?

Meu caso de uso é que tenho um balanceador de carga que está distribuindo tráfego para duas caixas de verniz, que, por sua vez, ficam na frente de vários servidores da web. Eu quero que o Varnish retorne um 200 para a verificação de integridade do balanceador de carga se o diretor tiver pelo menos um back-end saudável, 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"
    }
}
    
por shanethehat 23.02.2015 / 12:08

2 respostas

2

O principal é que você tenha seu diretor configurado com sondagem, de modo que ele realmente tenha um status de integridade em seus backends. Se for esse o caso, você pode usar apenas 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...]
    
por 21.04.2015 / 18:03
0

A solução equivalente do 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"));
  }
}
    
por 14.12.2015 / 01:52