Wie kann ich fehlgeschlagene Zustandsprüfungen für Application Load Balancern beheben und korrigieren?

Lesedauer: 7 Minute
0

Die in meinem Application Load Balancer registrierten Ziele sind nicht fehlerfrei. Wie finde ich heraus, warum meine Ziele die Zustandsprüfung nicht bestehen?

Behebung

Gehen Sie zur Fehlerbehebung und Behebung fehlgeschlagener Zustandsprüfungen für Ihren Application Load Balancer wie folgt vor:

  1. Überprüfen Sie den Zustand Ihrer Ziele, um den Ursachencode und die Beschreibung Ihres Problems zu finden.
  2. Gehen Sie für den Fehler, den Sie erhalten haben, wie unten beschrieben vor.

Elb.InitialHealthChecking

Beschreibung: Erste Zustandsprüfungen sind im Gange.

Behebung: Bevor ein Ziel Anfragen vom Load Balancer empfangen kann, muss dieses Ziel die ersten Zustandsprüfungen bestehen. Warten Sie, bis Ihr Ziel die ersten Zustandsprüfungen bestanden hat, und überprüfen Sie dann erneut seinen Gesundheitsstatus.

Elb.RegistrationInProgress

Beschreibung: Die Target-Registrierung ist im Gange.

Behebung: Der Load Balancer beginnt mit der Weiterleitung von Anfragen an das Ziel, sobald der Registrierungsprozess abgeschlossen ist und das Ziel die ersten Zustandsprüfungen bestanden hat.

Target.DeregistrationInProgress

Beschreibung: Die Abmeldung vom Ziel ist im Gange.

Behebung: Wenn Sie ein Ziel abmelden, wartet der Load Balancer, bis die In-Flight-Anfragen abgeschlossen sind. Dies wird als Abmeldeverzögerung bezeichnet. Standardmäßig wartet Elastic Load Balancing 300 Sekunden, bevor der Abmeldevorgang abgeschlossen wird. Sie können diesen Wert jedoch anpassen.

Wenn ein Ziel, das sich abmeldet, keine laufenden Anfragen und keine aktiven Verbindungen hat, wird Elastic Load Balancing sofort abgemeldet, ohne auf das Abmelden der Registrierung zu warten. Der Ausgangszustand eines Ziels, das sich abmeldet, ist erschöpft. Nach Ablauf der Abmeldefrist ist der Abmeldevorgang abgeschlossen und der Status des Ziels ist ungenutzt. Wenn das Ziel Teil einer Auto Scaling-Gruppe ist, kann es beendet und ersetzt werden.

Target.FailedHealthChecks

Beschreibung: Der Load Balancer hat beim Herstellen einer Verbindung zum Ziel einen Fehler erhalten, oder die Zielantwort war falsch formatiert.

Behebung:

  • Stellen Sie sicher, dass Ihre Anwendung läuft. Verwenden Sie den Befehl Dienst, um den Status von Diensten auf Linux-Zielen zu überprüfen. Informationen zu Windows-Zielen finden Sie auf der Registerkarte Dienste des Windows Task-Managers. Wenn der Dienst beendet ist, starten Sie den Dienst. Wenn der Dienst nicht erkannt wird, überprüfen Sie, ob der erforderliche Dienst installiert ist.
  • Stellen Sie sicher, dass das Ziel auf dem Zustandsprüfungs-Anschluss auf Datenverkehr wartet. Sie können den Befehl ss auf Linux-Zielen verwenden, um zu überprüfen, welche Anschlüsse Ihr Server überwacht. Für Windows-Ziele können Sie den Befehl netstat verwenden.
  • Stellen Sie sicher, dass Ihre Anwendung auf die Anforderungen des Load Balancern zur Zustandsprüfung entsprechend reagiert. Das folgende Beispiel zeigt eine typische Zustandsprüfungsanforderung des Application Load Balancern, die Ihre Ziele mit einer gültigen HTTP-Antwort zurückgeben müssen. Der Host-Header-Wert enthält die private IP-Adresse des Ziels, gefolgt vom Zustandsprüfungs-Anschluss. Der User-Agent ist auf ELB-HealthChecker/2.0 eingestellt. Der Zeilenabschluß für Message-Header-Felder ist die Sequenz CRLF, und der Header endet an der ersten leeren Zeile, gefolgt von einem CRLF. Fügen Sie Ihrer Webserverkonfiguration bei Bedarf einen virtuellen Standardhost hinzu, um die Zustandsprüfungsanfragen zu empfangen.
GET / HTTP/1.1
Host: 10.0.0.1:80
Connection: close
User-Agent: ELB-HealthChecker/2.0
Accept-Encoding: gzip, compressed
  • Der Zieltyp Ihrer Zielgruppe bestimmt, an welche Netzwerkschnittstelle der Load Balancer die Zustandsprüfungen der Ziele sendet. Sie können beispielsweise Instance-IDs, IP-Adressen und Lambda-Funktionen registrieren. Wenn der Zieltyp Instance-ID ist, sendet der Load Balancer Zustandsprüfungsanforderungen an die primäre Netzwerkschnittstelle der Ziele. Wenn der Zieltyp eine IP-Adresse ist, sendet der Load Balancer Zustandsprüfungsanforderungen an die Netzwerkschnittstelle, die der entsprechenden IP-Adresse zugeordnet ist. Wenn an Ihre Ziele mehrere Schnittstellen angeschlossen sind, stellen Sie sicher, dass Ihre Anwendung auf der richtigen Netzwerkschnittstelle lauscht.
  • Die Sicherheitsrichtlinie ELBSecurityPolicy-2016-08 security policy wird für Zielverbindungen und HTTPS-Zustandsprüfungen verwendet. Stellen Sie sicher, dass das Ziel ein Serverzertifikat und einen Schlüssel in dem in der Sicherheitsrichtlinie angegebenen Format bereitstellt. Stellen Sie außerdem sicher, dass das Ziel eine oder mehrere übereinstimmende Chiffren und ein vom Load Balancer bereitgestelltes Protokoll unterstützt, um den TLS-Handshake einzurichten.

Target.InvalidState

Beschreibung: Das Ziel befindet sich im gestoppten oder beendeten Zustand.

Behebung: Wenn das Ziel eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance ist, öffnen Sie die Amazon EC2-Konsole. Stellen Sie dann sicher, dass die Instance läuft. Starten Sie die Instance, falls erforderlich.

Target.IpUnusable

Beschreibung: Die IP-Adresse kann nicht als Ziel verwendet werden, da sie von einem Load Balancer verwendet wird.

Behebung: Wenn Sie eine Zielgruppe erstellen, geben Sie deren Zieltyp an. Wenn der Zieltyp IP ist, wählen Sie keine IP-Adresse, die bereits von einem Load Balancer verwendet wird.

Target.NotInUse

Beschreibung: Die Zielgruppe wird von keinem Load Balancer verwendet oder das Ziel befindet sich in einer Availability Zone, die für seinen Load Balancer nicht aktiviert ist.

Behebung:

  • Überprüfen Sie die Zielgruppe und stellen Sie sicher, dass sie für den Empfang von Traffic vom Load Balancer konfiguriert ist.
  • Stellen Sie sicher, dass die Availability Zone des Ziels für den Load Balancer aktiviert ist.

Target.NotRegistered

Beschreibung: Das Ziel ist nicht für die Zielgruppe registriert.

Behebung: Stellen Sie sicher, dass das Ziel bei der Zielgruppe registriert ist.

Target.ResponseCodeMismatch

Beschreibung: Die Zustandsprüfungen haben keinen erwarteten HTTP-Code zurückgegeben.

Behebung:

  • Erfolgscodes sind die HTTP-Codes, die verwendet werden, um zu überprüfen, ob ein Ziel erfolgreich reagiert hat. Sie können Werte oder Wertebereiche zwischen 200 und 499 angeben. Der Standardwert ist 200 %. Überprüfen Sie die Konfiguration Ihres Load Balancern zur Zustandsprüfung, um zu überprüfen, welche Erfolgscodes er erwartet. Überprüfen Sie dann die Zugriffsprotokolle Ihres Webservers, um festzustellen, ob die erwarteten Erfolgscodes zurückgegeben werden. Bei Bedarf, ändern Sie den Wert des Erfolgscodes.
  • Stellen Sie sicher, dass der Ping-Pfad gültig ist. Der Ping-Pfad ist das Ziel der Ziele für Zustandsprüfungen. Stellen Sie sicher, dass Sie eine gültige URI angeben (/path?query). Die Standardeinstellung ist /. Ändern Sie den Ping-Pfadwert, falls erforderlich.

Target.Timeout

Beschreibung: Zeitüberschreitung bei Anforderung.

Behebung: Wenn Sie eine Verbindung herstellen können, reagiert die Zielseite möglicherweise nicht vor Ablauf des Timeouts für den Zustandsprüfung. Bei den meisten Webservern wie NGINX und IIS können Sie protokollieren, wie lange der Server braucht, um zu antworten. Wenn Ihre Zustandsprüfungsanfragen länger als das konfigurierte Timeout dauern, haben Sie folgende Möglichkeiten:

Wenn Sie keine Verbindung herstellen können:

  • Stellen Sie sicher, dass die dem Ziel zugeordnete Sicherheitsgruppe den Datenverkehr vom Load Balancer zulässt, indem Sie den Zustandsprüfungs-Anschluss und das Zustandsprüfungsprotokoll verwenden. Sie können der Sicherheitsgruppe eine Regel hinzufügen, um den gesamten Datenverkehr aus der Load Balancer-Sicherheitsgruppe zuzulassen. Außerdem muss die Sicherheitsgruppe für Ihren Load Balancer den Datenverkehr zu den Zielen zulassen.
  • Stellen Sie sicher, dass die Netzwerk-ACL, die den Subnetzen Ihres Ziels zugeordnet ist, eingehenden Datenverkehr über den Zustandsprüfungs-Anschluss zulässt. Stellen Sie sicher, dass es auch ausgehenden Datenverkehr an den kurzlebigen Anschlüssen (1024-65535) zulässt.
  • Stellen Sie sicher, dass die Netzwerk-ACL, die den Subnetzen Ihrer Load Balancer-Knoten zugeordnet ist, eingehenden Datenverkehr auf den kurzlebigen Anschlüssen zulässt. Stellen Sie sicher, dass es auch ausgehenden Datenverkehr über den Zustandsprüfungs- und Ephemeral-Anschlüssen zulässt.
  • Stellen Sie sicher, dass alle Firewalls auf Betriebssystemebene auf dem Ziel den Ein- und Ausgang des Zustandsprüfungs-Datenverkehrs zulassen.
  • Stellen Sie sicher, dass die Routentabelle für die mit dem Ziel verknüpften Subnetze einen Eintrag enthält, der den Zustandsprüfungs-Verkehr zurück zum Load Balancer zulässt.
  • Stellen Sie sicher, dass die Speicher- und CPU-Auslastung Ihrer Ziele innerhalb akzeptabler Grenzen liegen. Wenn Ihre Speicher- oder CPU-Auslastung zu hoch ist, fügen Sie zusätzliche Ziele hinzu oder erhöhen Sie die Kapazität Ihrer Auto Scaling-Gruppe. Wenn Ihr Ziel eine EC2-Instance ist, können Sie die Instance auch auf einen größeren Instance-Typ aktualisieren.

Ähnliche Informationen

Fehlerbehebung bei Ihren Application Load Balancern