backend/director admin states
Guillaume Quintard
guillaume at varnish-software.com
Wed May 2 15:07:24 UTC 2018
I think I could live with "auto" meaning "dependent/probe" depending on the
type of object.
Not sure the disabled case is super useful. If I get what you say, the only
thing differing from setting it to sick is that we keep using the open
connections, instead of finishing in-flight requests. Is it worth it?
I'd argue "deleted" should be "dead", just to complete the medically
depressing vocabulary list you started :-)
(and we'll need to bring back "saint" from the dead)
--
Guillaume Quintard
On Wed, May 2, 2018 at 4:50 PM, Nils Goroll <slink at schokola.de> wrote:
> this is a follow up to a discussion between phk and myself on
> #varnish-hacking
> today:
>
> phk is in the process of restructuring director/backend APIs. One of the
> areas
> currently reconsidered is the admin health status. As of now
> (68a78f94b3a4e702edf73dea4e11e626c4c20301), the admin health has become
> private
> to varnishd (off limits to vmods) and semantics have changed.
>
> We discussed which admin health states should exist and their semantics.
> Notice
> that for the "probe" admin health, the actual health state is determined
> by the
> probe.
>
> Here's my proposal:
>
> * auto
>
> this state is the default and only exists as an argument to varnishadm
> backend.set_health. It resolves to either
>
> - "probe" if the backend/director has a probe
> - "dependent" if the director has no probe, but a healthy callback
> - "healthy" otherwise (no probe and no healthy callback)
>
> * healthy
>
> The backend/director is considered unconditionally healthy. Connections
> will
> be attempted.
>
> This state is used for backends without a probe and can be manually set
> using varnishadm backend.set_health and from vmods.
>
> * sick
>
> The backend/director is considered unconditionally sick. Connections
> will not
> be attempted.
>
> Can be manually set using varnishadm backend.set_health and from vmods.
>
> * disabled
>
> The health state is determined as for "probe" or "healthy" but a newly
> added
> VRT / vmod_std function (e.g. backend_disabled()) returns true.
> Directors may
> offer the choice to use disabled backends or not.
>
> Can be manually set using varnishadm backend.set_health and from vmods.
>
> The use case is to flag a backend for plannend maintenance such that it
> is
> used for existing sessions, but not for new ones.
>
> * probe
>
> The health state is determined by a probe, yet connections can still be
> attempted even if the probe is unsuccessful and directors may offer the
> choice
> to still hand out unhealthy backends.
>
> This state can not be set explicitly, but is selected through
> varnishadm backend.set_health auto or from vmods.
>
> * dependent
>
> The health state of the director is determined by the backends it refers
> to.
>
> This state can not be set explicitly, but is selected through
> varnishadm backend.set_health auto or from vmods.
>
> * deleted
>
> The backend has been deleted (via a vmod) will be removed once all
> references
> have been cleared.
>
>
>
> Illustrated example: varnishadm backend.list output
>
> Backend name Admin Probe Last change
> boot.b1 probe 0/8 bad Wed, 02 May 2018
> 13:22:10 GMT
> boot.b2 probe 8/8 good Wed, 02 May 2018
> 13:22:10 GMT
> boot.b3 healthy 1/8 bad Wed, 02 May 2018
> 13:22:10 GMT
> boot.b4 healthy - Wed, 02 May 2018
> 13:22:10 GMT
> boot.b5 sick 7/8 good Wed, 02 May 2018
> 13:22:10 GMT
> boot.b6 sick - Wed, 02 May 2018
> 13:22:10 GMT
> boot.b7 disabled 7/8 good Wed, 02 May 2018
> 13:22:10 GMT
> boot.b8 deleted - Wed, 02 May 2018
> 13:22:10 GMT
> boot.d1 dependent - Wed, 02 May 2018
> 13:22:10 GMT
> boot.d2 probe 3/4 good Wed, 02 May 2018
> 13:22:10 GMT
>
> in detail:
>
> * boot.b1 probe 0/8 bad
>
> backend with a probe for which all recent health checks have failed
>
> result from set_health=auto or default
>
> * boot.b2 probe 8/8 good
>
> backend with a probe for which all recent health checks have succeeded
>
> result from set_health=auto or default
>
> * boot.b3 healthy 1/8 bad
>
> backend with a probe for which most recent health checks have failed
>
> result from set_health=healthy
>
> * boot.b4 healthy -
>
> backend with no probe
>
> result from set_health=healthy, set_health=auto or default
>
> * boot.b5 sick 7/8 good
>
> backend with a probe for which most recent health checks have succeeded
>
> result from set_health=sick
>
> * boot.b6 sick -
>
> backend with no probe
>
> result from set_health=sick
>
> * boot.b7 disabled 7/8 good
>
> backend with a probe for which most recent health checks have succeeded
>
> result from set_health=disabled
>
> custom vcl logic will not use this backend for new sessions
>
> * boot.b8 deleted -
>
> backend has been removed (by a vmod)
>
> * boot.d1 dependent -
>
> director without a probe
>
> result from set_health=auto or default
>
> * boot.d2 probe 3/4 good
>
> director with a probe, which returns 3/4 success (may be the number of
> healthy
> backends)
>
> result from set_health=auto or default
> _______________________________________________
> varnish-dev mailing list
> varnish-dev at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-dev/attachments/20180502/09021df4/attachment.html>
More information about the varnish-dev
mailing list