Поиск по сайту:

Что такое эластичные сетевые интерфейсы AWS (ENI) и как их использовать?


По сути, ENI — это виртуальные сетевые карты, которые вы можете подключить к своим инстансам EC2. Они используются для обеспечения сетевого подключения для ваших экземпляров, а наличие более одного из них, подключенных к вашему экземпляру, позволяет ему взаимодействовать в двух разных подсетях.

Что такое эластичные сетевые интерфейсы?

Вы уже используете их, если работаете на EC2 — интерфейс по умолчанию, eth0, подключен к ENI, созданному при запуске экземпляра, и используется для обработки всего отправляемого и получено от экземпляра.

Однако вы не ограничены только одним сетевым интерфейсом — подключение вторичного сетевого интерфейса позволяет подключить ваш экземпляр EC2 к двум сетям одновременно, что может быть очень полезно при проектировании сетевой архитектуры. Вы можете использовать их для размещения балансировщиков нагрузки, прокси-серверов и серверов NAT в экземпляре EC2, перенаправляя трафик из одной подсети в другую.

У ENI есть группы безопасности, как и у экземпляров EC2, которые действуют как встроенный брандмауэр. Вы можете использовать их вместо брандмауэра Linux, такого как iptables, для управления трафиком между подсетями.

Распространенным вариантом использования ENI является создание сетей управления. Это позволяет вам иметь общедоступные приложения, такие как веб-серверы, в общедоступной подсети, но заблокировать доступ SSH к частной подсети на дополнительном сетевом интерфейсе. В этом сценарии вы должны подключиться с помощью VPN к частной подсети управления, а затем администрировать свои серверы как обычно.

На этой диаграмме подсеть слева — это общедоступная подсеть, которая связывается с Интернетом через Интернет-шлюз для VPC. Подсеть справа — это частная подсеть управления, доступ к которой в этом примере может получить только шлюз AWS Direct Connect, который позволяет локальной сети выполнять аутентификацию и просто расширяет эту сеть в облако. Вы также можете использовать AWS Client VPN, который будет запускать VPN-сервер, доступ к которому можно получить с помощью учетных данных закрытого ключа.

ENI также часто используются в качестве основных сетевых интерфейсов для контейнеров Docker, запускаемых на ECS с помощью Fargate. Это позволяет задачам Fargate обрабатывать сложные сети, устанавливать брандмауэры с помощью групп безопасности и запускать их в частные подсети.

Согласно AWS, ENI имеют следующие атрибуты:

  • Основной частный IPv4-адрес из диапазона IPv4-адресов вашего VPC.
  • Один или несколько дополнительных частных IPv4-адресов из диапазона IPv4-адресов вашего VPC
  • Один эластичный IP-адрес (IPv4) на частный IPv4-адрес
  • Один общедоступный IPv4-адрес
  • Один или несколько адресов IPv6
  • Одна или несколько групп безопасности
  • MAC-адрес
  • Флажок проверки источника/назначения
  • Описание

ENI можно использовать совершенно бесплатно, хотя они не освобождаются от стандартной платы за передачу данных AWS.

Внедрение экономичного аварийного переключения с помощью ENI

Поскольку связь ENI может назначаться динамически, они обычно используются для реализации отказоустойчивости при проектировании сети. Если вы используете службу, требующую высокой доступности, вы можете запустить два сервера: основной сервер и резервный сервер. Если основной сервер по какой-либо причине выходит из строя, служба может быть переключена на резервный сервер.

ENI могут легко реализовать этот шаблон — просто запустите два сервера, создайте вторичный экземпляр ENI для использования в качестве коммутатора и свяжите его с первичным сервером, опционально с гибким IP-адресом. Всякий раз, когда вам нужно переключиться на резервный экземпляр, вам просто нужно переключить ENI (хотя и вручную или с помощью сценария).

Однако ENI — не лучший способ сделать это в экосистеме AWS. AWS поддерживает автоматическое масштабирование, которое можно использовать для достижения того же эффекта более экономичным способом. Вместо того, чтобы доплачивать за избыточность, вы бы использовали множество небольших серверов в автомасштабируемом парке. Если один из экземпляров выходит из строя, это не имеет большого значения. Новый сервер можно быстро запустить, чтобы справиться с падением трафика.

Хотя вручную переключить ENI на резервный экземпляр несложно, автоматизировать процесс аварийного переключения намного сложнее. Вам нужно будет настроить оповещение CloudWatch на основном экземпляре, чтобы оно срабатывало, когда экземпляр выходит из строя (возможно, отправляя вам сообщение в процессе), подписаться на него в очереди сообщений SNS и запускать функцию Lambda, которая будет запускаться с этого экземпляра. поставить в очередь и обрабатывать процесс отсоединения и повторного подключения с помощью AWS SDK. Это выполнимо, но мы настоятельно рекомендуем изучить отказоустойчивость Route 53 DNS, а не это.

Если вы хотите автоматизировать этот процесс, вы можете следовать этому руководству от AWS о том, как связать сигнал тревоги CloudWatch с Lambda.