#amazon-web-services #terraform #amazon-ecs
#amazon-веб-сервисы #terraform #amazon-ecs
Вопрос:
Я запускаю задачи ECS (используя сеть awsvpc) на экземпляре сервера EC2 «t3.small», но сталкиваюсь RESOURCE:ENI
с ошибками при попытке выполнить более 2 задач, описанных здесь как:
При ошибках RESOURCE: ENI в вашем кластере отсутствуют доступные точки подключения к гибкому сетевому интерфейсу, которые требуются для задач, использующих сетевой режим awsvpc. Экземпляры Amazon EC2 имеют ограничение на количество сетевых интерфейсов, которые могут быть к ним подключены, и основной сетевой интерфейс считается одним. Дополнительные сведения о том, сколько сетевых интерфейсов поддерживается для каждого типа экземпляра, см. В разделе IP-адреса на сетевой интерфейс для каждого типа экземпляра в руководстве пользователя Amazon EC2 для экземпляров Linux.
t3.небольшие типы экземпляров документированы как поддерживающие 4 частных IPv4-адреса на интерфейс:
Мой экземпляр EC2 имеет общедоступный IP-адрес (в то время как мои задачи ECS имеют частные IP-адреса), что, я думаю, объясняет, почему я могу запускать только 2 задачи, а не 3. (Amazon заявляет, что основной сетевой интерфейс считается единицей.)
Однако «Частные адреса Ipv4 для каждого интерфейса«, по-видимому, указывают на то, что, назначив другой сетевой интерфейс моему экземпляру EC2, я мог бы разрешить выполнение еще 4 задач ECS до появления RESOURCE:ENI
ошибки — но когда я это делаю, я могу запустить только 1 задачу! Дополнительный интерфейс, по-видимому, использует одну из точек подключения эластичного сетевого интерфейса.
Это кажется неправильным. Я относительно новичок в docker и ECS, но ограничение в 2 или 3 задачи / контейнера для экземпляра EC2 t3.small кажется низким. Я подумал, что хорошей практикой является использование множества небольших контейнеров, а не нескольких больших.
Мои единственные варианты — использовать более крупные экземпляры или переключиться на мостовую сеть (хотя Amazon рекомендует awsvpc), или я что-то упускаю?
Обновлено, чтобы добавить: даже при связывании моего сервера EC2 с частными подсетями и назначении только его единственного сетевого интерфейса по умолчанию, я по-прежнему, по-видимому, могу запускать только 2 задачи, прежде чем нажимать RESOURCE: ENI.
Ответ №1:
Я неправильно понял документацию Amazon. «Частные адреса Ipv4 для каждого интерфейса» не связаны с ограничением ENI для экземпляра EC2.
aws ec2 describe-instance-types --filters Name=instance-type,Values=t3.* --query "InstanceTypes[].{Type: InstanceType, MaxENI: N
etworkInfo.MaximumNetworkInterfaces, IPv4addr: NetworkInfo.Ipv4AddressesPerInterface}" --output table
--------------------------------------
| DescribeInstanceTypes |
---------- ---------- --------------
| IPv4addr | MaxENI | Type |
---------- ---------- --------------
| 12 | 3 | t3.large |
| 15 | 4 | t3.2xlarge |
| 6 | 3 | t3.medium |
| 15 | 4 | t3.xlarge |
| 4 | 3 | t3.small |
| 2 | 2 | t3.micro |
| 2 | 2 | t3.nano |
---------- ---------- --------------
Здесь пределом является столбец MaxENI (или «Максимальное количество сетевых интерфейсов»).
Другими словами, мой экземпляр t3.small (и экземпляры t3.medium и t3.large, которые я впоследствии тестировал) имеют максимальное значение 3, поэтому могут запускать только 2 контейнера с сетью awsvpc. Экземпляр t3.xlarge (4vCPU, 16 ГБ ОЗУ) может запускать 3 контейнера (также подтверждено).
У Amazon есть функция, называемая эластичным соединением сетевого интерфейса, которая может повысить этот предел, описанный здесь . Во вводном абзаце говорится:
Например, по умолчанию к экземпляру c5.large может быть подключено до трех ENI. Основной сетевой интерфейс для экземпляра считается одним, поэтому к экземпляру можно подключить еще два ENI. Поскольку для каждой задачи, использующей сетевой режим awsvpc, требуется ENI, вы обычно можете запустить только две такие задачи для этого типа экземпляра.
… именно моя проблема. Страница продолжается:
Amazon ECS поддерживает запуск экземпляров контейнеров с повышенной плотностью ENI с использованием поддерживаемых типов экземпляров Amazon EC2. При использовании этих типов экземпляров и настройке учетной записи awsvpcTrunking дополнительные ENI доступны для вновь запускаемых экземпляров контейнера. Эта конфигурация позволяет размещать больше задач с использованием сетевого режима awsvpc для каждого экземпляра контейнера. При использовании этой функции для экземпляра c5.large с включенной awsvpcTrunking увеличен лимит ENI на двенадцать.
Комментарии:
1. Не забудьте использовать тип экземпляра EC2, который поддерживает транкинг, как указано в нижней части docs.aws.amazon.com/AmazonECS/latest/developerguide /. …