Mailing List Archive

Varnish Health check
Hi,
I want to adjust health check on my varnish backends, But I dont know how can I know they are healthy or not
because the nodes are up and running and even service is up but varnish does'nt work for all requests (just third of them are responding till I restart it (It happens sometimes)).
How can I check this?
```
backend server1 {
.host = "server1.example.com";
.probe = {
.request =
"HEAD / HTTP/1.1"
"Connection: close"
"User-Agent: Varnish Health Probe";
.timeout = 1s;
.interval = 5s;
.window = 5;
.threshold = 3;
}
}
```
Re: Varnish Health check [ In reply to ]
Hi,

The answer will be highly dependent on your setup, usually you want to find
a probe request that will truly test the backend. One option, if you have
control over the backend is to write a page to test the subsystem and make
sure everybody's up.

This link may prove useful:
https://info.varnish-software.com/blog/backends-load-balancing

--
Guillaume Quintard


On Thu, Feb 18, 2021 at 4:51 AM Hamidreza Hosseini <hrhosseini@hotmail.com>
wrote:

> Hi,
> I want to adjust health check on my varnish backends, But I dont know how
> can I know they are healthy or not
> because the nodes are up and running and even service is up but varnish
> does'nt work for all requests (just third of them are responding till I
> restart it (It happens sometimes)).
> How can I check this?
> ```
> backend server1 {
> .host = "server1.example.com";
> .probe = {
> .request =
> "HEAD / HTTP/1.1"
> "Connection: close"
> "User-Agent: Varnish Health Probe";
> .timeout = 1s;
> .interval = 5s;
> .window = 5;
> .threshold = 3;
> }
> }
> ```
> _______________________________________________
> varnish-misc mailing list
> varnish-misc@varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>
Re: Varnish Health check [ In reply to ]
Hi everybody,

Am 18.02.2021 um 16:00 schrieb Guillaume Quintard:

>> I want to adjust health check on my varnish backends, But I dont know
>> how can I know they are healthy or not

> The answer will be highly dependent on your setup, usually you want
> to find a probe request that will truly test the backend. One option,
> if you have control over the backend is to write a page to test the
> subsystem and make sure everybody's up.

True. It definitely is important to have a close look at the system that
you are performing the health check on.

We are running a php based cms and are running a health check on a small
script. That script is testing if there is an active db, if the
rendering engine of the cms is responding and if everthing is fine. it
is returning a "1". If not, it will exit and the probe fails, rendering
the backend as sick.

--
-c
Re: Varnish Health check [ In reply to ]
please keep the mailing-list in CC for future communications.

> Open error 111 (Connection refused)

This is a TCP issue, the backend is just not accepting the connection, are
you sure the IP:PORT is right?

--
Guillaume Quintard


On Thu, Feb 18, 2021 at 8:16 AM Hamidreza Hosseini <hrhosseini@hotmail.com>
wrote:

> I read you article and it was great but I didn't find out my answer, I
> said that I have 2 layer varnish: disk layer and ram layer and ram layer,
> I want to check the health of layer 2 for example:
>
> Varnish Ram ===> Varnish Disk ===> Webserver
> I adjust this probe on varnish ram:
>
> probe myprobe {
> .request =
> "HEAD / HTTP/1.1"
> "Connection: close"
> "User-Agent: Varnish Health Probe";
> .timeout = 1s;
> .interval = 5s;
> .window = 5;
> .threshold = 3;
> }
> and varnish says: ` 0 Backend_health - boot.varnish_1 Still sick --------
> 0 3 5 0.000000 0.000000 Open error 111 (Connection refused)`
> And I think it is right because it checks HEAD / on varnish backends and
> there is nothing there!
> So I'm asking how should I configure the probe to trigger another varnish
> health as a backend
>
> Best regards.
>
> ------------------------------
> *From:* Guillaume Quintard <guillaume@varnish-software.com>
> *Sent:* Thursday, February 18, 2021 7:14 AM
> *To:* Hamidreza Hosseini <hrhosseini@hotmail.com>
> *Subject:* Re: Varnish Health check
>
> Ah, I missed the multilayer setup. In that case, you can have a look at
> this one: https://info.varnish-software.com/blog/howto-respond-to-probes
> --
> Guillaume Quintard
>
>
> On Thu, Feb 18, 2021 at 7:08 AM Hamidreza Hosseini <hrhosseini@hotmail.com>
> wrote:
>
> How can I probe a backend varnish? for example I have 2 layer varnish disk
> layer and ram layer and ram layer want to check the health of layer 2, How
> can I do this? I've done something but I have error:
>
> sudo varnishadm backend.list -p
> Backend name Admin Probe Last updated
> boot.varnish_1 probe Sick 0/5
> Current states good: 0 threshold: 3 window: 5
> Average response time of good probes: 0.000000
> Oldest ================================================== Newest
> ---------------------------------------------------------------- Happy
>
> sudo varnishlog -g raw -i Backend_health
> 0 Backend_health - boot.varnish_1 Still sick -------- 0 3 5 0.000000
> 0.000000 Open error 111 (Connection refused)
>
> my config:
> probe myprobe {
> .request =
> "HEAD / HTTP/1.1"
> "Connection: close"
> "User-Agent: Varnish Health Probe";
> .timeout = 1s;
> .interval = 5s;
> .window = 5;
> .threshold = 3;
> }
> ------------------------------
> *From:* Guillaume Quintard <guillaume@varnish-software.com>
> *Sent:* Thursday, February 18, 2021 7:00 AM
> *To:* Hamidreza Hosseini <hrhosseini@hotmail.com>
> *Cc:* varnish-misc@varnish-cache.org <varnish-misc@varnish-cache.org>
> *Subject:* Re: Varnish Health check
>
> Hi,
>
> The answer will be highly dependent on your setup, usually you want to
> find a probe request that will truly test the backend. One option, if you
> have control over the backend is to write a page to test the subsystem and
> make sure everybody's up.
>
> This link may prove useful:
> https://info.varnish-software.com/blog/backends-load-balancing
>
> --
> Guillaume Quintard
>
>
> On Thu, Feb 18, 2021 at 4:51 AM Hamidreza Hosseini <hrhosseini@hotmail.com>
> wrote:
>
> Hi,
> I want to adjust health check on my varnish backends, But I dont know how
> can I know they are healthy or not
> because the nodes are up and running and even service is up but varnish
> does'nt work for all requests (just third of them are responding till I
> restart it (It happens sometimes)).
> How can I check this?
> ```
> backend server1 {
> .host = "server1.example.com";
> .probe = {
> .request =
> "HEAD / HTTP/1.1"
> "Connection: close"
> "User-Agent: Varnish Health Probe";
> .timeout = 1s;
> .interval = 5s;
> .window = 5;
> .threshold = 3;
> }
> }
> ```
> _______________________________________________
> varnish-misc mailing list
> varnish-misc@varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>
>
Re: Varnish Health check [ In reply to ]
I correct the wrong name (It couldn't resolve from dns server), But now I have this error:

0 Backend_health - boot.varnish_1 Still sick 4---X-R- 0 3 5 0.007800 0.000000 HTTP/1.1 400 Bad Request

My probe:

probe myprobe {
.request =
"HEAD / HTTP/1.1"
"Connection: close"
"User-Agent: Varnish Health Probe";
.timeout = 3s;
.interval = 5s;
.window = 5;
.threshold = 3;
}
Should I change the probe request "HEAD /" to something else?
Is there any way to define special port and whenever it is accessable even with authentication erro (error 400) it consider backend healthy?
________________________________
From: Hamidreza Hosseini
Sent: Thursday, February 18, 2021 4:49 AM
To: varnish-misc@varnish-cache.org <varnish-misc@varnish-cache.org>
Subject: Varnish Health check

Hi,
I want to adjust health check on my varnish backends, But I dont know how can I know they are healthy or not
because the nodes are up and running and even service is up but varnish does'nt work for all requests (just third of them are responding till I restart it (It happens sometimes)).
How can I check this?
```
backend server1 {
.host = "server1.example.com";
.probe = {
.request =
"HEAD / HTTP/1.1"
"Connection: close"
"User-Agent: Varnish Health Probe";
.timeout = 1s;
.interval = 5s;
.window = 5;
.threshold = 3;
}
}
```
Re: Varnish Health check [ In reply to ]
Your backend is returning a 400, most probably because there's no host
header in your probe.

--
Guillaume Quintard


On Fri, Feb 19, 2021 at 8:53 PM Hamidreza Hosseini <hrhosseini@hotmail.com>
wrote:

> I correct the wrong name (It couldn't resolve from dns server), But now I
> have this error:
>
> 0 Backend_health - boot.varnish_1 Still sick 4---X-R- 0 3 5 0.007800
> 0.000000 HTTP/1.1 400 Bad Request
>
> My probe:
>
> probe myprobe {
> .request =
> "HEAD / HTTP/1.1"
> "Connection: close"
> "User-Agent: Varnish Health Probe";
> .timeout = 3s;
> .interval = 5s;
> .window = 5;
> .threshold = 3;
> }
> Should I change the probe request "HEAD /" to something else?
> Is there any way to define special port and whenever it is accessable even
> with authentication erro (error 400) it consider backend healthy?
> ------------------------------
> *From:* Hamidreza Hosseini
> *Sent:* Thursday, February 18, 2021 4:49 AM
> *To:* varnish-misc@varnish-cache.org <varnish-misc@varnish-cache.org>
> *Subject:* Varnish Health check
>
> Hi,
> I want to adjust health check on my varnish backends, But I dont know how
> can I know they are healthy or not
> because the nodes are up and running and even service is up but varnish
> does'nt work for all requests (just third of them are responding till I
> restart it (It happens sometimes)).
> How can I check this?
> ```
> backend server1 {
> .host = "server1.example.com";
> .probe = {
> .request =
> "HEAD / HTTP/1.1"
> "Connection: close"
> "User-Agent: Varnish Health Probe";
> .timeout = 1s;
> .interval = 5s;
> .window = 5;
> .threshold = 3;
> }
> }
> ```
> _______________________________________________
> varnish-misc mailing list
> varnish-misc@varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>