EC2 - Como rotear o tráfego de saída através de um único IP público

4

Eu tenho 3 servidores da Web (instâncias do ec2) em uma sub-rede pública do vpc e todos eles têm EIPs.

Eu tenho o usual Gateway de Internet com a rota para garantir que essas instâncias possam chamar serviços externos e um balanceador de carga (ELB) girando o tráfego de entrada entre essas instâncias.

O principal problema é que o aplicativo nos servidores se conectará a vários serviços / APIs externos, mas alguns desses serviços exigem a inclusão de IPs. O que fazemos agora é atribuir um EIP a uma instância, acessar o painel de controle do referido serviço, adicionar o novo EIP e continuar ativo, mas estamos atingindo um limite, tanto em números de EIPs disponíveis para nossa conta (sim, Eu sei que pode ser colidido, mas ainda assim) e em quantos IPs são permitidos nesses serviços externos.

Dado que gostaríamos de manter as coisas autoscaláveis, gostaria de pedir ideias sobre como encaminhar todo o tráfego gerado por instância através de um único EIP sem perder o funcionamento interno atual. Uma rota especial fixa para esses serviços não é realmente flexível, a menos que seja usada DNS, principalmente porque não podemos saber antecipadamente todos os seus pools IP.

Li sobre os gateways NAT, mas não tenho certeza se a parte de Load Balacing da arquitetura permanecerá ativa, se os servidores da Web puderem responder a solicitações, etc.

    
por John Smith 26.02.2016 / 12:12

2 respostas

6

Sim, você pode usar um NAT Gateway ou uma instância NAT, em conjunto com um ELB ... e essa é a maneira mais sensata de colocar na lista branca o tráfego de saída iniciado internamente com externo serviços.

Um gateway NAT sempre tem um endereço IP público estático.

You must [...] specify an Elastic IP address to associate with the NAT gateway when you create it.

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html

Essa configuração requer que as instâncias NÃO possuam endereços IP públicos e NÃO estejam em uma sub-rede pública com a rota padrão apontando para o Gateway da Internet. A rota padrão para a sub-rede da instância precisa apontar para o dispositivo NAT, uma vez configurado.

Por sua vez, isso significa que seu ELB não pode estar na mesma sub-rede que as instâncias, pois a sub-rede ELB DEVE ter o Gateway da Internet como sua rota padrão.

O tráfego de resposta das instâncias é direcionado ao endereço IP interno do ELB, portanto, ele não é afetado pela rota padrão da sub-rede das instâncias, portanto, essa configuração não interrompe o tráfego de resposta para solicitações de ELB.

Por mais estranho que pareça a alguns, é a configuração padrão para colocar os ELBs em diferentes sub-redes das instâncias por trás deles. Ao contrário de uma rede convencional em que o roteador pode ser um gargalo, não há consideração de desempenho negativa relacionada ao ELB e suas instâncias balanceadas estão em sub-redes diferentes umas das outras. Toda a rede VPC é uma rede virtual definida por software, portanto, estar em sub-redes diferentes não significa que o tráfego passará por um roteador desnecessário, como isso significaria em uma rede Ethernet física. Todo o tráfego entre as instâncias segue um caminho semelhante por meio da infraestrutura de VPC.

Veja também Por que precisamos de sub-redes privadas no VPC? no Stack Overflow.

    
por 26.02.2016 / 19:13
0

Boas notícias - a Amazon adicionou um novo tipo de balanceador de carga para isso (o balanceador de carga de rede). Você pode atribuir um Endereço IP Elástico a ele e voila - IP estático para o balanceador de carga!

Funciona no protocolo TCP em vez de HTTP, portanto você não pode fazer SSL no balanceador de carga (cada servidor web precisará de certificado) e ele não tem a opção "Stickiness" (mas é muito pegajoso). Além disso, funciona como o balanceador de carga "Aplicativo".

    
por 11.01.2018 / 22:45

Tags