Habilitar ENI trunking en ECS

Cuando usas tareas de ECS con el modo de red awsvpc, cada tarea necesita su propia ENI. Esto puede provocar un cuello de botella si tu instancia EC2 alcanza el límite de interfaces permitidas. Aquí es donde entra en juego ENI Trunking, una funcionalidad que permite escalar horizontalmente tus tareas sin agotar recursos de red. Así pues en este post veremos como habilitar ENI trunking en ECS.

¿Qué es ENI Trunking?

ENI Trunking (trunking de interfaces de red elásticas) permite a ECS usar una sola ENI primaria (trunk ENI) en la instancia EC2 para crear subinterfaces (branch ENIs) para las tareas awsvpc.

Esto mejora:

  • La densidad de tareas por instancia
  • El rendimiento de red
  • La gestión de recursos de red

Requisitos

Para habilitar ENI trunking necesitas:

  • Usar ECS con modo de red awsvpc
  • Instancias EC2 compatibles (por ejemplo, c5, m5, t3, etc.)
  • Agente de ECS actualizado
  • ECS optimizado AMI (Amazon Linux 2 o superior)
  • Que tu cuenta tenga habilitado ENI trunking (esto puede requerir petición a AWS si no está activado por defecto)

Cómo habilitar ENI Trunking

Paso 1: Verifica soporte en la instancia

Consulta si tu instancia es compatible:
https://docs.aws.amazon.com/AmazonECS/latest/userguide/container-instance-eni.html#supported-instance-types


Paso 2: Verifica el estado del trunking

aws ecs list-attributes --target-type container-instance --attribute-name ecs.awsvpc-trunk-id --cluster my-cluster --region region

{
    "attributes": []
}

aws ecs list-account-settings --region my-region

{
    "settings": []
}

Paso 3: Habilita ENI trunking

aws ecs put-account-setting-default --name awsvpcTrunking --value enabled --region my-region
{
    "setting": {
        "principalArn": "arn:aws:iam::0123456789:root",
        "name": "awsvpcTrunking",
        "value": "enabled"
    }
}


aws ecs list-attributes --target-type container-instance --attribute-name ecs.awsvpc-trunk-id --cluster my-cluster --region my-region
{
    "attributes": [
        {
            "targetId": "arn:aws:ecs:eu-west-1:0123456789:container-instance/my-cluster/acb60ee452554dd891e7e840a02fac7c",
            "name": "ecs.awsvpc-trunk-id",
            "value": "e18d8345-0883-4dc2-beb0-3e85dc23d18e"
        }
    ]
}

aws ecs list-account-settings --region my-region
{
    "settings": [
        {
            "principalArn": "arn:aws:iam::0123456789:role/environment/role",
            "name": "awsvpcTrunking",
            "value": "enabled"
        }
    ]
}

De esta manera y si has seguido los requisitos previos, etc, deberías poder tener más ENIs por instancia que previamente. En este post hemos repasado que requisitos hacen falta y que pasos hemos de seguir para habilitar el ENI trunking en ECS.

Recursos

Leave a Reply

Your email address will not be published. Required fields are marked *