Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
VCL-PROBE(7)		Miscellaneous Information Manual	    VCL-PROBE(7)

NAME
     VCL-probe - Configuring Backend Health Probes

BACKEND HEALTH PROBES
     Vinyld  can be configured to periodically send a request to test if a back-
     end is answering and thus "healthy".

     Probes can be configured per backend:

	backend foo {
	    [...]
	    .probe = {
		[...]
	    }
	}

     They can be named and shared between backends:

	probe light {
	    [...]
	}

	backend foo {
	    .probe = light;
	}

	backend bar {
	    .probe = light;
	}

     Or a default probe can be defined, which applies to all backends without  a
     specific .probe configured:

	probe default {
	    [...]
	}

     The basic syntax is the same as for backends:

	probe name {
	    .attribute1 = value;
	    .attribute2 = "value";
	    [...]
	}

     There are no mandatory attributes, they all have defaults.

ATTRIBUTE .URL
     The URL to query.	Defaults to /:

	.url = "/health-probe";

ATTRIBUTE .REQUEST
     Can be used to specify a full HTTP/1.1 request to be sent:

	.request = "GET / HTTP/1.1"
	    "Host: example.com"
	    "X-Magic: We're fine with this."
	    "Connection: close";

     Each  of  the strings will have CRLF appended and a final HTTP header block
     terminating CRLF will be appended as well.

     Because connection shutdown is part of the health check, Connection:  close
     is mandatory.

ATTRIBUTE .EXPECTED_RESPONSE
     The expected HTTP status, defaults to 200:

	.expected_response = 418;

ATTRIBUTE .EXPECT_CLOSE
     Whether or not to expect the backend to close the underlying connection.

     Accepts true or false, defaults to true:

	.expect_close = false;

     Warning:  when  the  backend  does  not  close  the connection, setting ex-
     pect_close to false makes probe tasks wait until they time out  before  in-
     specting the response.

ATTRIBUTE .TIMEOUT
     How fast the probe must succeed, default is two seconds:

	.timeout = 10s;

ATTRIBUTE .INTERVAL
     Time between probes, default is five seconds:

	.interval = 1m;

THE BACKEND HEALTH SHIFT REGISTER
     Backend  health  probes uses a 64 stage shift register to remember the most
     recent health probes and to evaluate the total health of the backend.

     In the CLI, a good backend health status looks like this:

	vinyl> backend.list -p boot.backend
	Backend name	Admin	 Probe	  Health     Last change
	boot.backend	probe	 5/5	  healthy    Wed, 13 Jan 2021 10:31:50 GMT
	 Current states  good:	5 threshold:  4 window:  5
	  Average response time of good probes: 0.000793
	  Oldest ================================================== Newest
	  4444444444444444444444444444444444444444444444444444444444444444 Good IPv4
	  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Good Xmit
	  RRRRRRRRRRRRRRRRRRRRRRR----RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR Good Recv
	  HHHHHHHHHHHHHHHHHHHHHHH--------HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH Happy

     Starting from the bottom, the last line shows that this  backend  has  been
     declared "Happy" for most the 64 health probes, but there were some trouble
     some while ago.

     However, in this case the .window is configured to five, and the .threshold
     is  set  to four, so at this point in time, the backend is considered fully
     healthy.

     An additional .initial fills that many "happy" entries in the shift  regis-
     ter  when	the  VCL is loaded, so that backends can quickly become healthy,
     even if their health is normally considered over many samples:

	.interval = 1s;
	.window = 60;
	.threshold = 45;
	.initial = 43;

     This backend will be considered healthy if three out of four health  probes
     in  the  last  minute were good, but it becomes healthy as soon as two good
     probes have happened after the VCL was loaded.

     The default values are:

     * .window = 8

     * .threshold = 3

     * .initial = one less than .threshold

     Note that the default .initial means that the backend will  be  marked  un-
     healthy  until  the  first probe response come back successful.  This means
     that for backends created on demand (by vmods) cannot use the default value
     for .initial, as the freshly created backend would very likely still be un-
     healthy when the backend request happens.

   SEE ALSO
     * vinyld(1)

     * vcl(7)

     * vcl-backend(7)

     * vmod_directors(3)

     * vmod_std(3)

   HISTORY
     VCL was developed by Poul-Henning Kamp in cooperation with Verdens Gang AS,
     Redpill Linpro and Varnish Software.  This manual page is	written  by  Per
     Buer,  Poul-Henning  Kamp, Martin Blix Grydeland, Kristian LyngstA,l, Lasse
     Karstensen and others.

   COPYRIGHT
     This document is licensed under the same license as Vinyl Cache itself. See
     LICENSE for details.

     * Copyright (c) 2006 Verdens Gang AS

     * Copyright (c) 2006-2021 Varnish Software AS

								    VCL-PROBE(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vcl-probe&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help