Стрелки на диаграмме указывают только направление установления соединения, а не поток трафика.
Да, обратный трафик возвращается через ELB.
Но это не NAT с отслеживанием состояния - это прокси TCP-соединения. Машины ELB принимают TCP-соединения через настроенные порты прослушивания, завершают сеанс SSL, если он настроен таким образом, и устанавливают новое TCP-соединение с внутренним сервером. Если прослушиватель настроен на HTTP, ELB работает в режиме анализа с учетом полезной нагрузки, регистрации и пересылки HTTP-запросов на сервер, в противном случае он не зависит от полезной нагрузки, устанавливая новое соединение TCP 1: 1 с серверной частью. для каждого входящего соединения и «связывания каналов» (без учета или модификации уровня HTTP).
В любом случае, исходный адрес входящего соединения с вашим приложением будет адресом узла ELB, а не исходного клиента. Вот как ответный трафик возвращается в ELB для возврата клиенту.
В режиме http ELB добавляет (или добавляет) X-Forwarded-For
заголовок, чтобы ваше приложение могло идентифицировать исходный клиентский IP-адрес, а также X-Forwarded-Proto: [ http | https ]
указать, использует ли клиентское соединение SSL и X-Forwarded-Port
указать интерфейсный порт.
Обновление: приведенное выше относится к типу балансировщика нагрузки, который теперь известен как «ELB Classic» или ELB / 1.0 (находится в строке агента пользователя, которую он отправляет с проверками работоспособности HTTP).
Более новый балансировщик уровня 7, Application Load Balancer или ELB / 2.0 работает аналогично в отношении потока трафика. Возможность Уровня 4 («прозрачный» TCP) удалена из ALB, а функции уровня 7 значительно улучшены.
Балансировщик нагрузки новейшего типа - сетевой балансировщик нагрузки - это балансировщик уровня 3. В отличие от двух других, он ведет себя очень похоже на динамический NAT, обрабатывая только входящие (внешние) подключения, сопоставляя порт source-addr + через порт EIP-addr + с портом instance-private-ip: adde + - с помощью EIP привязанный к «балансировщику» - и в отличие от двух других типов балансировщиков, экземпляры должны находиться в общедоступных подсетях и использовать для этого свои публичные IP-адреса.
Концептуально говоря, балансировщик сетевой нагрузки, по-видимому, фактически изменяет поведение интернет-шлюза, который сам по себе является логическим объектом, который нельзя отключить, заменить или испытать сбой в каком-либо значимом смысле. Это в отличие от ELB и ALB, которые фактически работают на «скрытых» экземплярах EC2. NLB, судя по всему, работает с сетевой инфраструктурой.