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 rilevamento dei servizi per il gruppo di attività. Qualsiasi traffico in ingresso previsto dal nodo virtuale viene specificato come listener. Qualsiasi servizio virtuale a cui un nodo virtuale invia il traffico in uscita viene specificato come backend.

I metadati della risposta per il tuo nuovo nodo virtuale contengono Amazon Resource Name (ARN) associato al nodo virtuale. Imposta il valore come variabile diAPPMESH_RESOURCE_ARN ambiente per il container proxy Envoy del gruppo di attività nella definizione dell'attività 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. Quando si imposta la variabile, è necessario utilizzare1.15.0 o versioni successive dell'immagine di Envoy. Per ulteriori informazioni sulle variabili 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 App Mesh all'indirizzo https://console.aws.amazon.com/appmesh/.

  2. Scegliere la mesh in cui si desidera creare il nodo virtuale. Vengono elencate tutte le mesh che possiedi e che sono state condivise con te.

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

  4. Scegli Crea nodo virtuale e quindi specifica le impostazioni per il tuo nodo virtuale.

  5. In Nome nodo virtuale, inserisci un nome per il tuo nodo virtuale.

  6. Per Metodo di individuazione del servizio, scegliere una delle seguenti opzioni:

    • DNS: specifica il nome host DNS del servizio effettivo rappresentato dal nodo virtuale. Il proxy Envoy è distribuito in un Amazon VPC. Il proxy invia le 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, consulta Utilizzo del DNS con VPC. Per il tipo di risposta DNS (opzionale), specificare i tipi di endpoint restituiti dal resolver DNS. Load Balancer significa che il resolver DNS restituisce un set di endpoint con carico bilanciato. Endpoint significa che il resolver DNS restituisce tutti gli endpoint. Per impostazione predefinita, si presume che il tipo di risposta sia Load Balancer.

      Nota

      Se usi Route53, dovrai usare Load Balancer.

    • AWS Cloud Map— Specificare un nome di servizio e uno spazio dei nomi HTTP esistenti. Facoltativamente, puoi anche specificare gli attributi che App Mesh può interrogareAWS Cloud Map selezionando Aggiungi riga e specificando una chiave e un valore. Vengono restituite solo le istanze che corrispondono a tutte le coppie chiave/valore specificate. Per poterlo utilizzareAWS Cloud Map, il tuo account deve avere ilAWSServiceRoleForAppMesh ruolo collegato al servizio. Per ulteriori informazioni su AWS Cloud Map, consulta la Guida per sviluppatori di AWS Cloud Map.

    • Nessuno: 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 attivando Ignora il comportamento della versione IP predefinita. 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 preferisceIPv6 e utilizzaIPv4.

      • Utilizziamo l'IPv4indirizzo restituito da,AWS Cloud Map se disponibile, e torniamo a utilizzare l'IPv6indirizzo.

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

      • Gli ascoltatori di Envoy si collegano a tuttiIPv4 gli indirizzi.

    • IPv6 preferito

      • Il resolver DNS di Envoy preferisceIPv6 e utilizzaIPv4.

      • L'IPv6indirizzo restituito daAWS Cloud Map viene utilizzato se disponibile e torna a utilizzare l'IPv4indirizzo

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

      • Gli ascoltatori di Envoy si legano a tuttiIPv4 gliIPv6 indirizzi.

    • IPv4 preferito

      • Il resolver DNS di Envoy preferisceIPv4 e utilizzaIPv6.

      • Utilizziamo l'IPv4indirizzo restituito da,AWS Cloud Map se disponibile, e torniamo a utilizzare l'IPv6indirizzo.

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

      • Gli ascoltatori di Envoy si legano a tuttiIPv4 gliIPv6 indirizzi.

    • Solo IPv6

      • Il resolver DNS di Envoy utilizza soloIPv6.

      • Viene utilizzato solo l'IPv6indirizzoAWS Cloud Map restituito da. SeAWS Cloud Map restituisce unIPv4 indirizzo, non viene utilizzato alcun indirizzo IP e i risultati vuoti vengono restituiti a Envoy.

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

      • Gli ascoltatori di Envoy si legano a tuttiIPv4 gliIPv6 indirizzi.

    • Solo IPv4

      • Il resolver DNS di Envoy utilizza soloIPv4.

      • Viene utilizzato solo l'IPv4indirizzoAWS Cloud Map restituito da. SeAWS Cloud Map restituisce unIPv6 indirizzo, non viene utilizzato alcun indirizzo IP e i risultati vuoti vengono restituiti a Envoy.

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

      • Gli ascoltatori di Envoy si legano a tuttiIPv4 gliIPv6 indirizzi.

  8. (Facoltativo) Impostazioni predefinite delle policy del client: configura i requisiti predefiniti durante 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 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.

    • L'autorizzazione proxy deve essere abilitata per il proxy Envoy distribuito con l'applicazione rappresentata dai nodi virtuali del servizio backend. Quando si abilita l'autorizzazione proxy, si consiglia di limitare l'accesso solo ai nodi virtuali con cui questo nodo virtuale sta comunicando.

    • (Facoltativo) Seleziona Applica TLS se desideri che il nodo virtuale comunichi 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 in Porte. Per aggiungere altre porte, seleziona Aggiungi porta. Se non si specifica alcuna porta, il protocollo TLS viene applicato a tutte le porte.

    • Nella sezione Metodo di convalida, seleziona una delle seguenti opzioni. Il certificato specificato deve esistere già e soddisfare specifici requisiti. Per ulteriori informazioni, consulta Requisiti del certificato.

      • AWS Private Certificate Authorityhosting: seleziona uno o più certificati esistenti. Per una descrizione completa della distribuzione di una mesh con un'applicazione di esempio che utilizza la crittografia con un certificato ACM, consulta Configurazione di TLS conAWS Certificate Manager attivo GitHub. end-to-end

      • Hosting Envoy Secret Discovery Service (SDS): inserisci il nome del segreto che Envoy recupererà utilizzando il Secret Discovery Service.

      • Hosting di file locale: specifica il percorso del file della catena di certificati sul file system in cui è distribuito Envoy. Per una descrizione completa della distribuzione di una mesh con un'applicazione di esempio che utilizza la crittografia con file locali, consulta Configurazione di TLS con certificati TLS forniti da file su GitHub. end-to-end

    • (Facoltativo) Immettere un nome alternativo all'oggetto. Per aggiungere altre SAN, selezionare Aggiungi SAN. Le SAN devono essere formattate con FQDN o URI.

    • (Facoltativo) Seleziona Fornisci certificato client e una delle opzioni seguenti per fornire un certificato client quando un server lo richiede e abilitare l'autenticazione TLS reciproca. Per ulteriori informazioni sul protocollo TLS reciproco, consulta i documenti App Mesh Mutual TLS Authentication.

      • Hosting Envoy Secret Discovery Service (SDS): inserisci il nome del segreto che Envoy recupererà utilizzando il Secret Discovery Service.

      • Hosting locale dei file: specifica il percorso del file della catena di certificati, nonché la chiave privata, nel file system in cui è distribuito Envoy.

  9. (Facoltativo) Backend di servizio: specifica il servizio virtuale App Mesh con cui comunicherà il nodo virtuale.
    • Immettere il nome del servizio virtuale App Mesh o il nome completo Amazon Resource Name (ARN) per il servizio virtuale con cui comunica il nodo virtuale.

    • (Facoltativo) Se desideri impostare impostazioni TLS uniche per un backend, seleziona Impostazioni TLS e quindi seleziona Sostituisci impostazioni predefinite.

      • (Facoltativo) Seleziona Applica TLS se desideri che il nodo virtuale comunichi con tutti i backend tramite TLS.

      • (Facoltativo) Se desideri richiedere l'uso di TLS solo per una o più porte specifiche, inserisci un numero in Porte. Per aggiungere altre porte, seleziona Aggiungi porta. Se non si specifica alcuna porta, il protocollo TLS viene applicato a tutte le porte.

      • Nella sezione Metodo di convalida, seleziona una delle seguenti opzioni. Il certificato specificato deve esistere già e soddisfare specifici requisiti. Per ulteriori informazioni, consulta Requisiti del certificato.

        • AWS Private Certificate Authorityhosting: seleziona uno o più certificati esistenti.

        • Hosting Envoy Secret Discovery Service (SDS): inserisci il nome del segreto che Envoy recupererà utilizzando il Secret Discovery Service.

        • Hosting di file locale: specifica il percorso del file della catena di certificati sul file system in cui è distribuito Envoy.

      • (Facoltativo) Immettere un nome alternativo all'oggetto. Per aggiungere altre SAN, selezionare Aggiungi SAN. Le SAN devono essere formattate con FQDN o URI.

      • (Facoltativo) Seleziona Fornisci certificato client e una delle opzioni seguenti per fornire un certificato client quando un server lo richiede e abilitare l'autenticazione TLS reciproca. Per ulteriori informazioni sul protocollo TLS reciproco, consulta i documenti App Mesh Mutual TLS Authentication.

        • Hosting Envoy Secret Discovery Service (SDS): inserisci il nome del segreto che Envoy recupererà utilizzando il Secret Discovery Service.

        • Hosting locale dei file: specifica il percorso del file della catena di certificati, nonché la chiave privata, nel file system in cui è distribuito Envoy.

    • Per aggiungere altri backend, seleziona Aggiungi backend.

  10. (Facoltativo) Registrazione

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

    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

    Supporto per gli ascoltatoriHTTPHTTP/2,GRPC, eTCP protocolli. HTTPSnon è supportato.

    1. Se il tuo nodo virtuale prevede traffico in entrata, specifica una porta e un protocollo per il listener. Il listener http consente la transizione della connessione ai websocket. È possibile fare clic su Aggiungi ascoltatore per aggiungere più ascoltatori. Il pulsante Rimuovi rimuoverà quel listener.

    2. (Facoltativo) Abilita pool di connessioni

      Il pool di connessioni limita il numero di connessioni che un Envoy può stabilire contemporaneamente con il cluster di applicazioni locale. Ha lo scopo di proteggere l'applicazione locale dal sovraccarico di connessioni e consente di adattare la modellazione del traffico alle esigenze delle applicazioni.

      È possibile configurare le impostazioni del pool di connessioni sul lato di 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 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, puoi specificare sia MaxConnections che maxPendingRequests.

      • In Numero massimo di connessioni, specificare il numero massimo di connessioni in uscita.

      • (Facoltativo) Per Numero massimo di richieste in sospeso, specifica il numero di richieste in eccesso dopo Numero massimo di connessioni che un Envoy metterà in coda. Il valore di default è 2147483647.

    3. (Facoltativo) Abilita il rilevamento dei valori anomali

      Il rilevamento dei valori anomali applicato al client Envoy consente ai clienti di intervenire quasi immediatamente sulle connessioni in cui sono stati rilevati errori errati. È 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 sano.

      Nota

      Per configurare in modo efficace il rilevamento dei valori anomali per un nodo virtuale del server, è necessario utilizzare il metodo di rilevamento dei servizi di quel nodo virtualeAWS Cloud Map. Altrimenti, se si utilizza il DNS, il proxy Envoy selezionerebbe un solo indirizzo IP per il routing verso il servizio upstream, annullando il comportamento di rilevamento anomalo dell'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.

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

      • Per l'intervallo di rilevamento dei valori anomali, specificare l'intervallo di tempo e l'unità tra l'analisi dello sweep di espulsione.

      • Nella sezione Durata dell'espulsione di base, specificare la quantità di tempo e l'unità di base per il quale un host viene espulso.

      • Nella percentuale di espulsione, specificare la percentuale massima di host nel pool di load balancer che possono essere espulso.

    4. (Facoltativo) Abilita il controllo dello stato: configura le impostazioni per una politica di controllo dello stato.

      Una politica di controllo dello stato di Health è facoltativa, ma se si specifica un valore per una politica Health, è necessario specificare i valori per la soglia di integrità, l'intervallo di controllo dello stato, il protocollo di controllo dello stato, il periodo di timeout e la soglia non salutare.

      • Per il protocollo Health Check, scegli un protocollo. Se si seleziona grpc, il servizio deve essere conforme al GRPC Health Checking Protocol.

      • 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 se il protocollo Health check èhttp ohttp2. 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. (Facoltativo) Abilita la terminazione TLS: configura il modo in cui altri nodi virtuali comunicano con questo nodo virtuale utilizzando TLS.
      • In Modalità, seleziona la modalità per cui desideri configurare TLS sul listener.

      • Nella sezione Metodo certificato, seleziona una delle seguenti opzioni. Il certificato deve soddisfare specifici requisiti. Per ulteriori informazioni, consulta Requisiti del certificato.

        • AWS Certificate Managerhosting: seleziona un certificato esistente.

        • Hosting Envoy Secret Discovery Service (SDS): inserisci il nome del segreto che Envoy recupererà utilizzando il Secret Discovery Service.

        • Hosting locale dei file: specifica il percorso del file della catena di certificati, nonché la chiave privata, nel file system in cui è distribuito il proxy Envoy.

      • (Facoltativo) Seleziona Richiedi certificati client e una delle opzioni seguenti per abilitare l'autenticazione TLS reciproca quando un client fornisce un certificato. Per ulteriori informazioni sul protocollo TLS reciproco, consulta i documenti App Mesh Mutual TLS Authentication.

        • Hosting Envoy Secret Discovery Service (SDS): inserisci il nome del segreto che Envoy recupererà utilizzando il Secret Discovery Service.

        • Hosting di file locale: specifica il percorso del file della catena di certificati sul file system in cui è distribuito Envoy.

      • (Facoltativo) Immettere un nome alternativo all'oggetto. Per aggiungere altre SAN, selezionare Aggiungi SAN. Le SAN devono essere formattate con FQDN o URI.

    6. Timeout (facoltativo)
      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 Routes.

      • Timeout della richiesta: puoi specificare un timeout della richiesta se hai selezionato grpc, http o http2 per il protocollo del listener. Il valore predefinito è 15 secondi. Il valore di0 disabilita il timeout.

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

  12. Scegli Crea nodo virtuale per terminare.

AWS CLI

Per creare un nodo virtuale utilizzando ilAWS CLI.

Crea un nodo virtuale che utilizza il DNS per l'individuazione dei servizi utilizzando il seguente comando e un file JSON di input (sostituisci i valori rossi con i tuoi):

  1. aws appmesh create-virtual-node \ --cli-input-json file://create-virtual-node-dns.json
  2. Contenuto dell'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 CLI for App Mesh, consulta il create-virtual-nodecomando nelAWS CLI riferimento.

Eliminazione di un nodo virtuale

Nota

Non è possibile eliminare un nodo virtuale se è specificato come destinazione in qualsiasi percorso o come provider in qualsiasi servizio virtuale.

AWS Management Console
Per eliminare un nodo virtuale tramiteAWS Management Console
  1. Apri la console App Mesh all'indirizzo https://console.aws.amazon.com/appmesh/.

  2. Scegliere la mesh da cui si desidera eliminare un nodo virtuale. Vengono elencate tutte le mesh che possiedi e che sono state condivise con te.

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

  4. Nella tabella Nodi virtuali, scegli il nodo virtuale che desideri eliminare e seleziona Elimina. Per eliminare un nodo virtuale, l'ID dell'account deve essere elencato nelle colonne Mesh owner o Resource owner del nodo virtuale.

  5. Nella casella di conferma, digitadelete e seleziona Elimina.

AWS CLI
Per eliminare un nodo virtuale tramiteAWS CLI
  1. Usa il seguente comando per eliminare il tuo nodo virtuale (sostituisci i valori rossi 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 CLI for App Mesh, consulta il delete-virtual-nodecomando nelAWS CLI riferimento.