Nós virtuais - AWS App Mesh

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Nós virtuais

Um nó virtual atua como um ponteiro lógico para um grupo de tarefas específico, como um serviço do Amazon ECS ou uma implantação Kubernetes. Ao criar um nó virtual, você deve especificar um método de descoberta de serviços para seu grupo de tarefas. Qualquer tráfego de entrada que seu nó virtual esperar deverá ser especificado como um receptor. Qualquer serviço virtual para o qual um nó virtual envia tráfego de saída é especificado como back-end.

Os metadados de resposta para o novo nó virtual contêm o nome do recurso da Amazon (ARN) associado ao nó virtual. Defina esse valor como a variável de ambiente APPMESH_RESOURCE_ARN para o contêiner do proxy Envoy do seu grupo de tarefas em sua definição de tarefa do Amazon ECS ou na especificação de pods do Kubernetes. Por exemplo, o valor pode ser arn:aws:appmesh:us-west-2:111122223333:mesh/myMesh/virtualNode/myVirtualNode. Depois, isso é mapeado para os parâmetros do Envoy node.id e node.cluster. É necessário usar 1.15.0 ou posterior da imagem do Envoy quando definir essa variável. Para obter mais informações sobre variáveis Envoy do App Mesh, consulte Imagem do Envoy.

nota

Por padrão, o App Mesh usa o nome do recurso especificado em APPMESH_RESOURCE_ARN quando o Envoy está se referindo a si mesmo em métricas e rastreamentos. É possível substituir esse comportamento definindo a variável de ambiente APPMESH_RESOURCE_CLUSTER com seu próprio nome.

Criar um nó virtual

AWS Management Console
Para criar um nó virtual usando o AWS Management Console
  1. Abra o console do App Mesh em https://console.aws.amazon.com/appmesh/.

  2. Escolha a malha em que deseja criar o nó virtual. Todas as malhas que você possui e que foram compartilhadas com você estão listadas.

  3. Selecione Virtual nodes (Nós virtuais) no painel de navegação à esquerda.

  4. Escolha Criar nó virtual e especifique as configurações para o seu nó virtual.

  5. Em Nome do nó virtual, escolha um nome para seu nó virtual.

  6. Em Método de descoberta de serviços, escolha uma das seguintes opções:

    • DNS: especifique o Nome de host DNS do serviço real que o nó virtual representa. O proxy Envoy é implantado em uma Amazon VPC. O proxy envia solicitações de resolução de nomes para o servidor DNS configurado para a VPC. Se o nome do host for resolvido, o servidor DNS retornará um ou mais endereços IP. Para obter mais informações sobre as configurações de DNS para uma VPC, consulte Usando DNS com sua VPC. Para o tipo de resposta DNS (opcional), especifique os tipos de endpoints retornados pelo resolvedor de DNS. Balanceador de carga significa que o resolvedor de DNS retorna um conjunto de endpoints balanceados. Endpoints significa que o resolvedor de DNS está retornando todos os endpoints. Por padrão, presume-se que o tipo de resposta seja Balanceador de carga.

      nota

      Se você usar o Route53, precisará usar o Balanceador de carga.

    • AWS Cloud Map: especifique um Nome do serviço e um Namespace HTTP existentes. Opcionalmente, você também pode especificar os atributos que o App Mesh pode consultar no AWS Cloud Map selecionando Adicionar linha e especificando uma Chave e um Valor. Somente as instâncias que correspondam a todos os pares de chave/valor serão retornadas. Para usar o AWS Cloud Map, sua conta deve ter a função vinculada ao serviço AWSServiceRoleForAppMesh. Para ter mais informações sobre o AWS Cloud Map, consulte o Guia do desenvolvedor do AWS Cloud Map.

    • Nenhum: selecione se o nó virtual não esperar nenhum tráfego de entrada.

  7. Preferência de versão do IP

    Controle qual versão de IP deve ser usada para tráfego dentro da malha ativando Substituir comportamento da versão de IP padrão. Por padrão, o App Mesh usa uma variedade de versões de IP.

    nota

    A definição da preferência de IP em um nó virtual substitui apenas a preferência de IP definida para a malha nesse nó específico.

    • Padrão

      • O resolvedor de DNS do Envoy prefere o IPv6 e volta para o IPv4.

      • Usamos o endereço IPv4 retornado pelo AWS Cloud Map, se disponível, e voltamos a usar o endereço IPv6.

      • O endpoint criado para o aplicativo local usa um endereço IPv4.

      • Os receptores do Envoy se vinculam a todos os endereços IPv4.

    • IPv6 preferencial

      • O resolvedor de DNS do Envoy prefere o IPv6 e volta para o IPv4.

      • O endereço IPv6 retornado pelo AWS Cloud Map é usado, se disponível, e volta a usar o endereço IPv4

      • O endpoint criado para o aplicativo local usa um endereço IPv6.

      • Os receptores do Envoy se vinculam a todos os endereços IPv4 e IPv6.

    • IPv4 preferencial

      • O resolvedor de DNS do Envoy prefere o IPv4 e volta para o IPv6.

      • Usamos o endereço IPv4 retornado pelo AWS Cloud Map, se disponível, e voltamos a usar o endereço IPv6.

      • O endpoint criado para o aplicativo local usa um endereço IPv4.

      • Os receptores do Envoy se vinculam a todos os endereços IPv4 e IPv6.

    • Somente IPv6

      • O resolvedor de DNS do Envoy usa apenas IPv6.

      • Somente o endereço IPv6 retornado pelo AWS Cloud Map é usado. Se o AWS Cloud Map retornar um endereço IPv4, nenhum endereço IP será usado e os resultados vazios serão retornados ao Envoy.

      • O endpoint criado para o aplicativo local usa um endereço IPv6.

      • Os receptores do Envoy se vinculam a todos os endereços IPv4 e IPv6.

    • Somente IPv4

      • O resolvedor de DNS do Envoy usa apenas IPv4.

      • Somente o endereço IPv4 retornado pelo AWS Cloud Map é usado. Se o AWS Cloud Map retornar um endereço IPv6, nenhum endereço IP será usado e os resultados vazios serão retornados ao Envoy.

      • O endpoint criado para o aplicativo local usa um endereço IPv4.

      • Os receptores do Envoy se vinculam a todos os endereços IPv4 e IPv6.

  8. (Opcional) Padrões da política do cliente: configure os requisitos padrão ao se comunicar com serviços virtuais de back-end.
    nota
    • Se você quiser habilitar o Transport Layer Security (TLS) para um nó virtual existente, recomendamos criar um novo nó virtual, que represente o mesmo serviço do nó virtual existente, para habilitar nele o TLS. Em seguida, transfira gradualmente o tráfego para o novo nó virtual usando um roteador virtual e uma rota. Para obter mais informações sobre como criar uma rota e ajustar os pesos para a transição, consulte Rotas. Se você atualizar um nó virtual existente que serve tráfego com TLS, há uma chance de que os proxies Envoy do cliente downstream recebam o contexto de validação de TLS antes que o proxy Envoy do nó virtual que você atualizou receba o certificado. Isso pode causar erros de negociação de TLS nos proxies Envoy downstream.

    • A autorização de proxy deve ser habilitada para o proxy Envoy implantado com o aplicativo representado pelos nós virtuais do serviço de back-end. Recomendamos que, ao habilitar a autorização de proxy, restrinja o acesso somente aos nós virtuais com os quais esse nó virtual está se comunicando.

    • (Opcional) Selecione Impor o TLS se quiser exigir que o nó virtual se comunique com todos os back-ends usando o Transport Layer Security (TLS).

    • (Opcional) Se você quiser exigir apenas o uso de TLS para uma ou mais portas específicas, insira um número em Portas. Para adicionar mais portas, selecione Adicionar porta. Se você não especificar nenhuma porta, o TLS será aplicado a todas as portas.

    • Para Método de validação, selecione uma das opções a seguir. O certificado especificado já deve existir e atender aos requisitos específicos. Para obter mais informações, consulte Requisitos de certificado.

      • Hospedagem da AWS Private Certificate Authority: selecione um ou mais Certificados existentes. Para uma explicação completa da implantação de uma malha com um aplicativo de exemplo usando criptografia com um Certificado do ACM, consulte Configurar o TLS com o AWS Certificate Manager no GitHub.

      • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo que o Envoy buscará usando o Secret Discovery Service.

      • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados no sistema de arquivos em que o Envoy está implantado. Para uma explicação completa da implantação de uma malha com um aplicativo de exemplo usando criptografia com arquivos locais, consulte Configurar o TLS com Certificados TLS fornecidos por arquivo no GitHub.

    • (Opcional) Insira um Nome alternativo do assunto. Para adicionar mais SANs, selecione Adicionar SAN. Os SANs devem estar formatados como FQDN ou URI.

    • (Opcional) Selecione Fornecer certificado de cliente e uma das opções abaixo para fornecer um certificado de cliente quando um servidor o solicitar e habilitar a autenticação de TLS mútuo. Para saber mais sobre o TLS mútuo, consulte os documentos de Autenticação de TLS mútuo do App Mesh.

      • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo que o Envoy buscará usando o Secret Discovery Service.

      • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados como a Chave privada, no sistema de arquivos em que o Envoy está implantado.

  9. (Opcional) Backends de serviço: especifique o serviço virtual do App Mesh com o qual o nó virtual se comunicará.
    • Insira um nome do serviço virtual do App Mesh ou um nome do recurso da Amazon (ARN) completo para o serviço virtual com o qual o seu nó virtual se comunica.

    • (Opcional) Se você quiser definir configurações de TLS exclusivas para um back-end, selecione Configurações de TLS e, em seguida, selecione Substituir padrões.

      • (Opcional) Selecione Impor o TLS se quiser exigir que o nó virtual se comunique com todos os back-ends usando TLS.

      • (Opcional) Se você quiser exigir apenas o uso de TLS para uma ou mais portas específicas, insira um número em Portas. Para adicionar mais portas, selecione Adicionar porta. Se você não especificar nenhuma porta, o TLS será aplicado a todas as portas.

      • Para Método de validação, selecione uma das opções a seguir. O certificado especificado já deve existir e atender aos requisitos específicos. Para obter mais informações, consulte Requisitos de certificado.

        • Hospedagem da AWS Private Certificate Authority: selecione um ou mais Certificados existentes.

        • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo que o Envoy buscará usando o Secret Discovery Service.

        • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados no sistema de arquivos em que o Envoy está implantado.

      • (Opcional) Insira um Nome alternativo do assunto. Para adicionar mais SANs, selecione Adicionar SAN. Os SANs devem estar formatados como FQDN ou URI.

      • (Opcional) Selecione Fornecer certificado de cliente e uma das opções abaixo para fornecer um certificado de cliente quando um servidor o solicitar e habilitar a autenticação de TLS mútuo. Para saber mais sobre o TLS mútuo, consulte os documentos de Autenticação de TLS mútuo do App Mesh.

        • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo que o Envoy buscará usando o Secret Discovery Service.

        • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados como a Chave privada, no sistema de arquivos em que o Envoy está implantado.

    • Para adicionar mais back-ends, selecione Adicionar back-end.

  10. (Opcional) Registro

    Para configurar o registro em log, insira o caminho de logs de acesso HTTP que o Envoy deve usar. Recomendamos o caminho /dev/stdout, para que você possa usar drivers de log do Docker para exportar seus logs do Envoy para um serviço, como o Amazon CloudWatch Logs.

    nota

    Os logs ainda devem ser ingeridos por um agente no seu aplicativo e enviados para um destino. Esse caminho de arquivo apenas informa ao Envoy para onde os logs devem ser enviados.

  11. Configuração do receptor

    Os receptores são compatíveis com os protocolos HTTP, HTTP/2, GRPC e TCP. HTTPS não é suportado.

    1. Se o seu nó virtual esperar tráfego de entrada, especifique uma Porta e um Protocolo para o Receptor. O receptor http permite a transição da conexão para websockets. Você pode clicar em Adicionar receptor para adicionar vários receptores. O botão Remover removerá esse receptor.

    2. (Opcional) Habilitar grupo de conexões

      O pooling de conexões limita o número de conexões que um Envoy pode estabelecer simultaneamente com o cluster de aplicativos local. O objetivo é proteger seu aplicativo local de ficar sobrecarregado com conexões e permitir que você ajuste a modelagem de tráfego de acordo com as necessidades dos seus aplicativos.

      Você pode definir as configurações do grupo de conexões do lado do destino para um receptor de nó virtual. O App Mesh define as configurações do grupo de conexões do lado do cliente como infinitas por padrão, simplificando a configuração da malha.

      nota

      Os protocolos connectionPool e portMapping devem ser os mesmos. Se o protocolo do seu receptor for tcp, especifique somente maxConnections. Se o protocolo do seu receptor for grpc ou http2, especifique somente maxRequests. Se o protocolo do seu receptor for http, você poderá especificar maxConnections e maxPendingRequests.

      • Em Máximo de conexões, especifique o número máximo de conexões de saída.

      • (Opcional) Para Máximo de solicitações pendentes, especifique o número de solicitações excedentes após o Máximo de conexões que um Envoy colocará na fila. O valor padrão é 2147483647.

    3. (Opcional) Habilitar detecção de discrepância

      A detecção de discrepâncias aplicada no Envoy do cliente permite que os clientes tomem medidas quase imediatas em conexões com falhas conhecidas e observadas. É uma forma de implementação de disjuntor que rastreia o estado de integridade de hosts individuais no serviço upstream.

      A detecção de discrepâncias determina dinamicamente se os endpoints em um cluster upstream têm um desempenho diferente dos outros e os remove do conjunto de balanceamento de carga íntegro.

      nota

      Para configurar com eficácia a detecção discrepâncias para um nó virtual do servidor, o método de descoberta de serviços desse nó virtual pode ser o AWS Cloud Map ou o DNS com o campo do tipo de resposta definido como ENDPOINTS. Se você usar o método de descoberta de serviços por DNS com o tipo de resposta como LOADBALANCER, o proxy Envoy elegerá apenas um único endereço IP para rotear para o serviço upstream. Isso anula o comportamento de detecção de discrepâncias de ejetar um host não íntegro de um conjunto de hosts. Consulte a seção Método de descoberta de serviços para obter mais detalhes sobre o comportamento do proxy Envoy em relação ao tipo de descoberta de serviços.

      • Para Erros do servidor, especifique o número de erros 5xx consecutivos necessários para a ejeção.

      • Para o Intervalo da detecção de discrepância, especifique o intervalo e a unidade de tempo entre a análise de varredura e a ejeção.

      • Para Duração da ejeção básica, especificar o valor básico e a unidade de tempo no qual um host é ejetado.

      • Para Porcentagem de ejeção, especificar a porcentagem máxima de hosts no grupo de balanceamento de carga que pode ser ejetado.

    4. (Opcional) Ativar verificação de integridade: defina as configurações de uma política de verificação de integridade.

      Uma política de verificação de integridade é opcional, mas se você especificar qualquer valor para uma política de integridade, deverá especificar valores para Limite de integridade, Intervalo de verificação de integridade, Protocolo de verificação de integridade, Tempo limite e Limite de integridade inadequada.

      • Em Protocolo de verificação de integridade, escolha um protocolo. Se você selecionar grpc, o serviço deverá estar em conformidade com o Protocolo de verificação de integridade GRPC.

      • Em Health check port (Porta de verificação de integridade), especifique a porta em que a verificação de integridade deve ser executada.

      • Em Healthy threshold (Limite de integridade), especifique o número de verificações de integridade consecutivas bem-sucedidas que deve ocorrer antes de o listener ser declarado íntegro.

      • Em Health check interval (Intervalo de verificação de integridade), especifique o período em milissegundos entre cada execução de verificação de integridade.

      • Em Path (Caminho), especifique o caminho de destino para a solicitação de verificação de integridade. Esse valor é usado somente se o Protocolo de verificação de integridade for http ou http2. O valor é ignorado para outros protocolos.

      • Em Timeout period (Período de tempo limite), especifique tempo de espera ao receber uma resposta da verificação de integridade, em milissegundos.

      • Em Unhealthy threshold (Limite de não integridade), especifique o número de verificações de integridade consecutivas com falha que deve ocorrer antes de o listener ser declarado não íntegro.

    5. (Opcional) Habilitar encerramento do TLS: configure como outros nós virtuais se comunicam com esse nó virtual usando TLS.
      • Em Modo, selecione o modo para o qual você deseja que o TLS seja configurado no receptor.

      • Em Método de certificado, selecione uma das seguintes opções. O certificado deve atender aos requisitos específicos. Para obter mais informações, consulte Requisitos de certificado.

        • Hospedagem do AWS Certificate Manager: selecione um Certificado existente.

        • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo que o Envoy buscará usando o Secret Discovery Service.

        • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados como a Chave privada, no sistema de arquivos em que o proxy Envoy está implantado.

      • (Opcional) Selecione Exigir certificados de cliente e uma das opções abaixo para habilitar a autenticação de TLS mútuo quando um cliente fornecer um certificado. Para saber mais sobre o TLS mútuo, consulte os documentos de Autenticação de TLS mútuo do App Mesh.

        • Envoy Secret Discovery Service (SDS) hosting: digite o nome do segredo que o Envoy buscará usando o Secret Discovery Service.

        • Hospedagem de arquivos local: especifique o caminho para o arquivo da Cadeia de certificados no sistema de arquivos em que o Envoy está implantado.

      • (Opcional) Insira um Nome alternativo do assunto. Para adicionar mais SANs, selecione Adicionar SAN. Os SANs devem estar formatados como FQDN ou URI.

    6. (Opcional) Tempos limite
      nota

      Se você especificar um tempo limite maior que o padrão, certifique-se de configurar um roteador virtual e uma rota com um tempo limite maior que o padrão. No entanto, se você diminuir o tempo limite para um valor menor que o padrão, é opcional atualizar os tempos limite em Rota. Para obter mais informações, consulte Rotas.

      • Tempo limite da solicitação: você pode especificar um tempo limite da solicitação se tiver selecionado grpc, http ou http2 para o Protocolo do receptor. O padrão é 15 segundos. Um valor de 0 desabilita o tempo limite.

      • Duração do tempo ocioso: você pode especificar uma duração do tempo ocioso para qualquer protocolo do receptor. O padrão é 300 segundos.

  12. Escolha Criar nó virtual para concluir.

AWS CLI

Para criar um nó virtual usando a AWS CLI.

Crie um nó virtual que use DNS para descoberta de serviços usando o comando a seguir e um arquivo JSON de entrada (substitua os valores em vermelho pelos seus):

  1. aws appmesh create-virtual-node \ --cli-input-json file://create-virtual-node-dns.json
  2. Conteúdo do exemplo create-virtual-node-dns.json:

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

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

Para obter mais informações sobre como criar um nó virtual com a AWS CLI para App Mesh, consulte o comando create-virtual-node na referência da AWS CLI.

Excluir um nó virtual

nota

Você não pode excluir um nó virtual se ele for especificado como destino em qualquer rota ou como provedor em qualquer serviço virtual.

AWS Management Console
Para excluir um nó virtual usando a AWS Management Console
  1. Abra o console do App Mesh em https://console.aws.amazon.com/appmesh/.

  2. Escolha a malha da qual você deseja excluir um nó virtual. Todas as malhas que você possui e que foram compartilhadas com você estão listadas.

  3. Selecione Virtual nodes (Nós virtuais) no painel de navegação à esquerda.

  4. Na tabela Nós virtuais, escolha o nó virtual que deseja excluir e selecione Excluir. Para excluir um nó virtual, o ID da sua conta deve estar listado nas colunas Proprietário da malha ou Proprietário do recurso do nó virtual.

  5. Na caixa de confirmação, digite delete e selecione Excluir.

AWS CLI
Para excluir um nó virtual usando a AWS CLI
  1. Use o comando a seguir para excluir o nó virtual (substitua os valores em vermelho pelos seus):

    aws appmesh delete-virtual-node \ --mesh-name meshName \ --virtual-node-name nodeName
  2. Resultado do exemplo:

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

Para obter mais informações sobre como excluir um nó virtual com a AWS CLI para App Mesh, consulte o comando delete-virtual-node na referência da AWS CLI.