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 können Sie nicht mehr auf die AWS App Mesh Konsole oder die Ressourcen zugreifen. 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

Sie erhalten die folgende Fehlermeldung in einer ECS Amazon-Aufgabe. Der Amazon ECR account ID and Region Die folgende Nachricht kann unterschiedlich sein, je nachdem, aus welchem ECR Amazon-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 Aufgabenausführungsrolle nicht berechtigt ist, mit Amazon zu kommunizieren ECR und das Envoy-Container-Image nicht aus dem Repository abrufen kann. Die Ihrer Amazon-Aufgabe zugewiesene ECS Aufgabenausführungsrolle erfordert eine IAM Richtlinie mit den folgenden Aussagen:

{ "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, erwägen Sie, ein GitHub Problem zu ö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 App Mesh Envoy-Verwaltungsdienst-Endpunkts

  • g-Fehler RPC

Auflösung

Stellen Sie sicher, dass Ihr Envoy-Proxy Zugriff auf das Internet oder einen privaten VPCEndpunkt hat und dass Ihre Sicherheitsgruppen ausgehenden Datenverkehr auf Port 443 zulassen. Die öffentlichen Envoy-Verwaltungsdienst-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 EMS mit dem folgenden Befehl debuggen. Dadurch wird eine gültige, aber leere RPC G-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, funktioniert Ihre Verbindung zum Envoy Management Service. Informationen zum Debuggen von RPC G-Fehlern finden Sie in den Fehlern in Envoy, die vom App Mesh Envoy-Verwaltungsdienst getrennt wurden, mit 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 öffnen, oder wenden Sie sich an den AWS Support.

Envoy wurde mit Fehlertext vom App Mesh Envoy-Verwaltungsdienst getrennt

Symptome

Ihr Envoy-Proxy kann keine Verbindung zum App Mesh Envoy-Verwaltungsdienst herstellen und dessen Konfiguration nicht empfangen. Ihre Envoy-Proxyprotokolle 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 RPC G-Statuscodes, die Ihnen möglicherweise angezeigt werden, sowie ihre Ursachen und Lösungen aufgeführt.

RPCG-Statuscode Ursache Auflösung
0 Trennen Sie die Verbindung zum Envoy-Verwaltungsdienst ordnungsgemäß. 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 konnte nicht gefunden werden. Überprüfen Sie Ihre Envoy-Konfiguration noch einmal, um sicherzustellen, dass sie den entsprechenden Namen der App Mesh Mesh-Ressource hat, die sie darstellt. Wenn Ihre App Mesh 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 autorisiert, 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 Richtlinienerklärungen für App Mesh und andere Dienste enthält, und fügen Sie diese Richtlinie dem IAM Benutzer oder der Rolle hinzu, die Ihr Envoy-Proxy verwendet, um eine Verbindung zum Envoy-Verwaltungsdienst herzustellen.
8 Die Anzahl der Envoy-Proxys für eine bestimmte App Mesh Mesh-Ressource überschreitet das Dienstkontingent auf Kontoebene. Informationen zu Standardkontingenten und App Mesh Mesh-Dienstkontingente zur Beantragung einer Kontingenterhöhung finden Sie unter.
16 Der Envoy-Proxy verfügt nicht über gültige Anmeldeinformationen für AWS. Stellen Sie sicher, dass der Envoy über die entsprechenden Anmeldeinformationen verfügt, um über einen IAM Benutzer oder eine Rolle eine Verbindung zu AWS Diensten herzustellen. Ein bekanntes Problem, #24136, in Envoy für Version v1.24 und früher schlägt beim Abrufen der Anmeldeinformationen fehl, wenn der Envoy-Prozess zu viele Dateideskriptoren verwendet. 1024 Dies passiert, wenn Envoy ein hohes Datenverkehrsvolumen verarbeitet. Sie können dieses Problem überprüfen, indem Sie in den Envoy-Protokollen auf Debug-Ebene nach dem Text "" suchen. A libcurl function was given a bad argument Um dieses Problem zu beheben, führen Sie ein Upgrade auf die Envoy-Version oder höher durch. v1.25.1.0-prod

Sie können die Statuscodes und Meldungen von Ihrem Envoy-Proxy mit Amazon CloudWatch Insights verfolgen, indem Sie die folgende Abfrage verwenden:

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 öffnen.

Die Zustandsprüfung des Envoy-Containers, die Bereitschaftsprüfung oder die Lebendigkeitsprüfung sind fehlgeschlagen

Symptome

Ihr Envoy-Proxy hat die Integritätsprüfungen in einer ECS Amazon-Aufgabe, EC2 Amazon-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 von Korrekturschritten, 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 in den Fehlern unter. Envoy wurde mit Fehlertext vom App Mesh Envoy-Verwaltungsdienst getrennt

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

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

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

Symptome

Ihr Mesh-Endpunkt wird von der Container-Integritätsprüfung oder der 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 an dem Port akzeptiert, den Sie für Ihre Zustandsprüfung konfiguriert haben.

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

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

  • Sie können einen beliebigen 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 Balancing-Funktionen.

  • Wenn Sie eine Integritätsprüfung für ein virtuelles Gateway konfigurieren, empfehlen wir die Verwendung eines Netzwerk-Load-Balancers mit einer TCP TLS Zustandsprüfung am Listener-Port des virtuellen Gateways. Dadurch wird sichergestellt, dass der virtuelle Gateway-Listener über ein Bootstrapping verfügt und bereit ist, Verbindungen anzunehmen.

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

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

Symptome

Ihr virtuelles Gateway akzeptiert keinen Verkehr auf Port 1024 oder weniger, akzeptiert aber Verkehr 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 sehen Sie in Ihren Protokollen einen Text, der dem folgenden Text ähnelt, 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 Linux-Funktionen verfügenCAP_NET_BIND_SERVICE. Weitere Informationen finden Sie unter Capabilities im Linux Programmer's Manual, Linux-Parameter in ECS Aufgabendefinitionsparametern und Funktionen für einen Container festlegen 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 öffnen, oder wenden Sie sich an den AWS Support.