Nodi virtuali - 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à.

Nodi virtuali

Un nodo virtuale agisce come un puntatore logico a un particolare gruppo di attività, ad esempio un servizio Amazon ECS o una distribuzione Kubernetes. Quando si crea un nodo virtuale, è necessario specificare un metodo di individuazione dei servizi per il gruppo di attività. Qualsiasi traffico in ingresso previsto dal nodo virtuale viene specificato comeascoltatrice. Qualsiasi servizio virtuale a cui un nodo virtuale invia il traffico in uscita viene specificato comebackend.

I metadati della risposta per il tuo nuovo nodo virtuale contengono l'Amazon Resource Name (ARN) associato al nodo virtuale. Impostare questo valore comeAPPMESH_RESOURCE_ARNvariabile di ambiente per il container proxy Envoy del gruppo di attività nella definizione delle attività di Amazon ECS o nelle specifiche pod Kubernetes. Ad esempio, il valore potrebbe esserearn:aws:appmesh:us-west-2:111122223333:mesh/myMesh/virtualNode/myVirtualNode. Questo è quindi mappato ai parametri Envoy node.id e node.cluster. Devi usare1.15.0o versione successiva dell'immagine di Envoy quando si imposta questa variabile. Per ulteriori informazioni sulle variabili di App Mesh di Envoy, consultaImmagine dell'inviato.

Nota

Per impostazione predefinita, App Mesh utilizza il nome della risorsa specificata in APPMESH_RESOURCE_ARN quando Envoy si riferisce a se stesso nei parametri e nelle tracce. È possibile ignorare questo comportamento impostando la variabile di ambiente APPMESH_RESOURCE_CLUSTER con il proprio nome.

Creazione di un nodo virtuale

AWS Management Console

Per creare un nodo virtuale utilizzandoAWS Management Console

  1. Apri la console di App Mesh all'indirizzohttps://console.aws.amazon.com/appmesh/.

  2. Scegli la mesh in cui desideri creare il nodo virtuale. Tutte le mesh che possiedi e che sono statecondivisocon te sono elencati.

  3. Scegliere Virtual nodes (Nodi virtuali) nel riquadro di navigazione sinistro.

  4. ScegliCreazione di un nodo virtualee quindi specifica le impostazioni per il tuo nodo virtuale.

  5. PerNome del nodo virtuale, immettere un nome per il nodo virtuale.

  6. PerMetodo di rilevamento dei servizi, scegli una delle seguenti opzioni:

    • DNS— Specificare il valoreHostname DNSdel servizio effettivo rappresentato dal nodo virtuale. Il proxy Envoy viene distribuito in un Amazon VPC. Il proxy invia richieste di risoluzione dei nomi al server DNS configurato per il VPC. Se il nome host si risolve, il server DNS restituisce uno o più indirizzi IP. Per ulteriori informazioni sulle impostazioni DNS VPC, consultaUtilizzo del DNS con VPC. PerTipo di risposta DNS(opzionale), specifica i tipi di endpoint restituiti dal resolver DNS. Load balancersignifica che il resolver DNS restituisce un set di endpoint con bilanciamento del carico. Endpointsignifica che il resolver DNS sta restituendo tutti gli endpoint. Per impostazione predefinita, si presume che il tipo di risposta siaLoad balancer.

      Nota

      Se utilizziPercorso 53, dovrai usareLoad balancer.

    • AWS Cloud Map— Specificare un esistenteNome servizioeSpazio dei nomi. Facoltativamente, è anche possibile specificare gli attributi che App Mesh può interrogareAWS Cloud Mapper selezionandoAdd rigae specificando unChiaveeValore. Vengono restituite solo le istanze che corrispondono a tutte le coppie chiave/valore specificate. Da utilizzareAWS Cloud Map, il tuo account deve avere ilAWSServiceRoleForAppMesh ruolo collegato al servizio. Per ulteriori informazioni su AWS Cloud Map, consulta la AWS Cloud MapGuida per sviluppatori di .

      Nota

      Integrazione di App Mesh conAWS Cloud Mapnon è disponibile inap-northeast-3eap-southeast-3perché Amazon ECS Service Discovery tramiteAWS Cloud Mapnon è disponibile.

    • Nessuna— Seleziona se il tuo nodo virtuale non prevede traffico in entrata.

  7. Preferenza della versione IP

    Controlla quale versione IP deve essere utilizzata per il traffico all'interno della mesh attivandoSostituisci il comportamento predefinito della versione IP. Per impostazione predefinita, App Mesh utilizza una varietà di versioni IP.

    Nota

    L'impostazione della preferenza IP sul nodo virtuale sostituisce solo la preferenza IP impostata per la mesh su questo nodo specifico.

    • Default (Predefinito)

      • Il resolver DNS di Envoy preferisceIPv6e torna aIPv4.

      • È consigliabile utilizzare il pluginIPv4indirizzo restituito daAWS Cloud Mapse disponibile e torna a utilizzare ilIPv6Un indirizzo.

      • L'endpoint creato per l'app locale utilizza unIPv4Un indirizzo.

      • Gli ascoltatori dell'Inviato si legano a tuttiIPv4Indirizzi.

    • IPv6 (Indirizzo IP)

      • Il resolver DNS di Envoy preferisceIPv6e torna aIPv4.

      • IlIPv6indirizzo restituito daAWS Cloud Mapviene utilizzato se disponibile e torna a utilizzare ilIPv4indirizzo

      • L'endpoint creato per l'app locale utilizza unIPv6Un indirizzo.

      • Gli ascoltatori dell'Inviato si legano a tuttiIPv4eIPv6Indirizzi.

    • IPv4 (Facoltativo

      • Il resolver DNS di Envoy preferisceIPv4e torna aIPv6.

      • È consigliabile utilizzare il pluginIPv4indirizzo restituito daAWS Cloud Mapse disponibile e torna a utilizzare ilIPv6Un indirizzo.

      • L'endpoint creato per l'app locale utilizza unIPv4Un indirizzo.

      • Gli ascoltatori dell'Inviato si legano a tuttiIPv4eIPv6Indirizzi.

    • Solo IPv6

      • Il resolver DNS di Envoy utilizza soloIPv6.

      • Solo il pluginIPv6indirizzo restituito daAWS Cloud Mapviene utilizzato. SeAWS Cloud Maprestituito un indirizzoIPv4indirizzo, non vengono utilizzati indirizzi IP e i risultati vuoti vengono restituiti all'inviato.

      • L'endpoint creato per l'app locale utilizza unIPv6Un indirizzo.

      • Gli ascoltatori dell'Inviato si legano a tuttiIPv4eIPv6Indirizzi.

    • Solo IPv4

      • Il resolver DNS di Envoy utilizza soloIPv4.

      • Solo il pluginIPv4indirizzo restituito daAWS Cloud Mapviene utilizzato. SeAWS Cloud Maprestituito un indirizzoIPv6indirizzo, non vengono utilizzati indirizzi IP e i risultati vuoti vengono restituiti all'inviato.

      • L'endpoint creato per l'app locale utilizza unIPv4Un indirizzo.

      • Gli ascoltatori dell'Inviato si legano a tuttiIPv4eIPv6Indirizzi.

  8. (Opzionale)Policy del client— Configura i requisiti predefiniti per la comunicazione con i servizi virtuali di backend.

    Nota
    • Se desideri abilitare Transport Layer Security (TLS) per un nodo virtuale esistente, ti consigliamo di creare un nuovo nodo virtuale, che rappresenti lo stesso servizio del nodo virtuale esistente, su cui abilitare TLS. Quindi sposta gradualmente il traffico verso il nuovo nodo virtuale utilizzando un router e un percorso virtuali. Per ulteriori informazioni sulla creazione di un percorso e sulla regolazione dei pesi per la transizione, consultaRoute. Se aggiorni un nodo virtuale esistente che serve il traffico con TLS, è possibile che i proxy Envoy del client downstream ricevano il contesto di convalida TLS prima che il proxy Envoy per il nodo virtuale che hai aggiornato riceva il certificato. Ciò può causare errori di negoziazione TLS sui proxy Envoy downstream.

    • Autorizzazione proxydeve essere abilitato per il proxy Envoy distribuito con l'applicazione rappresentata dai nodi virtuali del servizio di backend. Quando abiliti l'autorizzazione proxy, ti consigliamo di limitare l'accesso solo ai nodi virtuali con cui questo nodo virtuale sta comunicando.

    • (Facoltativo) SelezionareAutenticazione TLSse si desidera richiedere al nodo virtuale di comunicare con tutti i backend utilizzando Transport Layer Security (TLS).

    • (Facoltativo) Se desideri richiedere l'uso di TLS solo per una o più porte specifiche, inserisci un numero inPorte. Per aggiungere altre porte, selezionareAdd port. Se non si specifica alcuna porta, TLS viene applicato per tutte le porte.

    • PerMetodo di convalida, selezionare una delle seguenti opzioni. Il certificato specificato deve esistere già e soddisfare specifici requisiti. Per ulteriori informazioni, consulta la pagina Requisiti del certificato .

      • AWS Certificate Manager Private Certificate Authorityhosting: selezionare una o più esistentiCertificati. Per un completo, end-to-end descrizione della distribuzione di una mesh con un'applicazione di esempio utilizzando la crittografia con un certificato ACM, vedereConfigurazione di TLS conAWSCertificate Managersul GitHub.

      • Envoy Secret Discovery Service (SDS)hosting — Inserisci il nome dell'inviato segreto che verrà recuperato utilizzando il Secret Discovery Service.

      • File hosting locale— Specificare il percorso delChain di certificazionefile sul file system in cui viene distribuito Envoy. Per un completo, end-to-end descrizione dettagliata della distribuzione di una mesh con un'applicazione di esempio utilizzando la crittografia con file locali, vedereConfigurazione di TLS con certificati TLS forniti da filesul GitHub.

    • (Facoltativo) Immettere unNome alternativo dell'oggetto. Per aggiungere altri SAN, selezionareAdd SAN. I SAN devono essere formattati con FQDN o URI.

    • (Facoltativo) SelezionareFornire il certificato cliente una delle opzioni seguenti per fornire un certificato client quando un server lo richiede e abilitare l'autenticazione TLS reciproca. Per ulteriori informazioni su TLS reciproca, consulta App MeshAutenticazione TLS reciprocadocumenti.

      • Envoy Secret Discovery Service (SDS)hosting — Inserisci il nome dell'inviato segreto che verrà recuperato utilizzando il Secret Discovery Service.

      • File hosting locale— Specificare il percorso delChain di certificazionefile, così come ilChiave privata, nel file system in cui è distribuito Envoy.

  9. (Opzionale)Backend di servizio— Specifica il servizio virtuale App Mesh con cui comunicherà il nodo virtuale.

    • Immetti il nome del servizio virtuale di App Mesh o il nome della risorsa Amazon (ARN) completo per il servizio virtuale con cui comunica il nodo virtuale.

    • (Opzionale) Per impostare impostazioni TLS uniche per un backend, selezionareImpostazioni TLSe quindi selezionareOverrides valori predefiniti.

      • (Facoltativo) SelezionareAutenticazione TLSse si desidera richiedere al nodo virtuale di comunicare con tutti i backend tramite TLS.

      • (Facoltativo) Se desideri richiedere l'uso di TLS solo per una o più porte specifiche, inserisci un numero inPorte. Per aggiungere altre porte, selezionareAdd port. Se non si specifica alcuna porta, TLS viene applicato per tutte le porte.

      • PerMetodo di convalida, selezionare una delle seguenti opzioni. Il certificato specificato deve esistere già e soddisfare specifici requisiti. Per ulteriori informazioni, consulta la pagina Requisiti del certificato .

        • AWS Certificate Manager Private Certificate Authorityhosting: selezionare una o più esistentiCertificati.

        • Envoy Secret Discovery Service (SDS)hosting — Inserisci il nome dell'inviato segreto che verrà recuperato utilizzando il Secret Discovery Service.

        • File hosting locale— Specificare il percorso delChain di certificazionefile sul file system in cui viene distribuito Envoy.

      • (Facoltativo) Immettere unNome alternativo dell'oggetto. Per aggiungere altri SAN, selezionareAdd SAN. I SAN devono essere formattati con FQDN o URI.

      • (Facoltativo) SelezionareFornire il certificato cliente una delle opzioni seguenti per fornire un certificato client quando un server lo richiede e abilitare l'autenticazione TLS reciproca. Per ulteriori informazioni su TLS reciproca, consulta App MeshAutenticazione TLS reciprocadocumenti.

        • Envoy Secret Discovery Service (SDS)hosting — Inserisci il nome dell'inviato segreto che verrà recuperato utilizzando il Secret Discovery Service.

        • File hosting locale— Specificare il percorso delChain di certificazionefile, così come ilChiave privata, nel file system in cui è distribuito Envoy.

    • Per aggiungere altri backend, selezionaAdd back-end.

  10. (Opzionale)Registrazione di log

    Per configurare la registrazione, immettere il percorso dei log di accesso HTTP che deve essere utilizzato da Envoy. Consigliamo la/dev/stdoutpercorso in modo da poter utilizzare i driver di registro Docker per esportare i log di Envoy su un servizio come Amazon CloudWatch Registri.

    Nota

    I log devono ancora essere integrati da un agente nell'applicazione e inviati a una destinazione. Questo percorso file indica a Envoy dove inviare i log.

  11. Configurazione del listener

    1. Se il tuo nodo virtuale prevede traffico in entrata, specifica unPortaeProtocolloper ilListener. Ilhttpil listener consente la transizione della connessione ai websocket. È possibile fare clicAdd listenerper aggiungere più ascoltatori. IlRimuoviil pulsante rimuoverà quell'ascoltatore.

    2. (Opzionale)Abilitare Connection pool

      Il pool di connessioni limita il numero di connessioni che un inviato può stabilire contemporaneamente con il cluster di applicazioni locale. È progettato per proteggere l'applicazione locale dal sovraccarico di connessioni e consente di adattare la modellazione del traffico in base alle esigenze delle applicazioni.

      È possibile configurare le impostazioni del pool di connessioni lato destinazione per un listener di nodi virtuali. App Mesh imposta le impostazioni del pool di connessioni lato client su infinite per impostazione predefinita, semplificando la configurazione della mesh.

      Nota

      I protocolli ConnectionPool e PortMapping devono essere gli stessi. Se il protocollo del listener è tcp, specifica solo MaxConnections. Se il protocollo del listener è grpc o http2, specifica solo MaxRequests. Se il protocollo del listener è http, è possibile specificare sia MaxConnections che maxPendingRequests.

      • PerNumero massimo connessioni, specifica il numero massimo di connessioni in uscita.

      • (Opzionale) PerNumero massimo di richieste pendenti, specifica il numero di richieste in eccesso dopoNumero massimo connessioniche un inviato metterà in coda. Il valore di default è 2147483647.

    3. (Opzionale)Abilita il rilevamento dei valori outlier

      Il rilevamento dei valori anomali applicato al client Envoy consente ai client di intraprendere azioni quasi immediate sulle connessioni con errori noti. È una forma di implementazione di un interruttore automatico che tiene traccia dello stato di salute dei singoli host nel servizio upstream.

      Il rilevamento dei valori anomali determina dinamicamente se gli endpoint di un cluster upstream hanno prestazioni diverse dagli altri e li rimuove dal set di bilanciamento del carico integro.

      Nota

      Per configurare in modo efficace il rilevamento dei valori anomali per un nodo virtuale del server, il metodo di rilevamento del servizio di quel nodo virtuale deve utilizzareAWS Cloud Map. Altrimenti, se si utilizza il DNS, il proxy Envoy eleggerebbe solo un singolo indirizzo IP per il routing al servizio upstream, annullando il comportamento di rilevamento dei valori anomali dovuto all'espulsione di un host non integro da un set di host. Fai riferimento alla sezione del metodo di rilevamento del servizio per maggiori dettagli sul comportamento del proxy Envoy in relazione al tipo di rilevamento del servizio.

      • PerErrori del server, specificare il numero di errori 5xx consecutivi necessari per l'espulsione.

      • PerIntervallo di rilevamento outlier, specificare l'intervallo di tempo e l'unità di tempo tra l'analisi dello sweep di espulsione.

      • PerDurata di espulsione di base, specifica la quantità di tempo e l'unità di base per i quali un host viene espulso.

      • Perpercentuale di espulsione, specificare la percentuale massima di host nel pool di bilanciamento del carico che può essere espulso.

    4. (Opzionale)Abilita il controllo dell'integrità— Configurazione delle impostazioni per una policy di controllo dello stato.

      Una politica di controllo dello stato è facoltativa, ma se si specifica un valore per una politica sanitaria, è necessario specificare i valori perSoglia integrità,Intervallo del controllo dell'Health,Protocollo dell'Health,Periodo di timeouteSoglia malsana.

      • PerProtocollo dell'Health, scegli un protocollo. Se si selezionagrpc, quindi il servizio deve essere conforme aProtocollo di controllo dello stato GR.

      • Per Health check port (Porta del controllo dello stato), specificare la porta su cui deve essere eseguito il controllo dello stato.

      • Per Healthy threshold (Soglia di integrità), specificare il numero di controlli dello stato andati a buon fine consecutivi che devono verificarsi prima di dichiarare il listener integro.

      • Per Health check interval (Intervallo del controllo dello stato), specificare il periodo di tempo in millisecondi tra ogni esecuzione del controllo dello stato.

      • Per Path (Percorso), specificare il percorso di destinazione per la richiesta di controllo dello stato. Questo valore viene utilizzato solo seProtocollo dell'Healthèhttpohttp2. Il valore viene ignorato per gli altri protocolli.

      • In Timeout period (Periodo di timeout), specificare il periodo di tempo di attesa quando si riceve una risposta dal controllo dello stato, in millisecondi.

      • Per Unhealthy threshold (Soglia di mancata integrità), specificare il numero di controlli dello stato non andati consecutivamente a buon fine che sono necessari per dichiarare il listener non integro.

    5. (Opzionale)Abilitare la terminazione TLS— Configura il modo in cui gli altri nodi virtuali comunicano con questo nodo virtuale utilizzando TLS.

      • PerMode, seleziona la modalità per cui desideri configurare TLS sul listener.

      • PerMetodo del certificato, selezionare una delle seguenti opzioni. Il certificato deve soddisfare specifici requisiti. Per ulteriori informazioni, consulta la pagina Requisiti del certificato .

        • AWS Certificate Managerospitando— Seleziona un esistenteCertificato.

        • Envoy Secret Discovery Service (SDS)hosting — Inserisci il nome dell'inviato segreto che verrà recuperato utilizzando il Secret Discovery Service.

        • File hosting locale— Specificare il percorso delChain di certificazionefile, così come ilChiave privata, nel file system in cui è distribuito il proxy Envoy.

      • (Facoltativo) SelezionareRichiedi i certificati del cliente una delle opzioni seguenti per abilitare l'autenticazione TLS reciproca quando un client fornisce un certificato. Per ulteriori informazioni su TLS reciproca, consulta App MeshAutenticazione TLS reciprocadocumenti.

        • Envoy Secret Discovery Service (SDS)hosting — Inserisci il nome dell'inviato segreto che verrà recuperato utilizzando il Secret Discovery Service.

        • File hosting locale— Specificare il percorso delChain di certificazionefile sul file system in cui viene distribuito Envoy.

      • (Facoltativo) Immettere unNome alternativo dell'oggetto. Per aggiungere altri SAN, selezionareAdd SAN. I SAN devono essere formattati con FQDN o URI.

    6. (Opzionale)Timeout

      Nota

      Se specifichi un timeout maggiore di quello predefinito, assicurati di configurare un router virtuale e un percorso con un timeout maggiore di quello predefinito. Tuttavia, se riduci il timeout a un valore inferiore a quello predefinito, è facoltativo aggiornare i timeout su Route. Per ulteriori informazioni, consulta la paginaRoute.

      • Timeout richiesta— È possibile specificare un timeout della richiesta se si selezionagrpc,http, oppurehttp2per l'ascoltatoreProtocollo. Il valore predefinito è 15 secondi. Un valore di.0disabilita il timeout.

      • Durata inattiva— È possibile specificare una durata di inattività per qualsiasi protocollo listener. Il valore predefinito è 300 secondi.

  12. ScegliCreazione di un nodo virtualeper finire.

AWS CLI

Per creare un nodo virtuale utilizzandoAWS CLI.

Crea un nodo virtuale che utilizza il DNS per la scoperta dei servizi utilizzando il seguente comando e un file JSON di input (sostituisci ilRossovalori con i tuoi):

  1. aws appmesh create-virtual-node \ --cli-input-json file://create-virtual-node-dns.json
  2. Content di.esempio create-virtual-node-dns.json:

    { "meshName": "meshName", "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "virtualNodeName": "nodeName" }
  3. Output di esempio:

    { "virtualNode": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName", "createdAt": "2022-04-06T09:12:24.348000-05:00", "lastUpdatedAt": "2022-04-06T09:12:24.348000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "status": { "status": "ACTIVE" }, "virtualNodeName": "nodeName" } }

Per ulteriori informazioni sulla creazione di un nodo virtuale conAWS CLIper App Mesh, vedere lacreate-virtual-nodecomando nelAWS CLIriferimento.

Eliminazione di un nodo virtuale

Nota

Non è possibile eliminare un nodo virtuale se è stato specificato come destinazione in unoitinerarioo come fornitore in qualsiasiservizio virtuale.

AWS Management Console

Per eliminare un nodo virtuale tramiteAWS Management Console

  1. Apri la console di App Mesh all'indirizzohttps://console.aws.amazon.com/appmesh/.

  2. Scegli la mesh da cui desideri eliminare il nodo virtuale. Tutte le mesh che possiedi e che sono statecondivisocon te sono elencati.

  3. Scegliere Virtual nodes (Nodi virtuali) nel riquadro di navigazione sinistro.

  4. NelNodi virtualitabella, scegli il nodo virtuale che desideri eliminare e selezionaElimina. Per eliminare un nodo virtuale, l'ID dell'account deve essere elencato in uno deiIl proprietario della reteo ilowner della risorsacolonne del nodo virtuale.

  5. Nella casella di conferma, digitaredeletee quindi selezionareElimina.

AWS CLI

Per eliminare un nodo virtuale tramiteAWS CLI

  1. Utilizza il comando seguente per eliminare il nodo virtuale (sostituisci ilRossovalori con i tuoi):

    aws appmesh delete-virtual-node \ --mesh-name meshName \ --virtual-node-name nodeName
  2. Output di esempio:

    { "virtualNode": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualNode/nodeName", "createdAt": "2022-04-06T09:12:24.348000-05:00", "lastUpdatedAt": "2022-04-07T11:03:48.120000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "backends": [], "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv1.svc.cluster.local" } } }, "status": { "status": "DELETED" }, "virtualNodeName": "nodeName" } }

Per ulteriori informazioni sull'eliminazione di un nodo virtuale conAWS CLIper App Mesh, vedere ladelete-virtual-nodecomando nelAWS CLIriferimento.