Risoluzione dei problemi di configurazione di App - AWS App Mesh

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di configurazione di App

Questo argomento descrive i problemi più comuni che potresti riscontrare con la configurazione di App Mesh.

Impossibile estrarre l'immagine del contenitore Envoy

Sintomi

Viene visualizzato il seguente messaggio di errore in un'operazione Amazon ECS. Amazon ECRID accounteRegionnel seguente messaggio potrebbe essere diverso, a seconda del repository Amazon ECR da cui hai estratto l'immagine del contenitore.

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'

Risoluzione

Questo errore indica che il ruolo di esecuzione delle attività utilizzato non è autorizzato a comunicare con Amazon ECR e non può estrarre l'immagine del contenitore Envoy dal repository. Il ruolo di esecuzione delle attività assegnato al tuo task Amazon ECS richiede una policy IAM con le seguenti dichiarazioni:

{ "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" }

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport.

Impossibile connettersi al servizio di gestione App Mesh Envoy

Sintomi

Il tuo proxy Envoy non è in grado di connettersi al servizio di gestione App Mesh Envoy. Stai vedendo:

  • Errori di connessione rifiutata

  • Timeout di connessione

  • Errori nella risoluzione dell'endpoint del servizio di gestione App Mesh Envoy

  • Errori gRPC

Risoluzione

Assicurati che il tuo proxy Envoy abbia accesso a Internet o a un sito privatoEndpoint VPCe questo è il tuogruppi di sicurezzaconsentire il traffico in uscita sulla porta 443. Gli endpoint del servizio pubblico di gestione Envoy di App Mesh seguono il formato FQDN (Fully Qualable Domain Name).

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

Puoi eseguire il debug della connessione a EMS utilizzando il comando seguente. Questo invia una richiesta gRPC valida ma vuota al servizio di gestione degli inviati.

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

Se ricevi questi messaggi, la tua connessione a Envoy Management Service è funzionante. Per il debug degli errori relativi a gRPC, consulta gli errori inEnvoy è stato disconnesso dal servizio di gestione App Mesh Envoy con testo di errore.

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

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport.

Envoy disconnesso dal servizio di gestione App Mesh Envoy con testo di errore

Sintomi

Il tuo proxy Envoy non è in grado di connettersi al servizio di gestione App Mesh Envoy e di riceverne la configurazione. I log proxy Envoy contengono una voce di registro come la seguente.

gRPC config stream closed: gRPC status code, message

Risoluzione

Nella maggior parte dei casi, la parte relativa ai messaggi del registro dovrebbe indicare il problema. La tabella seguente elenca i codici di stato gRPC più comuni che potresti vedere, le loro cause e le relative risoluzioni.

Codice di stato gRPC Causa Risoluzione
0 Graceful disconnect dal servizio di gestione Envoy. Non c'è nessun problema. App Mesh disconnette occasionalmente i proxy Envoy con questo codice di stato. Envoy si riconnetterà e continuerà a ricevere aggiornamenti.
3 Non è stato possibile trovare l'endpoint mesh (nodo virtuale o gateway virtuale) o una delle risorse associate. Ricontrolla la configurazione di Envoy per assicurarti che abbia il nome appropriato della risorsa App Mesh che rappresenta. Se la tua risorsa App Mesh è integrata con altreAWSrisorse, ad esempioAWS Cloud Mapnamespace o certificati ACM, quindi assicurati che tali risorse esistano.
7 Il proxy Envoy non è autorizzato a eseguire un'azione, ad esempio connettersi al servizio di gestione Envoy o recuperare le risorse associate. Assicurarsi che il file siacreare una policy IAMche contiene le dichiarazioni politiche appropriate per App Mesh e altri servizi e allega tale policy all'utente o al ruolo IAM che il proxy Envoy utilizza per connettersi al servizio di gestione Envoy.
8 Il numero di proxy Envoy per una determinata risorsa App Mesh supera la quota di servizio a livello di account. Consulta .Service App Meshper informazioni sulle quote predefinite degli account e su come richiedere un aumento delle quote.
16 Il proxy Envoy non dispone di credenziali di autenticazione valide perAWS. Assicurati che l'inviato disponga delle credenziali appropriate a cui connettersiAWSservizi tramite un utente o ruolo IAM.

Puoi osservare i codici di stato e i messaggi dal tuo proxy Envoy conAmazon CloudWatch Informazioni dettagliateutilizzando la seguente query:

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

Se il messaggio di errore fornito non è stato utile o il problema non è stato ancora risolto, valuta la possibilità di aprire unGitHubproblema.

Guasto del controllo dello stato del contenitore Envoy, della sonda di prontezza o della sonda di vivacità

Sintomi

Il proxy Envoy non supera i controlli di integrità in un'attività Amazon ECS, in un'istanza Amazon EC2 o in un pod Kubernetes. Ad esempio, si interroga l'interfaccia di amministrazione di Envoy con il seguente comando e si riceve uno stato diverso daLIVE.

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

Risoluzione

Di seguito è riportato un elenco di fasi di riparazione in base allo stato restituito dal proxy Envoy.

  • PRE_INITIALIZINGoINITIALIZING— Il proxy Envoy non ha ancora ricevuto la configurazione o non può connettersi e recuperare la configurazione dal servizio di gestione App Mesh Envoy. L'inviato potrebbe ricevere un errore dal servizio di gestione Envoy durante il tentativo di connessione. Per ulteriori informazioni, consulta gli errori inEnvoy disconnesso dal servizio di gestione App Mesh Envoy con testo di errore.

  • DRAINING— Il proxy Envoy ha iniziato a prosciugare le connessioni in risposta a/healthcheck/failo/drain_listenersrichiesta sull'interfaccia di amministrazione di Envoy. Non è consigliabile richiamare questi percorsi sull'interfaccia di amministrazione a meno che non si stia per terminare l'attività Amazon ECS, l'istanza Amazon EC2 o il pod Kubernetes.

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport.

Health controllo dello stato dal load balancer all'endpoint della rete mesh non riesce

Sintomi

L'endpoint mesh è considerato integro dal controllo dello stato del contenitore o dalla sonda di idoneità, ma il controllo dello stato dal load balancer all'endpoint mesh ha esito negativo.

Risoluzione

Per risolvere il problema, completa le attività seguenti.

  • Assicurarsi che ilgruppo di sicurezzaassociato all'endpoint mesh accetta il traffico in entrata sulla porta configurata per il controllo dello stato.

  • Assicurati che il controllo dello stato abbia esito positivo in modo coerente quando richiesto manualmente, ad esempio da unbastion host all'interno del tuo VPC.

  • Se stai configurando un controllo di integrità per un nodo virtuale, ti consigliamo di implementare un endpoint di controllo dello stato nell'applicazione, ad esempio /ping per HTTP. Ciò garantisce che sia il proxy Envoy che l'applicazione siano instradabili dal load balancer.

  • È possibile utilizzare qualsiasi tipo di load balancer elastico per il nodo virtuale, a seconda delle funzionalità necessarie. Per ulteriori informazioni, consulta la paginaFunzionalità Elastic Load Balancing.

  • Se si sta configurando un controllo sanitario per ungateway virtuale, quindi ti consigliamo di utilizzare unNetwork Load Balancercon un controllo di integrità TCP o TLS sulla porta listener del gateway virtuale. Ciò garantisce che il listener del gateway virtuale sia avviato e pronto ad accettare connessioni.

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport.

Gateway virtuale che non accetta traffico sulle porte 1024 o meno

Sintomi

Il gateway virtuale non accetta traffico sulla porta 1024 o inferiore, ma accetta traffico su un numero di porta maggiore di 1024. Ad esempio, interroghi le statistiche di Envoy con il seguente comando e ricevi un valore diverso da zero.

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

Potresti vedere un testo simile al seguente testo nei tuoi log che descrive un errore di associazione a una porta privilegiata:

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

Risoluzione

Per risolvere il problema, l'utente specificato per il gateway deve disporre della funzionalità linuxCAP_NET_BIND_SERVICE. Per ulteriori informazioni, consulta la paginaCapabilities (Funzionalità)nel Manuale del programmatore Linux,Parametri Linuxnei parametri di definizione di ECS Task eImposta le funzionalità per un contenitorenella documentazione di Kubernetes.

Importante

Fargate deve utilizzare un valore di porta superiore a 1024.

Se il problema non è ancora stato risolto, prendi in considerazione l'apertura di unGitHub problemao contattoAWSSupport.