health check varnish
Dridi Boukelmoune
dridi at varni.sh
Thu Dec 30 09:17:25 UTC 2021
On Thu, Dec 30, 2021 at 8:17 AM Johan Hendriks <joh.hendriks at gmail.com> wrote:
>
> Hello all, first off all, thanks for a year full of varnish happiness
> like the developers page and the parallel ESI for the varnish-cache edition.
>
> We use the following in the vcl for our varnish health check from our
> haproxy loadbalancers
>
> if (req.url == "/varnish_status") {
> if (!std.healthy(req.backend_hint)) {
> return (synth(500, "Varnish: unhealthy backend."));
> }
> else {
> return (synth(200, "Varnish: All good!"));
> }
> }
>
> And this works fine if we run varnish on the webserver itself with only
> one backend.
> But if we use the director with multiple backends we get an 500 error if
> one of the backend servers is offline even if the director itself has
> enough servers left and still is marked ad healthy.
>
> Is there a way to check if the director itself is down?
>
> like
> Backend name Admin Probe Health Last change
> boot.web01 probe 5/5 healthy Mon, 27 Dec 2021 08:42:58 GMT
> boot.web02 probe 5/5 healthy Mon, 27 Dec 2021 08:42:58 GMT
> boot.web03 probe 5/5 healthy Mon, 27 Dec 2021 08:42:58 GMT
> boot.webcluster probe 2/2 healthy Mon, 27 Dec 2021 08:42:58 GMT
>
> return a 200 as all is good
>
> boot.web01 probe 2/5 sick Wed, 29 Dec 2021 18:33:41 GMT
> boot.web02 probe 4/5 healthy Wed, 29 Dec 2021 18:33:41 GMT
> boot.web03 probe 4/5 healthy Wed, 29 Dec 2021 18:33:41 GMT
> boot.webcluster probe 1/2 healthy Wed, 29 Dec 2021 18:33:41 GMT
>
> still return a 200 as we still have a healthy webcluster backend.
>
> Backend name Admin Probe Health Last change
> boot.web01 probe 2/5 sick Wed, 29 Dec 2021 18:34:40 GMT
> boot.web02 probe 2/5 sick Wed, 29 Dec 2021 18:34:40 GMT
> boot.web02 probe 2/5 sick Wed, 29 Dec 2021 18:34:40 GMT
> boot.webcluster probe 0/2 sick Wed, 29 Dec 2021 18:34:40 GMT
>
> return the 500 error code as our webcluster backend is down.
>
> So can we just get the health status of webcluster in this case?
If you assign webcluster.backend() to req.backend_hint before
performing the health check it should work fine.
Dridi
More information about the varnish-misc
mailing list