Wie behebe ich Fehler bei der Application Load Balancer-Integritätsprüfung für Amazon ECS-Aufgaben auf Fargate?

Lesedauer: 6 Minute
0

Ich möchte Fehler beim Application Load Balancer bei der Ausführung von Amazon Elastic Container Service (Amazon ECS) -Aufgaben auf AWS Fargate beheben.

Kurze Beschreibung

Wenn Amazon ECS-Aufgaben die Application Load Balancer-Zustandsprüfungen nicht bestehen, erhalten Sie möglicherweise eine der folgenden Fehlermeldungen in Ihrer Amazon ECS Serviceereignismeldung:

  • Zeitüberschreitung bei Anforderung
  • Gesundheitschecks sind ohne Fehlercodes fehlgeschlagen
  • Integritätsprüfungen sind mit den Fehlercodes 404 oder 5xx fehlgeschlagen
  • Das Ziel befindet sich in einer Availability Zone, die für den Load Balancer nicht aktiviert ist

Informationen zu fehlgeschlagenen Container-Integritätsprüfungen finden Sie unter Wie behebe ich die Fehler bei der Container-Integritätsprüfung für Amazon ECS-Aufgaben?

Wenn Sie Amazon ECS mit Amazon Elastic Compute Cloud (Amazon EC2) Container-Instances verwenden, lesen Sie die folgende Dokumentation:

Auflösung

Hinweis: Wenn beim Ausführen von Befehlen der AWS-Befehlszeilenschnittstelle (AWS CLI) Fehler auftreten, vergewissern Sie sich, dass Sie eine aktuelle Version der AWS-CLI ausführen. Ersetzen Sie in den folgenden AWS-CLI-Befehlen die Beispielwerte durch Ihre Werte.

Fehler bei Timeout bei Anfrage

Überprüfen Sie die Sicherheitsgruppen, um sicherzustellen, dass der Load Balancer Integritätsprüfungsanfragen an die Fargate-Aufgabe stellen kann. Die Fargate-Tasksicherheitsgruppe muss eingehenden und ausgehenden Datenverkehr auf dem Container-Port zulassen, der in der Aufgabendefinition angegeben ist. Die Quelle muss die Application Load Balancer-Sicherheitsgruppe sein. Die Application Load Balancer-Sicherheitsgruppe muss ausgehenden Datenverkehr zur Fargate-Tasksicherheitsgruppe zulassen.

Hinweis: Es hat sich bewährt, verschiedene Sicherheitsgruppen für Ihre Fargate-Aufgabe und Ihren Load Balancer zu konfigurieren, um den Datenverkehr zwischen ihnen zuzulassen.

Wenn die Sicherheitsgruppen die Kommunikation zwischen Ihrem Fargate-Task und Application Load Balancer zulassen, überprüfen Sie Ihre HealthCheckTimeoutSeconds in Ihren Integritätscheck-Einstellungen. Erhöhen Sie die Timeout-Sekunden geringfügig, falls erforderlich.

**Hinweis:**Erhöhen Sie HealthCheckTimeoutSeconds nur, wenn es lange dauert, bis Ihre Anwendung auf einen Gesundheitscheck reagiert.

Führen Sie den folgenden Befehl aus, um die durchschnittliche Antwortzeit zu überprüfen:

$ time curl -Iv http://<example-task-pvt-ip>:<example-port>/<example_healthcheck_path>

Hinweis: Eine hohe Ressourcenauslastung bei Aufgaben kann zu einer Verlangsamung oder einem Stillstand des Prozesses führen und dazu führen, dass die Integritätsprüfung fehlschlägt.

Gesundheitschecks sind ohne Fehlercodes fehlgeschlagen

Beispiel für die Fehlermeldung „Gesundheitscheck fehlgeschlagen“:

(service AWS-service) (port 80) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed)

Wenn Sie eine ähnliche Fehlermeldung erhalten, überprüfen Sie, ob die Aufgabe nach dem Start in Amazon ECS schnell reagiert. Überprüfen Sie außerdem, ob die Anwendung mit dem richtigen Antwortcode antwortet.

Stellen Sie sicher, dass die Aufgabe nach dem Start in Amazon ECS Zeit hat, zu reagieren

Um sicherzustellen, dass die Aufgabe nach dem Start ausreichend Zeit hat, um zu reagieren, erhöhen Sie den Wert von HealthCheckGracePeriodSeconds. Dadurch kann Amazon ECS die Aufgabe für einen längeren Zeitraum aufbewahren und fehlerhafte Zustandsprüfungen der Elastic Load Balancing-Ziele ignorieren.

Hinweis: Wenn Sie einen neuen Dienst erstellen, können Sie die Übergangsfrist für die Integritätsprüfung auf der Load Balancer-Konfigurationsseite konfigurieren.

Führen Sie den folgenden Befehl aus, um healthCheckGracePeriodSeconds für Ihren vorhandenen Amazon ECS-Service zu aktualisieren:

$ aws ecs update-service --cluster <EXAMPLE-CLUSTER-NAME> --service <EXAMPLE-SERVICE-NAME> --region <EXAMPLE-REGION> --health-check-grace-period-seconds <example-value-in-seconds>

Überprüfen Sie, ob die Anwendung mit dem richtigen Antwortcode antwortet

Verwenden Sie die folgenden Methoden, um den Antwortcode zu bestätigen, den Ihre Anwendung über den Health Check-Pfad gesendet hat.

Wenn Sie die Zugriffsprotokollierung in Ihrer Anwendung konfiguriert haben, verwenden Sie ELB-HealthChecker/2.0, um die Antwort zu überprüfen. Wenn Sie AWS CloudWatch Logs verwenden, verwenden Sie CloudWatch Logs Insights und führen Sie den folgenden Befehl aus:

fields @timestamp, @message
  | sort @timestamp desc
  | filter @message like /ELB-HealthChecker/

Führen Sie für Amazon EC2-Instances in derselben Amazon Virtual Private Cloud (Amazon VPC) die folgenden Befehle aus, um zu bestätigen, dass Ihre Aufgaben auf manuelle Prüfungen reagieren. Informationen zum Starten einer neuen Amazon EC2-Instance finden Sie im Tutorial: Beginnen Sie mit Amazon EC2 Linux-Instances.

HTTP-Zustandsprüfungen

$ curl -Iv http://<example-task-pvt-ip>:<example-port>/<example_healthcheck_path>

HTTPS-Zustandsprüfungen

$ curl -Iv https://<example-task-pvt-ip>:<example-port>/<example_healthcheck_path>

Wenn Aufgaben schnell beendet werden und Sie die privaten IP-Adressen nicht abrufen können, starten Sie eine eigenständige Aufgabe außerhalb von Amazon ECS, um das Problem zu beheben. Verwenden Sie dieselbe Aufgabendefinition und führen Sie einen curl-Befehl an die entsprechende IP-Adresse aus, um die Aufgabe zu starten. Die Aufgabe wird nicht aufgrund eines Fehlers bei der Integritätsprüfung beendet.

Verwenden Sie außerdem Amazon ECS Exec, um die Listening-Ports auf Container-Ebene zu überprüfen. Stellen Sie mithilfe von netstat sicher, dass die Anwendung auf dem entsprechenden Port lauscht:

$ netstat -tulpn | grep LISTEN

Integritätsprüfungen sind mit den Fehlercodes 404 oder 5xx fehlgeschlagen

Fehlgeschlagene Integritätsprüfungen mit 404 - oder 5xx-Fehlercodes bedeuten, dass die Integritätscheck-Anfrage zwar bestätigt wurde, aber ein ungültiger Antwortcode empfangen wurde. Die Codes weisen auch darauf hin, dass der von der Anwendung gesendete Antwortcode nicht mit dem Erfolgscode übereinstimmt, der auf Zielgruppenebene konfiguriert wurde (Parameter: Matcher).

Ein 404-Fehlercode kann auftreten, wenn kein Pfad zur Integritätsprüfung existiert oder ein Tippfehler in der Konfiguration des Zustandsprüfpfads vorliegt. Ein 5xx-Fehlercode kann auftreten, wenn die in der Aufgabe enthaltene Anwendung die Anfrage nicht korrekt beantwortet oder ein Verarbeitungsfehler vorliegt.

Um festzustellen, ob Ihre Anwendung erfolgreich gestartet wurde, überprüfen Sie Ihre Anwendungsprotokolle.

Das Ziel befindet sich in einer Availability Zone, die für den Load Balancer nicht aktiviert ist

Wenn eine Availability Zone für Ihren Load Balancer aktiviert ist, erstellt Elastic Load Balancing einen Load Balancer-Knoten in der Availability Zone. Wenn Sie Ziele in einer Availability Zone registrieren und die Availability Zone nicht aktivieren, erhalten die registrierten Ziele keinen Traffic. Weitere Informationen finden Sie unter Availability Zones und Load Balancer-Knoten.

Führen Sie den folgenden Befehl aus, um die Availability Zones zu identifizieren, für die Ihr Load Balancer konfiguriert ist:

aws elbv2 describe-load-balancers --load-balancer-arns <EXAMPLE-ALB-ARN> --query 'LoadBalancers[*].AvailabilityZones[].{Subnet:SubnetId}'

Führen Sie den folgenden Befehl aus, um die Availability Zones zu identifizieren, für die Ihre Fargate-Aufgabe konfiguriert ist:

aws ecs describe-services --cluster <EXAMPLE-CLUSTER-NAME> --service <EXAMPLE-SERVICE-NAME> --query 'services[*].deployments[].networkConfiguration[].awsvpcConfiguration.{Subnets:subnets}'

**Hinweis:**Verwenden Sie den AWS-CLI-Befehl update-service, um die Subnetzkonfiguration eines Amazon ECS-Service zu ändern. Verwenden Sie den AWS-CLI-Befehl enable-availability-zones-for-load-balancer, um einem vorhandenen Application Load Balancer eine Availability Zone hinzuzufügen.

Verwandte Informationen

Problembehandlung bei Service Load Balancern

Gesundheitschecks für Ihre Zielgruppen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr