Получил быстрый вопрос, который может показаться совершенно глупым, но сейчас раннее утро. Итак, у меня есть стандартный AWS VPC с экземпляром ELB, NAT и 2 экземплярами EC2 для кода приложения. Судя по изображению ниже, интернет-шлюз передает трафик экземплярам ELB и NAT. У меня вопрос: почему экземпляр NAT не находится впереди или позади ELB? похоже, что единственным узким местом в этом VPC может быть экземпляр NAT, если весь трафик проходит через него.
Экземпляр AWS nat и горлышко бутылки elb
Ответы (2)
Сервер NAT (преобразование сетевых адресов) используется для обеспечения исходящего подключения к Интернету для экземпляров Amazon EC2 в частной подсети.
Входящий трафик будет поступать через балансировщики нагрузки, и любые ответы на этот трафик также будут выходить через балансировщики нагрузки. Служба эластичной балансировки нагрузки автоматически масштабируется в зависимости от объема трафика (за передаваемый трафик также взимается плата).
Если экземпляр EC2 в частной подсети хочет инициировать подключение к Интернету (например, для загрузки обновлений или для связи с Amazon S3), он не может отправлять трафик «за пределы» балансировщиков нагрузки. Вместо этого подсеть будет настроена на маршрутизацию трафика на сервер NAT, который действует как прокси для запроса данных из Интернета.
Возможно, сервер NAT может стать узким местом. Если это так, измените экземпляр, чтобы использовать более крупный тип экземпляра - это не только увеличивает ЦП и ОЗУ, но и увеличивает пропускную способность сети.
В некоторых случаях люди могут также использовать NAT-сервер для входящего трафика - либо в качестве окна перехода для административных целей (для входа в экземпляр в частной подсети). или перенаправить определенные порты на частный сервер (через перенаправление портов). Однако лучше всего было бы разделить эти функции на другой экземпляр в целях безопасности и управления.
Дополнительная информация: С момента написания этого ответа AWS представила Управляемый шлюз NAT с возможностью автоматического масштабирования. Он создается в одной зоне доступности, поэтому для обеспечения высокой доступности может потребоваться запустить ее в двух зонах доступности.
Я не уверен, как это работает, если loadbalacer завершает работу на уровне APP, то для экземпляра, запущенного в этой подсети, будет настроена таблица маршрутов с IGW, а не с экземпляром NAT, which raises a question how to make outbound traffic on the public network which is configured over a loadbalalncer