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 entrata previsto dal nodo virtuale viene specificato come listener. Qualsiasi servizio virtuale a cui un nodo virtuale invia traffico in uscita viene specificato come backend.

I metadati di risposta per il tuo nuovo nodo virtuale contengono l'Amazon Resource Name (ARN) associato al nodo virtuale. Imposta questo valore come variabile di APPMESH_RESOURCE_ARN ambiente per il contenitore proxy Envoy del tuo gruppo di attività nella definizione dell'attività di Amazon ECS o nella specifica del pod Kubernetes. Ad esempio, il valore potrebbe essere. arn:aws:appmesh:us-west-2:111122223333:mesh/myMesh/virtualNode/myVirtualNode Questo è quindi mappato ai parametri Envoy node.id e node.cluster. È necessario utilizzare 1.15.0 o una versione successiva dell'immagine Envoy quando si imposta questa variabile. Per ulteriori informazioni sulle variabili App Mesh Envoy, vedere. Immagine 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 utilizzando AWS Management Console
  1. Apri la console App Mesh all'indirizzo https://console.aws.amazon.com/appmesh/.

  2. Scegli la mesh in cui vuoi creare il nodo virtuale. Sono 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. Per Nome del nodo virtuale, inserisci un nome per il tuo nodo virtuale.

  6. Per il metodo di individuazione del servizio, scegli una delle seguenti opzioni:

    • DNS: specifica il nome host DNS del servizio effettivo rappresentato dal nodo virtuale. Il proxy Envoy viene 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 viene risolto, il server DNS restituisce uno o più indirizzi IP. Per ulteriori informazioni sulle impostazioni DNS del VPC, consulta Uso del DNS con il VPC. Per il tipo di risposta DNS (opzionale), specifica i tipi di endpoint restituiti dal resolver DNS. Load Balancer significa che il resolver DNS restituisce un set di endpoint con carico bilanciato. Endpoints significa che il resolver DNS sta restituendo 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ò AWS Cloud Map richiedere 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 poter essere utilizzatoAWS Cloud Map, l'account deve avere il ruolo collegato al AWSServiceRoleForAppMesh 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 il comportamento Override 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 IPv6 preferisce e ricorre a. IPv4

      • Utilizziamo l'IPv4indirizzo restituito da, AWS Cloud Map se disponibile, e riprendiamo a utilizzare l'indirizzo. IPv6

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

      • I listener Envoy si collegano a tutti gli indirizzi. IPv4

    • IPv6 (preferito)

      • Il resolver DNS di Envoy preferisce e ricorre a. IPv6 IPv4

      • L'IPv6indirizzo restituito da AWS Cloud Map viene utilizzato se disponibile e si torna a utilizzare l'indirizzo IPv4

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

      • Gli ascoltatori di Envoy si collegano a tutti gli indirizzi. IPv4 IPv6

    • IPv4 (preferito)

      • Il resolver DNS di Envoy preferisce e ricorre a. IPv4 IPv6

      • Utilizziamo l'IPv4indirizzo restituito da, AWS Cloud Map se disponibile, e riprendiamo a utilizzare l'indirizzo. IPv6

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

      • Gli ascoltatori di Envoy si collegano a tutti gli indirizzi. IPv4 IPv6

    • Solo IPv6

      • Il resolver DNS di Envoy utilizza solo. IPv6

      • Viene utilizzato solo l'IPv6indirizzo restituito da. AWS Cloud Map Se AWS Cloud Map restituisce un IPv4 indirizzo, non viene utilizzato alcun indirizzo IP e all'Envoy vengono restituiti risultati vuoti.

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

      • Gli ascoltatori di Envoy si collegano a tutti gli indirizzi. IPv4 IPv6

    • Solo IPv4

      • Il resolver DNS di Envoy utilizza solo. IPv4

      • Viene utilizzato solo l'IPv4indirizzo restituito da. AWS Cloud Map Se AWS Cloud Map restituisce un IPv6 indirizzo, non viene utilizzato alcun indirizzo IP e all'Envoy vengono restituiti risultati vuoti.

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

      • Gli ascoltatori di Envoy si collegano a tutti gli indirizzi. IPv4 IPv6

  8. (Facoltativo) Impostazioni predefinite delle politiche 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, consulta. Route 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 a valle.

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

    • (Facoltativo) Seleziona Enforce TLS se desideri 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 in Porte. Per aggiungere porte aggiuntive, seleziona Aggiungi porta. Se non specifichi alcuna porta, TLS viene applicato per tutte le porte.

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

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

      • Hosting Envoy Secret Discovery Service (SDS): inserisci il nome del server segreto che Envoy recupererà utilizzando 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 dell'implementazione 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. end-to-end GitHub

    • (Facoltativo) Inserisci un nome alternativo per il soggetto. Per aggiungere altre SAN, selezionare Aggiungi SAN. Le SAN devono essere in formato 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 su Mutual TLS, consulta i documenti di autenticazione TLS Mutual TLS di App Mesh.

      • 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, nonché la chiave privata, sul file system in cui è distribuito Envoy.

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

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

      • (Facoltativo) Seleziona Enforce TLS se desideri 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 in Porte. Per aggiungere porte aggiuntive, seleziona Aggiungi porta. Se non specifichi alcuna porta, TLS viene applicato per tutte le porte.

      • Per Metodo di convalida, selezionate una delle seguenti opzioni. Il certificato specificato deve già esistere e soddisfare requisiti specifici. 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 dell'inviato 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) Inserite un nome alternativo per il soggetto. Per aggiungere altre SAN, selezionare Aggiungi SAN. Le SAN devono essere in formato 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 su Mutual TLS, consulta i documenti di autenticazione TLS Mutual TLS di App Mesh.

        • 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, nonché la chiave privata, sul file system in cui è distribuito Envoy.

    • Per aggiungere backend aggiuntivi, seleziona Aggiungi backend.

  10. (Facoltativo) Registrazione

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

    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 HTTP per gli ascoltatori e HTTP/2 GRPC TCP protocolli. HTTPSnon è supportato.

    1. Se il 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 il 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 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, puoi specificare sia MaxConnections che. maxPendingRequests

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

      • (Facoltativo) Per il numero massimo di richieste in sospeso, specifica il numero di richieste in eccesso dopo il 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 client di intraprendere azioni quasi immediate sulle connessioni con guasti anomali noti osservati. È 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 in un cluster upstream offrono 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 individuazione dei servizi di quel nodo virtuale può essere uno AWS Cloud Map o il DNS con il campo del tipo di risposta impostato su. ENDPOINTS Se si utilizza il metodo di rilevamento del servizio DNS con tipo di risposta asLOADBALANCER, il proxy Envoy sceglierà un solo indirizzo IP per il routing verso il servizio upstream. Ciò annulla il comportamento di rilevamento dei valori anomali che comporta l'espulsione di un host non integro da un set di host. Consulta la sezione 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, specifica il numero di 5xx errori consecutivi necessari per l'espulsione.

      • Per Intervallo di rilevamento dei valori anomali, specificate l'intervallo di tempo e l'unità tra l'analisi del flusso di espulsione.

      • Per Durata dell'espulsione di Base, specificate la quantità di tempo e l'unità di base per cui viene espulso un host.

      • Per Percentuale di espulsione, specifica la percentuale massima di host nel pool di bilanciamento del carico che possono essere espulsi.

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

      Una politica di controllo dello stato di salute è facoltativa, ma se si specificano valori per una politica sanitaria, è necessario specificare i valori per Healthy threshold, Health check interval, Health check protocol, Timeout period e Unhealthy threshold.

      • 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.
      • Per Modalità, seleziona la modalità per cui desideri configurare TLS sul listener.

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

        • AWS Certificate Managerhosting: seleziona un certificato esistente.

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

        • Hosting di file locale: specifica il percorso del file della catena di certificati, nonché la chiave privata, sul 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 su Mutual TLS, consulta i documenti di autenticazione TLS Mutual TLS di App Mesh.

        • 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) Inserite un nome alternativo per il soggetto. Per aggiungere altre SAN, selezionare Aggiungi SAN. Le SAN devono essere in formato FQDN o URI.

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

      • Timeout della richiesta: puoi specificare un timeout per la richiesta se hai selezionato grpc, http o http2 come protocollo del listener. L'impostazione predefinita è 15 secondi. Il valore di 0 disabilita il timeout.

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

  12. Scegli Crea nodo virtuale per terminare.

AWS CLI

Per creare un nodo virtuale utilizzandoAWS CLI.

Crea un nodo virtuale che utilizzi 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 .json create-virtual-node-dns:

    { "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 con AWS CLI for App Mesh, vedere il create-virtual-nodecomando nel AWS CLI riferimento.

Eliminazione di un nodo virtuale

Nota

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

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

  2. Scegli la mesh da cui vuoi eliminare un nodo virtuale. Sono 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 Proprietario della rete Mesh o Proprietario della risorsa del nodo virtuale.

  5. Nella casella di conferma, digita delete e seleziona Elimina.

AWS CLI
Per eliminare un nodo virtuale utilizzando AWS 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 con AWS CLI for App Mesh, vedere il delete-virtual-nodecomando nel AWS CLI riferimento.