通过 Rightscale 生成的 EC2 服务器具有合理的昵称,就像foo_03
Rightscale UI 内部一样。这些昵称似乎与 EC2 中的其他任何内容完全脱节 - 它们甚至不在/etc
或 的任何地方/var/spool/ec2
。这其实不是什么大问题,因为我可以从实例 IP 加上一些对 Rightscale 的 XML 请求中找出它们。
问题是 - 有没有办法将这样的昵称放入 DNS 系统?我想foo_03.something.com
解析为foo_03
的 IP 地址,尤其是我想将foo_03
的 IP 地址反向解析为foo_03.something.com
。
我不需要它来处理任何面向最终用户的事情,只需要查看哪个连接来自哪个服务器。
这会有多难?(/etc/hosts
我猜,黑客攻击可能是可以接受的)。
答案1
正如您所建议的:查询 EC2 以获取您的实例列表,查询更多以获取昵称和 IP 地址。从中构建一个 /etc/hosts 文件。必须在每台机器上执行此方法(除非您分发了上述 /etc/hosts 文件)
如果您有权访问您的名称服务器,并且它正在运行 Bind 或类似程序,这些程序从文本文件中获取配置,则可以调整上述脚本以写出子域文本文件(因此它类似于 foo_03.ec2.something.com),然后将 bind 指向所述配置文件(如果您不关心反向查找,您可以写出 CNAME 记录而不是 A 记录)。将其上的 TTL 设置为较低,以便它会经常重新加载。每 5 或 10 分钟在 cron 作业中运行一次脚本(它是唯一执行此操作的服务器,因此您可以根据需要更频繁地执行此操作)。反向查找稍微困难一些;您必须找出正确的 .in-addr.arpa. 文件(基本上找出亚马逊添加到云中的 IP 范围)并确保配置 bind 以查看它们。
如果有一个可挂钩的 DNS 服务,每当有人在子域中请求某些内容时都可以重新查询,那将是理想的,但我不知道 bind 是否可以做这样的事情。