Назад | Перейти на главную страницу

Статический IP-адрес для исходящего трафика от AWS autoscaling group

У меня будет несколько экземпляров EC2 в группе автомасштабирования Elastic Beanstalk в подсети по умолчанию в VPC. Приложение на этих экземплярах EC2 должно подключиться к сторонней службе, которая использует белый список IP-адресов для разрешения доступа. Поэтому мне нужен один или несколько статических IP-адресов, которые я могу передать этому поставщику услуг, чтобы их можно было добавить в белый список. Насколько я понимаю, единственный способ получить статический IP-адрес - это получить эластичный IP-адрес. И я могу связать эластичный IP-адрес только с одним экземпляром EC2 за раз - я не могу связать его со всей своей подсетью или интернет-шлюзом (это правильно?). Так нужен ли мне эластичный IP-адрес для каждого экземпляра EC2, чтобы каждый экземпляр можно было отдельно добавить в белый список? Как это будет работать, если автомасштабирование добавит еще один экземпляр? Должен ли я иметь один экземпляр EC2 с эластичным IP-адресом и направлять весь исходящий трафик через этот экземпляр? Если да, то нужен ли этот экземпляр исключительно для этой цели или он может быть одним из экземпляров, на которых запущено мое приложение?

Вам нужен NAT. Эта конфигурация обычно используется для поддержки частных подсетей в VPC, есть довольно подробное руководство. Вот. Как только ваш VPC настроен на использование экземпляра NAT, весь исходящий трафик будет отнесен к EIP экземпляра NAT.

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

Технически вы, вероятно, могли бы, но это плохая идея:

  • Изолированные роли - хорошая безопасность.
  • Вы хотите, чтобы ваши серверы приложений имели похожие или идентичные профили нагрузки. Если один экземпляр имеет дополнительную 10% нагрузку из-за NAT, вам придется преждевременно масштабировать, когда вы достигнете пределов этого экземпляра. Ситуация будет ухудшаться по мере того, как NAT становится более загруженным, когда в ваш кластер добавляется больше экземпляров.
  • Вы хотите, чтобы ваши серверы приложений были идентичными и недолговечными, чтобы их можно было отключать и / или заменять при возникновении проблем или необходимости масштабирования. Наличие одного сервера приложений, отличного от остальных, было бы большой головной болью.

Вы мощь можно обойтись без этого, если ваши экземпляры контейнеризированы, но, вероятно, это не самая лучшая идея.

Также имейте в виду, что ваш экземпляр NAT может быть единственной точкой отказа, поэтому вы можете подумать об избыточности.

Насколько я понимаю, это старая ветка - для тех, у кого сейчас аналогичный вариант использования, AWS нат-шлюз было бы лучшим решением.

У меня недостаточно репутации, чтобы комментировать приведенные выше ответы, но я хотел добавить некоторую информацию, которая вам понадобится, если для этого используется шлюз NAT. При создании шлюза NAT вы выбираете подсеть и эластичный IP-адрес.

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

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