HAProxy-Healthchecks für einen Squid-Forward-Proxy
Bauen Sie einen HAProxy-Healthcheck, der mit einem Forward-Proxy spricht, und unterscheiden Sie Erreichbarkeit des Listeners, CONNECT-Annahme und Abruf vom Origin.
Eine Datei namens /check.txt auf einem Proxy-Host klingt nach einem naheliegenden Health-Ziel. Der Haken: Squids expliziter Forward-Listener ist keine gewöhnliche Website, die das Dokumentverzeichnis dieses Hosts ausliefert.
Eine Anfrage im Origin-Stil wie HEAD /check.txt HTTP/1.1 lässt das absolute Ziel weg, das für eine gewöhnliche HTTP-Anfrage über einen Forward-Proxy erwartet wird. Je nach Konfiguration wird sie abgelehnt oder von einem anderen lokalen Dienst behandelt. Beide Ergebnisse sagen Ihnen möglicherweise weniger, als das Dashboard nahelegt.
Wählen Sie den Dienst, der verfügbar bleiben soll
| Prüfung | Nützlicher Nachweis |
|---|---|
| TCP-Verbindung zum Proxy-Listener | Ein erreichbarer Prozess nimmt diese Verbindung an. |
| CONNECT zu einem kontrollierten Ziel | Der Proxy nimmt diese Tunnelanfrage an. |
| HTTP-Abruf über den Proxy | Der gewählte Anfragepfad kann eine erwartete Antwort liefern. |
Für den dritten Fall braucht die Anfrage ein Ziel, zum Beispiel:
HEAD http://probe.example.internal/proxy-ready HTTP/1.1
Host: probe.example.internal
Der Hostname ist nur beispielhaft. Verwenden Sie einen kontrollierten Endpunkt, den der Proxy auflösen kann und den er absichtlich erreichen darf. http-check send von HAProxy unterstützt die Wahl von Methode, URI, Version und Headern; konfigurieren Sie diese Anfrage ausdrücklich, statt ein Origin-Server-Beispiel unverändert zu übernehmen.
HEAD kann einen Antwortstatus und Header prüfen. Einen Antwortkörper, der nie übertragen wird, kann es nicht validieren. Verlangt der Health-Vertrag eine Markierung im Körper, wählen Sie eine passende GET-Prüfung und validieren Sie diese Markierung.
Halten Sie Prüfkonto und Quellbeschränkungen eng, wenn Proxy-Authentifizierung im Spiel ist. Den gesamten Listener von der Authentifizierung auszunehmen, um ein grünes Häkchen zu bekommen, verändert den Dienst, der geschützt wird.
Entscheiden Sie schließlich, was eine fehlgeschlagene Prüfung entfernen soll. Ein kontrollierter Origin-Ausfall kann den Weiterleitungs-Check jedes Proxys gleichzeitig scheitern lassen. Das kann genau die Abhängigkeit sein, die Sie messen wollen, oder ein Grund, Listener-Health und Ende-zu-Ende-Verfügbarkeit als getrennte Signale zu führen.