Gerenciando muitos hosts externos usando o EC2 e o Route 53

3

Procurando uma resposta de "melhores práticas" para gerenciar hosts endereçáveis externamente usando a combinação do Amazon EC2 e Amazon Route 53, sem usando IPs Elásticos para cada host. No meu cenário, eu terei mais de 30 hosts que precisam ser acessados de fora do EC2, portanto, o uso direto do DNS interno não funcionará.

No passado, resolvi os hosts atribuindo um IP elástico a esse host (digamos, 55.55.55.55) e, em seguida, criando um registro A associado. Por exemplo, digamos que eu queira criar "ec2-corp01.mydomain.com" que eu possa fazer:

ec2-corp01.mydomain.com.     A     55.55.55.55     300

Então, nessa instância do EC2, eu atribui o Elastic IP de 55.55.55.55 e tudo funciona bem. É claro que, para que isso funcione, eu preciso ter um IP elástico por instância, que é algo que eu gostaria de evitar, se possível; Eu gostaria que a infraestrutura fosse mais dinâmica.

Então, meu pensamento é tentar algo como:

  • Crie um script que consulte as ferramentas internas do EC2 para determinar o nome do host particular de uma instância

  • Na inicialização da instância, chame esse script para determinar seu nome de host e, em seguida, use a interface de linha de comando Route 53 para localizar e atualizar esse nome de host para seu nome de host interno atual

  • Como o host terá um TTL relativamente baixo (digamos 300 como acima, ou 5 minutos), ele deve entrar em vigor muito rapidamente

É uma boa ideia? Existe uma maneira melhor ou mais amplamente aceita para lidar com isso?

Se for uma boa ideia, que tipo de registro eu devo criar? Um CNAME que aponta para o host interno, como ec2-55-55-55-55.compute-1.amazonaws.com? Um registro A é melhor ou pior?

Obrigado!

    
por futureal 10.06.2012 / 01:35

2 respostas

2

Automatize. Basta fazer parte do script que cria a nova instância procurar o IP público (ou o nome público) pelo ID da instância (você obtém o ID da instância quando chama ec2-run-instances ; continue chamando ec2-describe-instances <instanceID> até obter uma entrada o campo direito), modifique seu DNS (pode ser Route53, mas não precisa ser) para conter um registro CNAME ou A com os dados obtidos.

Pode haver alguma mágica do Route53 que faça o truque também, como acontece com o ELB, mas não o encontrei.

    
por 10.06.2012 / 02:42
1

Para um registro A; você precisaria de um IP elástico para cada instância. O que eu faria em tal caso é como declarado; atribua a cada instância um CNAME usando a API da AWS para o Route 53. Se isso for para algo também como o balanceamento de carga, recomendo usar o serviço AWS Elastic Load Balancing que automatizará muito isso (analise isso um pouco mais para ver se se adapta às suas necessidades, pois é uma taxa adicional).

    
por 10.06.2012 / 01:41