As setas no diagrama indicam apenas a direção do estabelecimento da conexão - não o fluxo de tráfego.
Sim, o tráfego de retorno volta pelo ELB.
Mas, não é um NAT com estado - é um proxy de conexão TCP. As máquinas ELB aceitam conexões TCP nas portas de atendimento configuradas, encerrando a sessão SSL, se houver, e estabelecem uma nova conexão TCP com o servidor back-end. Se o ouvinte estiver configurado para HTTP, o ELB operará em um modo com reconhecimento de carga útil, analisando, registrando e encaminhando solicitações HTTP para o back-end, caso contrário, ele é independente da carga, estabelecendo uma nova conexão TCP 1: 1 para o back-end. para cada conexão de entrada e "amarrando os pipes" (sem reconhecimento ou modificação no nível de HTTP).
De qualquer maneira, o endereço de origem da conexão de entrada para o seu aplicativo será o do nó ELB, não o cliente original. É assim que o tráfego de resposta retorna ao ELB para retornar ao cliente.
No modo http, o ELB adiciona (ou anexa a) o X-Forwarded-For
cabeçalho para que seu aplicativo possa identificar o IP do cliente original, bem como X-Forwarded-Proto: [ http | https ]
para indicar se a conexão do cliente usa SSL e X-Forwarded-Port
para indicar a porta front-end.
Atualização: o item acima se refere a um tipo de balanceador de carga que agora é conhecido como "ELB Classic" ou ELB / 1.0 (encontrado na cadeia de agentes do usuário que ele envia com verificações de integridade HTTP).
O balanceador de camada 7 mais recente, o Application Load Balancer ou ELB / 2.0 opera de maneira semelhante, com relação ao fluxo de tráfego. O recurso Camada 4 (TCP "transparente") é removido do ALB e os recursos da camada 7 aprimorados significativamente.
O mais novo tipo de balanceador de carga, o Network Load Balancer, é um balanceador de Camada 3. Ao contrário dos outros dois, ele se comporta de maneira semelhante ao NAT dinâmico, manipulando apenas conexões de entrada (de origem externa), mapeando source-addr + port através do EIP-addr + port para instance-private-ip: adde + port - com o EIP vinculadas ao "balanceador" - e, ao contrário dos outros dois tipos de balanceadores, as instâncias precisam estar em sub-redes públicas e usar seus próprios IPs públicos para isso.
Conceitualmente falando, o Network Load Balancer parece realmente modificar o comportamento do Gateway da Internet - que é, por si só, um objeto lógico que não pode ser desativado, substituído ou sofrer uma falha em qualquer sentido significativo. Isso contrasta com ELB e ALB, que realmente operam em instâncias "ocultas" do EC2. O NLB opera na infraestrutura de rede, por si só, sob todas as aparências.