Aumento das interfaces de rede de instâncias de contêiner do Linux no Amazon ECS - Amazon Elastic Container Service

Aumento das interfaces de rede de instâncias de contêiner do Linux no Amazon ECS

nota

Esse recurso não está disponível no Fargate.

Cada tarefa do Amazon ECS que usa o modo de rede awsvpc recebe a própria interface de rede elástica (ENI), que está anexada à instância de contêiner que a hospeda. Existe um limite padrão para o número de interfaces de rede que podem ser anexadas a uma instância do Amazon EC2, e a interface de rede primária conta como uma delas. Por exemplo, por padrão, uma instância c5.large pode ter até três ENIs associadas a ela. A interface de rede principal para a instância conta como uma, por isso você pode associar mais duas ENIs à instância. Como cada tarefa que usa o modo de rede awsvpc exige uma ENI, em geral, você pode executar somente duas dessas tarefas nesse tipo de instância.

O Amazon ECS oferece suporte à execução de instâncias de contêiner com maior densidade de ENI usando tipos de instâncias do Amazon EC2 compatíveis. Quando você usa esses tipos de instância e ativa a configuração da conta awsvpcTrunking, ENIs adicionais ficam disponíveis em instâncias de contêiner iniciadas recentemente. Essa configuração permite que você coloque mais tarefas em cada instância de contêiner. Para obter mais informações sobre a configuração da conta awsvpcTrunking, consulte Acesso aos recursos do Amazon ECS com as configurações de conta.

Por exemplo, uma instância c5.large com awsvpcTrunking tem um limite de ENI aumentado para doze. A instância de contêiner terá a interface de rede prmária e o Amazon ECS cria e anexa uma interface de rede "tronco" à instância de contêiner. Portanto, essa configuração permite que você inicie 10 tarefas na instância de contêiner, em vez das duas tarefas atuais.

A interface de rede tronco é totalmente gerenciada pelo Amazon ECS e é excluída quando você encerra ou cancela o registro da instância de contêiner do cluster. Para ter mais informações, consulte Opções de redes de tarefas do Amazon ECS para o tipo de inicialização do EC2.

Considerações

Considere as informações apresentadas a seguir ao usar o recurso de entroncamento de ENI.

  • Somente variantes do Linux da AMI otimizada para o Amazon ECS ou outras variantes do Amazon Linux com a versão 1.28.1 ou posterior do agente de contêiner e a versão 1.28.1-2 ou posterior do pacote ecs-init oferecem suporte a limites maiores de ENI. Se você usar a variante do Linux mais recente da AMI otimizada para Amazon ECS, esses requisitos serão atendidos. Os contêineres do Windows não são suportados no momento.

  • Somente novas instâncias do Amazon EC2 executadas depois de habilitar awsvpcTrunking recebem o aumento de limites de ENI e a interface de rede de truncamento. Instâncias executadas anteriormente não recebem esses recursos, independentemente das ações executadas.

  • As instâncias do Amazon EC2 devem ter solicitações de DNS de IPv4 baseadas em recursos desativadas. Para desabilitar essa opção, certifique-se de que a opção Enable resource-based IPV4 (A record) DNS requests (Habilitar solicitações de DNS de IPV4 (registro A) baseadas em recursos) esteja desmarcada ao criar uma nova instância usando o console do Amazon EC2. Para desabilitar essa opção usando o AWS CLI, use o comando a seguir.

    aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
  • As instâncias do Amazon EC2 em sub-redes compartilhadas não são compatíveis. Elas falharão ao registrar em um cluster se forem usadas.

  • As tarefas do Amazon ECS devem usar o modo de rede awsvpc e o tipo de inicialização do EC2. As tarefas que usam o tipo de execução do Fargate sempre recebem uma ENI dedicada, independentemente de quantas são executadas. Por isso, esse recurso não é necessário.

  • As tarefas do Amazon ECS devem ser inicializadas na mesma Amazon VPC que a instância de contêiner. Suas tarefas falharão ao iniciar com um erro de atributo se não estiverem na mesma VPC.

  • Ao executar uma nova instância de contêiner, a instância muda para o status REGISTERING enquanto a interface de rede elástica tronco é provisionada para a instância. Se ocorrer uma falha no registro, a instância mudará para o status REGISTRATION_FAILED. É possível solucionar problemas de um registro com falha descrevendo a instância de contêiner para visualizar o campo statusReason, que descreve o motivo da falha. Em seguida, o registro da instância de contêiner pode ser cancelado manualmente ou encerrado. Depois que o registro da instância de contêiner for cancelado ou encerrado com êxito, o Amazon ECS exclui a ENI de truncamento.

    nota

    O Amazon ECS emite eventos de alteração de estado de instância de contêiner que você pode monitorar para instâncias que fazem a transição para um estado REGISTRATION_FAILED. Para ter mais informações, consulte Eventos de alteração no estado da instância de contêiner do Amazon ECS.

  • Assim que a instância de contêiner é encerrada, ela muda para o status DEREGISTERING enquanto a interface de rede elástica tronco é desprovisionada. Depois, a instância muda para o status INACTIVE.

  • Se uma instância de contêiner em uma sub-rede pública com o aumento dos limites de ENI for encerrada e depois reiniciada, a instância perderá o endereço IP público e o agente de contêiner perderá a conexão.

  • Quando você habilita awsvpcTrunking, as instâncias de contêiner recebem uma ENI adicional que usa o grupo de segurança padrão da VPC e é gerenciada pelo Amazon ECS.

Pré-requisitos

Antes de executar uma instância de contêiner com limites de ENI maiores, os pré-requisitos a seguir devem ser atendidos.

  • A função vinculada ao serviço para Amazon ECS deve ser criada. A função vinculada ao serviço do Amazon ECS fornece ao Amazon ECS as permissões para fazer chamadas a outros serviços da AWS em seu nome. Essa função será automaticamente criada quando você criar um cluster ou se criar ou atualizar um serviço no AWS Management Console. Para ter mais informações, consulte Uso de perfis vinculados ao serviço para o Amazon ECS. Também é possível criar a função vinculada ao serviço com o comando da AWS CLI a seguir.

    aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
  • Sua conta ou perfil do IAM da instância de contêiner deve habilitar a configuração de conta awsvpcTrunking. Recomendamos que você crie dois perfis de instância de contêiner (ecsInstanceRole). Em seguida, você pode habilitar a configuração da conta awsvpcTrunking para um perfil e usá-lo em tarefas que exigem truncamento de ENI. Para obter informações sobre o perfil da instância de contêiner, consulte Função do IAM de instância de contêiner do Amazon ECS.

Assim que os pré-requisitos forem atendidos, é possível executar uma nova instância de contêiner usando um dos tipos de instância do Amazon EC2 compatíveis, e a instância terá os limites de ENI maiores. Para obter uma lista dos tipos de instâncias compatíveis, consulte Instâncias com suporte para o aumento de interfaces de rede de contêineres do Amazon ECS. A instância de contêiner deve ter a versão 1.28.1 ou posterior do agente de contêiner e a versão 1.28.1-2 ou posterior do pacote ecs-init. Se você usar a variante do Linux mais recente da AMI otimizada para Amazon ECS, esses requisitos serão atendidos. Para ter mais informações, consulte Iniciar uma instância de contêiner do Linux do Amazon ECS.

Importante

As instâncias do Amazon EC2 devem ter solicitações de DNS de IPv4 baseadas em recursos desativadas. Para desabilitar essa opção, certifique-se de que a opção Enable resource-based IPV4 (A record) DNS requests (Habilitar solicitações de DNS de IPV4 (registro A) baseadas em recursos) esteja desmarcada ao criar uma nova instância usando o console do Amazon EC2. Para desabilitar essa opção usando o AWS CLI, use o comando a seguir.

aws ec2 modify-private-dns-name-options --instance-id i-xxxxxxx --no-enable-resource-name-dns-a-record --no-dry-run
Para visualizar as instâncias de contêiner com limites de ENI maiores com a AWS CLI

Cada instância de contêiner tem uma interface de rede padrão, conhecida como interface de rede tronco. Use o comando a seguir para listar as instâncias de contêiner com limites maiores de ENI consultando o atributo ecs.awsvpc-trunk-id, que indica a existência de uma interface de rede de truncamento.

  • list-attributes (AWS CLI)

    aws ecs list-attributes \ --target-type container-instance \ --attribute-name ecs.awsvpc-trunk-id \ --cluster cluster_name \ --region us-east-1
  • Get-ECSAttributeList (AWS Tools for Windows PowerShell)

    Get-ECSAttributeList -TargetType container-instance -AttributeName ecs.awsvpc-trunk-id -Region us-east-1