HA для шлюзов NAT / Internet в среде Elastic Beanstalk с несколькими AZ/ подсетями
У меня есть вопрос, касающийся шлюзов NAT и интернета, привязанных к эластичному бобовому стеблю. Мой конфиг следующий:
- 3 общедоступных подсети в разных AZ
- 1 таблица маршрутов с 3 общедоступными подсетями и интернет-шлюзом
- 3 частных подсети в разных AZ
- 1 таблица маршрутов с 3 частными подсетями и ничем (пока)
- ELB настроил с 3 подсетями в каждом AZ и 3 частными подсетями в каждом AZ для экземпляров
Теперь, если я создаю шлюз NAT для этих 3 частных подсетей, это означает, что мне нужно создать один шлюз для каждой из них в разных AZ и 3 разных Elastic IP? Я думаю, что что-то упустил, но я не вижу этого, если эта конфигурация не имеет смысла.
1 ответ
TL;DR
Это твой выбор. Технически один экземпляр NAT может обслуживать все частные подсети в одном VPC.
Немного дольше:
Сначала мы различаем NAT-экземпляр (экземпляр EC2, настроенный как NAT GW, управляемый конечным пользователем) и NAT-шлюз (NAT-экземпляр, управляемый AWS).
Если это NAT-инстанс, то человеку, реализующему его, нужно гораздо больше понять, как его реализовать. Ответа на этот вопрос не хватит для этого.
Если это NAT GW, то AWS сообщает: "Каждый шлюз NAT создается в определенной зоне доступности и реализуется с избыточностью в этой зоне". Что я интерпретирую как: Пока весь AZ не выключен, AWS гарантирует HA для NATGW (возможно, с прерыванием или ухудшением обслуживания).
Технически у вас должно быть хорошо с одним NAT GW в любой из вашей общедоступной подсети, если таблица маршрутизации всех 3 частных подсетей обеспечивает маршрут к этому NATGW (и, как я предполагаю, подразумевается, что security-group / acl настроены на использование этого маршрута). Вы, конечно, платите за использование полосы пропускания между AZ, благодаря этой конфигурации.
Но очевидно, что это не отказоустойчиво в случае, если AZ выходит из строя.
Если вы не хотите, чтобы все ваши частные подсети теряли подключение к Интернету, когда NAT GW не работает, вам нужно иметь больше NAT GW. Решение о том, иметь ли больше, чем один, и если да, то сколько, я полагаю, от случая к случаю.
Если у вас есть 2 NAT GW, то для того, чтобы произошло переключение при сбое, вам нужно настроить мониторинг и переключение при сбое, чтобы гарантировать, что если AZ отключается, все частные подсети (которые обслуживались NAT GW в этом AZ) начинают отправлять трафик на другой NAT GW. Хорошее объяснение здесь. Это немного работы AFAIK.
Наконец, связь между EIP и NAT GW является взаимно-однозначной. Так что да, вам придется создать один EIP для каждого NAT GW, который вы создаете.