View a markdown version of this page

Fehlerbehebung bei der Einrichtung von App Mesh - AWS App Mesh

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung bei der Einrichtung von App Mesh

Wichtig

Hinweis zum Ende des Supports: Am 30. September 2026 AWS wird der Support für eingestellt. AWS App Mesh Nach dem 30. September 2026 werden Sie nicht mehr auf die AWS App Mesh Konsole oder die Ressourcen zugreifen können. AWS App Mesh Weitere Informationen finden Sie in diesem Blogbeitrag Migration von AWS App Mesh zu Amazon ECS Service Connect.

In diesem Thema werden häufig auftretende Probleme beschrieben, die bei der Einrichtung von App Mesh auftreten können.

Das Envoy-Container-Image kann nicht abgerufen werden

Symptome

In einer Amazon ECS-Aufgabe erhalten Sie die folgende Fehlermeldung. Die Amazon ECR account ID und Region die folgende Meldung können unterschiedlich sein, je nachdem, aus welchem Amazon ECR-Repository Sie das Container-Image abgerufen haben.

CannotPullContainerError: Error response from daemon: pull access denied for 840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy, repository does not exist or may require 'docker login'
Auflösung

Dieser Fehler weist darauf hin, dass die verwendete Rolle zur Aufgabenausführung nicht zur Kommunikation mit Amazon ECR berechtigt ist und das Envoy-Container-Image nicht aus dem Repository abrufen kann. Die Ihrer Amazon ECS-Aufgabe zugewiesene Rolle zur Aufgabenausführung benötigt eine IAM-Richtlinie mit den folgenden Anweisungen:

{ "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-west-2:111122223333:repository/aws-appmesh-envoy", "Effect": "Allow" }, { "Action": "ecr:GetAuthorizationToken", "Resource": "*", "Effect": "Allow" }

Wenn Ihr Problem immer noch nicht gelöst ist, sollten Sie erwägen, ein GitHub Problem zu eröffnen, oder wenden Sie sich an den AWS Support.

Es kann keine Verbindung zum App Mesh Envoy-Verwaltungsdienst hergestellt werden

Symptome

Ihr Envoy-Proxy kann keine Verbindung zum App Mesh Envoy-Verwaltungsdienst herstellen. Sie sehen:

  • Fehler beim Ablehnen der Verbindung

  • Verbindungs-Timeouts

  • Fehler beim Auflösen des Endpunkts des App Mesh Envoy Management Service

  • gRPC-Fehler

Auflösung

Stellen Sie sicher, dass Ihr Envoy-Proxy Zugriff auf das Internet oder einen privaten VPC-Endpunkt hat und dass Ihre Sicherheitsgruppen ausgehenden Verkehr auf Port 443 zulassen. Die öffentlichen Envoy-Verwaltungsservice-Endpunkte von App Mesh folgen dem Format für vollqualifizierte Domainnamen (FQDN).

# App Mesh Production Endpoint appmesh-envoy-management.Region-code.amazonaws.com # App Mesh Preview Endpoint appmesh-preview-envoy-management.Region-code.amazonaws.com

Sie können Ihre Verbindung zu EMS mit dem folgenden Befehl debuggen. Dadurch wird eine gültige, aber leere gRPC-Anfrage an den Envoy Management Service gesendet.

curl -v -k -H 'Content-Type: application/grpc' -X POST https://appmesh-envoy-management.Region-code.amazonaws.com:443/envoy.service.discovery.v3.AggregatedDiscoveryService/StreamAggregatedResources

Wenn Sie diese Nachrichten zurückerhalten, ist Ihre Verbindung zum Envoy Management Service funktionsfähig. Informationen zum Debuggen von gRPC-Fehlern finden Sie in den Fehlern in Envoy, der vom App Mesh Envoy-Verwaltungsdienst getrennt wurde, mit einem Fehlertext.

grpc-status: 16 grpc-message: Missing Authentication Token

Wenn Ihr Problem immer noch nicht gelöst ist, erwägen Sie, ein GitHub Problem zu eröffnen, oder wenden Sie sich an den AWS Support.

Envoy hat die Verbindung zum App Mesh Envoy-Verwaltungsdienst mit einem Fehlertext getrennt

Symptome

Ihr Envoy-Proxy kann keine Verbindung zum App Mesh Envoy-Verwaltungsdienst herstellen und dessen Konfiguration nicht empfangen. Ihre Envoy-Proxy-Protokolle enthalten einen Protokolleintrag wie den folgenden.

gRPC config stream closed: gRPC status code, message
Auflösung

In den meisten Fällen sollte der Meldungsteil des Protokolls auf das Problem hinweisen. In der folgenden Tabelle sind die häufigsten gRPC-Statuscodes, die Ihnen möglicherweise angezeigt werden, sowie deren Ursachen und Lösungen aufgeführt.

gRPC-Statuscode Ursache Auflösung
0 Ordnungsgemäße Trennung vom Envoy-Verwaltungsdienst. Es gibt kein Problem. App Mesh trennt gelegentlich Envoy-Proxys mit diesem Statuscode. Envoy stellt die Verbindung wieder her und erhält weiterhin Updates.
3 Der Mesh-Endpunkt (virtueller Knoten oder virtuelles Gateway) oder eine der zugehörigen Ressourcen konnten nicht gefunden werden. Überprüfen Sie Ihre Envoy-Konfiguration noch einmal, um sicherzustellen, dass sie den richtigen Namen der App Mesh-Ressource hat, für die sie steht. Wenn Ihre App Mesh-Ressource in andere AWS Ressourcen wie AWS Cloud Map Namespaces oder ACM-Zertifikate integriert ist, stellen Sie sicher, dass diese Ressourcen vorhanden sind.
7 Der Envoy-Proxy ist nicht berechtigt, eine Aktion auszuführen, z. B. eine Verbindung zum Envoy-Verwaltungsdienst herzustellen oder zugehörige Ressourcen abzurufen. Stellen Sie sicher, dass Sie eine IAM-Richtlinie erstellen, die die entsprechenden Policy-Statements für App Mesh und andere Dienste enthält, und hängen Sie diese Richtlinie an den IAM-Benutzer oder die IAM-Rolle an, die Ihr Envoy-Proxy für die Verbindung zum Envoy-Verwaltungsdienst verwendet.
8 Die Anzahl der Envoy-Proxys für eine bestimmte App Mesh-Ressource übersteigt das Dienstkontingent auf Kontoebene. Informationen zu Standardkontokontingenten und App Mesh Mesh-Dienstkontingente zur Beantragung einer Kontingenterhöhung finden Sie unter.
16 Der Envoy-Proxy hat keine gültigen Authentifizierungsdaten für AWS. Stellen Sie sicher, dass der Envoy über die entsprechenden Anmeldeinformationen verfügt, um über einen IAM-Benutzer oder eine IAM-Rolle eine Verbindung zu AWS Diensten herzustellen. Ein bekanntes Problem, #24136, in Envoy für die Version v1.24 und davor kann die Anmeldeinformationen nicht abrufen, wenn der Envoy-Prozess Dateideskriptoren verwendet. 1024 Das passiert, wenn Envoy ein hohes Verkehrsaufkommen bedient. Sie können dieses Problem bestätigen, indem Sie in den Envoy-Protokollen auf Debug-Ebene nach dem Text "" A libcurl function was given a bad argument suchen. Um dieses Problem zu beheben, führen Sie ein Upgrade auf die Envoy-Version v1.25.1.0-prod oder höher durch.

Mithilfe der folgenden Abfrage können Sie die Statuscodes und Nachrichten von Ihrem Envoy-Proxy mit Amazon CloudWatch Insights beobachten:

filter @message like /gRPC config stream closed/ | parse @message "gRPC config stream closed: *, *" as StatusCode, Message

Wenn die angegebene Fehlermeldung nicht hilfreich war oder Ihr Problem immer noch nicht gelöst ist, sollten Sie erwägen, ein GitHub Problem zu eröffnen.

Die Zustandsprüfung des Envoy-Containers, die Bereitschaftsprüfung oder die Prüfung der Lebendigkeit sind fehlgeschlagen

Symptome

Ihr Envoy-Proxy hat die Zustandsprüfungen in einer Amazon ECS-Aufgabe, einer Amazon EC2-Instance oder einem Kubernetes-Pod nicht bestanden. Sie fragen beispielsweise die Envoy-Administrationsoberfläche mit dem folgenden Befehl ab und erhalten einen anderen Status als. LIVE

curl -s http://my-app.default.svc.cluster.local:9901/server_info | jq '.state'
Auflösung

Im Folgenden finden Sie eine Liste der Behebungsschritte, die vom vom Envoy-Proxy zurückgegebenen Status abhängen.

  • PRE_INITIALIZINGoder INITIALIZING — Der Envoy-Proxy hat noch keine Konfiguration erhalten oder kann keine Verbindung herstellen und die Konfiguration vom App Mesh Envoy-Verwaltungsdienst abrufen. Der Envoy erhält möglicherweise eine Fehlermeldung vom Envoy-Verwaltungsdienst, wenn er versucht, eine Verbindung herzustellen. Weitere Informationen finden Sie unter den Fehlern unter. Envoy hat die Verbindung zum App Mesh Envoy-Verwaltungsdienst mit einem Fehlertext getrennt

  • DRAINING— Der Envoy-Proxy hat als Reaktion auf eine /healthcheck/fail /drain_listeners ODER-Anfrage auf der Envoy-Administrationsoberfläche damit begonnen, Verbindungen abzubauen. Wir empfehlen, diese Pfade nicht auf der Administrationsoberfläche aufzurufen, es sei denn, Sie sind im Begriff, Ihre Amazon ECS-Aufgabe, Ihre Amazon EC2-Instance oder Ihren Kubernetes-Pod zu beenden.

Wenn Ihr Problem immer noch nicht gelöst ist, sollten Sie erwägen, ein GitHub Problem zu eröffnen, oder wenden Sie sich an den Support. AWS

Die Zustandsprüfung vom Load Balancer zum Mesh-Endpunkt schlägt fehl

Symptome

Ihr Mesh-Endpunkt wird von der Container-Integritätsprüfung oder Bereitschaftsprüfung als fehlerfrei eingestuft, aber die Integritätsprüfung vom Load Balancer zum Mesh-Endpunkt schlägt fehl.

Auflösung

Führen Sie die folgenden Aufgaben aus, um das Problem zu beheben.

  • Stellen Sie sicher, dass die mit Ihrem Mesh-Endpunkt verknüpfte Sicherheitsgruppe eingehenden Datenverkehr auf dem Port akzeptiert, den Sie für Ihren Health Check konfiguriert haben.

  • Stellen Sie sicher, dass die Integritätsprüfung konsistent erfolgreich ist, wenn sie manuell angefordert wird, z. B. von einem Bastion-Host in Ihrer VPC.

  • Wenn Sie eine Integritätsprüfung für einen virtuellen Knoten konfigurieren, empfehlen wir, einen Integritätsprüfungs-Endpunkt in Ihrer Anwendung zu implementieren, z. B. /ping für HTTP. Dadurch wird sichergestellt, dass sowohl der Envoy-Proxy als auch Ihre Anwendung vom Load Balancer aus routbar sind.

  • Sie können jeden Elastic Load Balancer-Typ für den virtuellen Knoten verwenden, je nachdem, welche Funktionen Sie benötigen. Weitere Informationen finden Sie unter Elastic Load Balancing-Funktionen.

  • Wenn Sie eine Systemdiagnose für ein virtuelles Gateway konfigurieren, empfehlen wir, einen Network Load Balancer mit einer TCP- oder TLS-Zustandsprüfung am Listener-Port des virtuellen Gateways zu verwenden. Dadurch wird sichergestellt, dass der virtuelle Gateway-Listener mit einem Bootstrap ausgestattet ist und Verbindungen annehmen kann.

Wenn Ihr Problem immer noch nicht gelöst ist, sollten Sie erwägen, ein GitHub Problem zu öffnen, oder wenden Sie sich an den Support. AWS

Das virtuelle Gateway akzeptiert keinen Datenverkehr auf den Ports 1024 oder weniger

Symptome

Ihr virtuelles Gateway akzeptiert keinen Datenverkehr auf Port 1024 oder weniger, akzeptiert jedoch Datenverkehr auf einer Portnummer, die größer als 1024 ist. Sie fragen beispielsweise die Envoy-Statistiken mit dem folgenden Befehl ab und erhalten einen anderen Wert als Null.

curl -s http://my-app.default.svc.cluster.local:9901/stats | grep "update_rejected"

Möglicherweise wird in Ihren Protokollen ein Text ähnlich dem folgenden Text angezeigt, der einen Fehler beim Binden an einen privilegierten Port beschreibt:

gRPC config for type.googleapis.com/envoy.api.v2.Listener rejected: Error adding/updating listener(s) lds_ingress_0.0.0.0_port_<port num>: cannot bind '0.0.0.0:<port num>': Permission denied
Auflösung

Um das Problem zu lösen, muss der für das Gateway angegebene Benutzer über die Linux-Fähigkeit verfügenCAP_NET_BIND_SERVICE. Weitere Informationen finden Sie unter Capabilities im Linux Programmer's Manual, Linux-Parameter in ECS-Aufgabendefinitionsparametern und Set capabilities for a container in der Kubernetes-Dokumentation.

Wichtig

Fargate muss einen Portwert verwenden, der größer als 1024 ist.

Wenn Ihr Problem immer noch nicht gelöst ist, erwägen Sie, ein GitHub Problem zu eröffnen, oder wenden Sie sich an den AWS Support.