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
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
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, #24136v1.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
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_INITIALIZING
oderINITIALIZING
— 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
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
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
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