Un file chiamato /check.txt su un host proxy sembra un ovvio obiettivo di salute. Il tranello è che il listener di inoltro esplicito di Squid non è un normale sito web che serve la radice dei documenti di quell'host.

Una richiesta in stile origine come HEAD /check.txt HTTP/1.1 omette il target assoluto atteso per una normale richiesta HTTP attraverso un proxy di inoltro. A seconda della configurazione, può essere rifiutata o gestita da un altro servizio locale. Entrambi gli esiti possono dirvi meno di quanto suggerisca la dashboard.

Scegliete il servizio che dovete mantenere disponibile

ControlloProva utile
Connessione TCP al listener del proxyUn processo raggiungibile accetta quella connessione.
CONNECT verso un target controllatoIl proxy accetta quella richiesta di tunnel.
Recupero HTTP attraverso il proxyIl percorso di richiesta scelto può restituire una risposta attesa.

Nel terzo caso la richiesta ha bisogno di un target, per esempio:

HEAD http://probe.example.internal/proxy-ready HTTP/1.1
Host: probe.example.internal

Il nome host è solo illustrativo. Usate un endpoint controllato che il proxy possa risolvere e a cui sia deliberatamente consentito arrivare. http-check send di HAProxy consente di scegliere metodo, URI, versione e intestazioni; configurate quella richiesta in modo esplicito invece di ereditare senza modifiche un esempio di server di origine.

HEAD può controllare lo stato e le intestazioni di una risposta. Non può validare un corpo di risposta che non viene mai trasferito. Se il contratto di salute richiede un marcatore nel corpo, scegliete un controllo GET adatto e validate quel marcatore.

Tenete stretti l'account di controllo e le restrizioni di origine quando è coinvolta l'autenticazione del proxy. L'esenzione dell'intero listener dall'autenticazione per ottenere una spunta verde cambia il servizio che viene protetto.

Infine, decidete cosa debba rimuovere un controllo fallito. Un'interruzione controllata dell'origine può far fallire contemporaneamente il controllo di inoltro di ogni proxy. Potrebbe essere esattamente la dipendenza che volete misurare, oppure un motivo per tenere la salute del listener e la disponibilità end-to-end come segnali separati.

Articoli correlati