Ich verwende einen VM-Maßstab für meine Knoten-Anwendung. Meine App hat eine Aktion, die öffentlich zugänglich ist über www.mydomain.com/api/healthcheck
und druckt nur einige JSON. Wenn ich meine Gesundheit Sonde konfigurieren, um TCP
Protokoll zu verwenden, funktioniert alles gut und auch meine API gibt mir die erwartete JSON (und Status 200). Wenn ich nun jedoch meine Gesundheitssonde auf HTTP
und path = umstelle, ist meine Website nicht mehr erreichbar (ERR_CONNECTION_TIMED_OUT
... ich nehme an, der Loadbalancer nimmt alle Instanzen heraus, weil die Gesundheitsprobe ihm sagt, dass jede Instanz ungesund ist)Health Probe markiert Instanzen als ungesund, aber die sind nicht
ich benutze nginx vor meinem Knoten app, aber ich habe auch versucht (zum Testen) meine LoadBalancer zu routen Port 80 zu konfigurieren 8080 backendport (wo mein Knoten App auf jedem Rechner läuft, so kann ich nginx Proxy vermeiden). Aber ich bekomme das gleiche Verhalten.
Ich habe keine Ideen, warum meine benutzerdefinierte Gesundheitsprüfung nicht funktioniert. Hoffe du kannst helfen.
Edit: Zum Testen habe ich die folgenden:
- Lauf eine andere NodeJS App auf Port 3000 auf jeder VM, die gerade druckt "Hallo Welt" (ohne Nginx Proxy!)
- eine LB-Regel für Port 3000 erstellen und auch meine NSG so konfigurieren, dass 3000 für alle
- am Anfang, ist meine Gesundheit Sonde konfiguriert
tcp
- resu zu verwenden lt:
mydoamin.com:3000/hello
ist verfügbar (prints hallo und liefert 200) - jetzt ich meine Gesundheit Sonde verwenden
http
-Protokoll, Port3000
und Standort/hello
konfigurieren. - Ergebnis: mein ganzer Web-App ist nicht mehr verfügbar
Scheitert die HTTP-Integritätsprüfung auch mit Port 80? Oder nur bei Verwendung von Port 8080? Ist es auch möglich, dass Ihre Site vom http-Endpunkt zum entsprechenden https-Endpunkt umgeleitet wird? –
Es scheitert auch an Port 80. Ja, es gab eine Weiterleitung zu https, aber ich habe diese Regel für Testfälle gelöscht, aber wieder bekomme ich das gleiche Verhalten. – Munchkin