Como obter um IP estático para uma instância do EC? Ou como usar

1

Estou apenas configurando nosso aplicativo Rails no Amazon AWS. Temos duas instâncias do EC2, uma para o aplicativo Rails e a segunda para o Redis. E então o Amazon RDS para MySQL.

Quando conecto nosso aplicativo Rails ao Redis, preciso definir o URL do Redis, que contém o endereço IP. No entanto, se eu reiniciar a instância Redis, seu endereço IP será alterado e o IP da URL Redis que eu inseri no aplicativo Rails para Redis não funcionará (porque depois de reiniciar a instância Redis, foi gerado um novo IP).

Como lidar com esse comportamento? Como evitar "perder" a instância do EC2 ao reiniciá-lo? O mesmo vale para o Amazon RDS - é assim que eu configuro o host em database.yml :

  host: myapp-production.cg4mxcg62ca0.us-west-2.rds.amazonaws.com

Obrigado antecipadamente.

    
por user984621 30.03.2016 / 22:49

1 resposta

1

Questão 1:

Os endereços IP elásticos não devem ser usados para preservar o endereço de um servidor "back-end". Existem 2 motivos:

  1. Normalmente, você não deseja que os servidores de backend sejam expostos à Internet, e os endereços IP elásticos só funcionam da Internet em sua instância do EC2.
  2. Se você se conectar de uma instância do EC2 a outra do EC2 pelo endereço IP do Elastic, a conexão sairá do VPC e entrará novamente no VPC. Isso dificulta a segurança e incorrerá em custos de tráfego de dados.

Em vez disso, você deve referenciar seu servidor de back-end por seu endereço IP privado. Parar e reiniciar uma instância do EC2 não alterará o endereço IP privado. Somente quando uma instância do EC2 for finalizada, o endereço IP interno será liberado. E quando você inicia uma instância do EC2, pode optar por escolher seu endereço IP privado.

Você pode criar uma entrada DNS (zonas privadas hospedadas do Route 53) para o seu servidor back-end.

Outra coisa que você pode fazer, mas não é obrigatório, é criar uma interface de rede com seu endereço IP privado. Em seguida, conecte essa interface de rede à instância do EC2. Se você precisar de um novo servidor back-end, basta mover a interface de rede para a nova instância e o endereço IP privado será movido com ela.

Questão 2:

Os endpoints da instância do RDS não mudam com o tempo.

Além disso, as instâncias do RDS não podem ser interrompidas. Eles só podem ser excluídos. Mas, mesmo se você excluir uma instância do RDS e recriá-la, se ela tiver o mesmo ID de instância do RDS, seu endpoint permanecerá consistente.

Por isso, é seguro e prática recomendada referenciar sua instância do RDS por seu nome de host myapp-production.cg4mxcg62ca0.us-west-2.rds.amazonaws.com .

Considerações finais:

Coloque seu servidor Redis e sua instância do RDS em sub-redes privadas em seu VPC. Não há razão para que o público precise de acesso a eles. Sua instância do aplicativo Rails deve estar em uma sub-rede pública porque o público acessará seu aplicativo por meio dessa instância.

    
por 31.03.2016 / 01:35