使用EC2和Route 53pipe理许多外部主机

寻找“最佳实践”的答案来pipe理使用Amazon EC2和Amazon Route 53组合的外部可寻址主机, 而无需为每个主机使用弹性IP。 在我的情况下,我将有30多个主机需要从外部EC2访问,所以直接使用内部DNS将无法正常工作。

过去,我通过给主机分配一个弹性IP(比方说55.55.55.55),然后创build一个关联的Alogging来解决主机问题。 例如,假设我想创build“ec2-corp01.mydomain.com”我可能会这样做:

ec2-corp01.mydomain.com. A 55.55.55.55 300 

然后在EC2实例上,我将分配弹性IP为55.55.55.55,一切工作正常。 当然,要做到这一点,我需要每个实例都有一个弹性IP,这是我想尽可能避免的。 我希望基础设施更具活力。

所以我的想法是尝试像这样:

  • 创build一个查询内部EC2工具的脚本来确定一个实例的私有主机名

  • 在实例引导中,调用该脚本以确定其主机名,然后使用命令行Route 53接口查找该主机名并将其更新为其当前内部主机名

  • 由于主机的TTL相对较低(比如说300或5分钟),它应该很快生效

这是一个好主意吗? 有更好或更广泛接受的方式来处理它吗?

如果这是一个好主意,我应该创build什么types的logging? 指向内部主机的CNAME,例如ec2-55-55-55-55.compute-1.amazonaws.com? Alogging是好还是坏?

谢谢!

自动化。 只要创build新实例的脚本的一部分,通过它的实例ID来查找公有IP(或公共名称)(当您调用ec2-run-instances时获取实例ID;只要继续调用ec2-describe-instances <instanceID>直到你在右边的字段中input),然后修改你的DNS(它可以是Route53,但不一定是)包含你获得的数据的CNAME或Alogging。

也许有一些Route53的魔法也可以做到这一点,就像ELB一样,但是我没有碰到它。

对于Alogging; 你确实需要每个实例的弹性IP。 在这种情况下,我会做的是如上所述; 使用适用于Route 53的AWS API为每个实例分配一个CNAME。如果这也是类似于负载平衡的事情,那么我build议使用AWS Elastic Load Balancing服务,这将自动执行很多操作(查看它是否更多符合您的要求,因为这是一个额外的费用)。