Лучшая практика AWS: у меня будет шлюз NAT в каждом AZ?

Поскольку у шлюза NAT есть избыточность только в пределах одного AZ, если я хочу иметь открытую / частную пару подсетей в каждом AZ с целью резервирования нескольких AZ, у меня должен быть шлюз NAT в каждом AZ, не так ли?

В противном случае, если у меня есть только один NAT, если AZ отключается, все подсети во всех AZ отключаются, что наносит ущерб цели развертывания нескольких AZ.

Я прав или нет?

4 ответа

Решение

Да, в идеале вы должны иметь один шлюз NAT на зону доступности (AZ).

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

Из официального документа AWS по шлюзу NAT:

Если у вас есть ресурсы в нескольких зонах доступности и они используют один шлюз NAT, в случае, если зона доступности шлюза NAT не работает, ресурсы в других зонах доступности теряют доступ в Интернет. Чтобы создать независимую от зоны доступности архитектуру, создайте шлюз NAT. в каждой зоне доступности и настройте маршрутизацию, чтобы ресурсы использовали шлюз NAT в одной и той же зоне доступности.

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

Описанная сетевая архитектура, состоящая из общедоступных подсетей, частных подсетей и шлюзов HA NAT.

Соображения

  • Если минимизация затрат имеет важное значение, базовые затраты в размере 32,00 долларов США в месяц на шлюз NAT могут стать препятствием. При использовании трех зон доступности вы будете платить 96,00 долларов в месяц за три шлюза NAT.
  • Шлюз NAT также увеличивает затраты на исходящий трафик. Вы должны заплатить надбавку в размере 0,045 доллара США за гигабайт, передаваемый из частной подсети в Интернет. Это увеличивает стоимость исходящего трафика на 50%.

Дополнительные очки!

...

 azs             = ["us-east-1a", "us-east-1b", "us-east-1c"]
 private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
 public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

 enable_nat_gateway = true
 single_nat_gateway = false # to get 1 NGW x AZ

...


Ссылка: https://cloudonaut.io/advanved-aws-networking-pitfalls-that-you-should-avoid/

Это вопрос 3-х факторов:

  1. Требования и последствия резервирования.
    • Если в определенной зоне доступности произойдет сбой в работе службы NAT, насколько сильное воздействие может выдержать ваше приложение?
    • Какова вероятность того, что сбой в работе более чем одной зоны доступности окажется чем-то иным, чем сбой, затронувший весь регион?
    • Резервные NATGW не полностью изолируют вас от перебоев в обслуживании. Когда NATGW становится недоступным, все соединения через этот NATGW будут прекращены. Аналогичным образом, когда NATGW вернется, соединения будут снова разорваны, поскольку базовая маршрутизация изменится обратно.
  2. Стоимость за NATGW.
    • Каждый NATGW в настоящее время стоит около 32,40 долларов США в месяц.
  3. Стоимость полосы пропускания внутри зоны доступности.
    • Если вам необходимо вывести трафик через NATGW, который не находится в той же зоне доступности, вы понесете затраты на пропускную способность внутри зоны доступности в размере 0,01 доллара США/ГБ в дополнение к пропускной способности NATGW в размере 0,045 доллара США/ГБ.

Зависит от вашего варианта использования.

Прежде чем создавать NAT GTW в каждой зоне доступности, я бы рассмотрел конкретный вариант использования и объем используемого трафика.

Я предлагаю прочитать этот замечательный ответ SO :

Экземпляры Amazon EC2 в частных подсетях могут использовать шлюз NAT следующим образом:

  • NAT Gateway запускается в публичной подсети в том же VPC.
  • Таблица маршрутов для частных подсетей требует дополнительной записи, которая направляет весь интернет-трафик (0.0.0.0/0) на шлюз NAT.

...


(*) Основной и тривиальный вариант использования заключается в том, что для среды DEV вам не нужны 3 NAT GTW. Можно даже запускать в одной зоне доступности, потому что доступность более актуальна для Production (и для Staging, если решено, что они должны быть зеркалом друг друга).

Другие вопросы по тегам