Wie funktioniert der Amazon ELB-Integritätscheck?

Wie funktioniert der Amazon ELB-Integritätscheck?

Ich habe Probleme beim Konfigurieren von ELB für meine Server.

Ich starte 2 Mikroinstanzen mit genau derselben Konfiguration und versuche, Lastenausgleich durchzuführen. Sie bestehen jedoch nie den Integritätscheck (HTTP-Port 80-Pfad: „/“).

  • Der Ping auf der Website ist ok. Ebenso Telnet auf 80.

Wie hat der Gesundheitscheck funktioniert? Mache ich etwas wirklich falsch?

BEARBEITEN:

  • Sowohl der direkte Browserzugriff als auch GET (über curl) funktionieren ordnungsgemäß (Status 200).

Antwort1

Ich habe das gleiche Problem. Als Übergangslösung lasse ich es einfach TCP:80 überprüfen (was gut funktioniert).

Antwort2

Ich bin zu dem Schluss gekommen, dass die Antwort, abgesehen davon, dass es sich um eine HTTP 200-Antwort handelt, bestimmte Header enthalten muss. Ich habe eine HTTP 200-Antwort von meinem Tomcat-Server erhalten, die auf der Instanz ausgeführt wurde, die nicht funktionierte, aber eine statische HTML-Seite, die von httpd bereitgestellt wurde (und ebenfalls einen 200-Code zurückgab), funktionierte einwandfrei. Wenn man sich die Header ansieht, war einer der wenigen Unterschiede, dass der Tomcat-Header den Inhaltstyp nicht enthielt. Ich bin mir jedoch nicht sicher, warum das einen Unterschied machen sollte.

Antwort3

Ich gehe davon aus, dass es eine HTTP-GET-Anforderung an den angegebenen Pfad "/" jedes Servers ausführt und nach einem erfolgreichen HTTP-Antwortcode (200) sucht. Können Sie erfolgreich eine GET-Anforderung über http://<backend_server_IP>:80/einen Browser (oder ein CLI-Tool wie wgetoder curl) stellen?

Wenn die Anfrage erfolgreich bearbeitet wurde, lautet die zweite Frage: Haben Sie die Sicherheitsgruppe Ihrer Server so konfiguriert, dass der Zugriff auf Port 80 auf eine bestimmte Quelladresse oder ein bestimmtes Subnetz beschränkt ist? Wenn ja, müssen Sie die Sicherheitsgruppe von ELB zum Filter hinzufügen. Die Gruppe heißt immer:

amazon-elb/amazon-elb-sg

Sie können dies also einfach unter dem Feld „Quelle“ im Abschnitt „Sicherheitsgruppen“ der AWS-Konsole hinzufügen.

Antwort4

also habe ich die HTTP-Prüfung einfach zum Laufen gebracht, indem ich sie auf eine statische HTML-Datei (und nicht auf eine PHP-Seite) gerichtet habe.

„/“ funktioniert nicht, obwohl es bei Verwendung von Curl usw. einen gültigen HTTP-Status zurückgibt. „/file.html“ besteht jedoch die Integritätsprüfung.

verwandte Informationen