Varnish tuppaa aika ajoin sairastumaan. Yleensä backendiä, sitä varsinaista sivustoa ja Apachea, ei saada kolkuteltu hereille tai jossain on bitti poikittain. Silloin tulee vastaan grace time, armonajaksi tuo varmaan pitäisi kääntää. Varnish tarjoaa sisällön määrätyn ajan pelkästään cachesta. Jotain pitäisi pystyä tekemään ja mielellään ilman, että Varnish täytyy käynnistää uudelleen. Restart tai reload ovat näppäriä, mutta restart tyhjentää cachen ja jos tilanne ei korjaannukaan, niin kävijöille tarjotaan mystistä error 503
ilmoitusta (joka tarkoittaa, että Varnish ei saa juteltua backendin kanssa). Työkalujen tarve tulee vastaan varsinkin silloin kun sattuu pyörittämään pariakin backendiä, tai luoja varjele, useampaa. Silloin saa ohjattua liikenteen sairaasta terveille, ainakin grace ajan puitteissa.
Backendin terveyden (health status) saa katsottua parillakin komennolla.
$ varnishadm -S /etc/varnish/secret -T localhost:6082 backend.list
$ varnishadm -S /etc/varnish/secret -T localhost:6082 backend.list -p
Ne kertovat samankaltaisia asioita, mutta itse en ymmärrä jälkimmäisen syötteestä hölkäsen pöläystä. Mutta backend.list
kertoo kaikkien backendien tilan, vaikka probea ei olisikaan asetettu. Sen sijaan backend.list -p
taasen kertoo niiden probejen tilasta, jotka on suoritettu. Samalla selviää IPv4 yhteyden tila sekä liikkuuko send/received, ja onko vastaus ollut ylipäätään HTTP/200
.
Jos on tarvetta muuttaa backendin tilaa probesta riippumatta terveeksi tai sairaaksi, niin se onnistuu tällä:
$ varnishadm -S /etc/varnish/secret -T localhost:6082 backend.set_health backend1 healthy
healthy
on tietysti terve, ja jos sen muuttaa muotoon sick
niin backend sairastuu, vaikka probe sitä terveenä pitäisikin. Ja ei, minä en tiedä milloin tällaisia tilanteita olisi. Ehkä terveeksi laitettaisiin silloin kun probe on jonkun väliaikaisen härön takia merkinnyt backendin sairaaksi, ja se halutaan palauttaa ilman. että cache hukataan.
Kun tilaa on muutettu, niin se ei itsestään palaudu – kumpaakaan suuntaan. Varnishille täytyy siis kertoa, että on aika ottaa oma vastuu terveydestä ja antaa probenm päättää onko joku sairas vai ei. Sekin onnistuu:
$ varnishadm -S /etc/varnish/secret -T localhost:6082 backend.set_health backend1 auto