如何使我的 /etc/hosts 文件与多个 ec2 实例保持同步

如何使我的 /etc/hosts 文件与多个 ec2 实例保持同步

你们有没有人想出一个好方法来使多个 EC2 实例上的 /etc/hosts 文件保持最新?

实例停机……一些新实例被创建……并且内部 IP 发生变化。如何确保所有服务器上的 /etc/hosts 文件都是准确的?

答案1

2 个选项:

  • 使用弹性 IP。每当实例启动时,您都可以回收该 IP 并将其用于新实例。

  • 使用 DNS:在其中一个实例上设置一个小型 DNS 服务器(dnsmasq 不需要大量资源),并将其他实例上的所有主 DNS 服务器重定向到这里。设置或新主机很简单,因为它只需要在文本文件中输入一行即可。

也许两者结合也不错。

答案2

我知道 Windows 上有某种 DNS 产品可以使用。您不能用那个来代替吗?

答案3

编辑 EC2 不支持网络广播,多播 DNS 将不起作用。

多播 DNS?不需要中央服务器,但没有 DNS 安全性(可能不是大问题,我不知道您的环境是什么)。如果所有服务器的所有 IP 突然改变,那么您仍然可以。假设所有内容都在同一个广播域上,在 EC2 上我无法告诉您广播是否有效...

答案4

我实际上是通过我的 Puppet 服务器来实现这一点的,该服务器在我的 EC2 实例启动并联机时对其进行配置。我让 Puppet 服务器导出 IP 地址,然后使用所有已知条目自动更新/etc/hosts文件以及文件。/etc/ssh/ssh_known_hosts

为了处理服务器离线,我实际上将HostSshkey资源类型包装为ExpiringhostExpiringsshkey,并将其配置为删除超过最大年龄的导出记录(对我来说设置为 45 分钟,因为我的签到应该每 30 分钟发生一次),以便旧的陈旧条目也会被自动删除。

现在我不允许 EC2 实例之间建立 SSH 连接,并强制每个人都从堡垒主机连接到 EC2 实例,因此此时只有堡垒主机具有和调用Expiringhost <<| |>>Expiringsshkey <<| |>>更新/etc/hosts/etc/ssh/ssh_known_hosts

相关内容