【发布时间】:2018-03-03 00:48:34
【问题描述】:
我正在使用部署 3 个 EC2 虚拟机的 CloudFormation 堆栈。每个都需要配置为能够通过 IP 或主机名发现其他 2 个,这无关紧要。
Amazon 的私有内部 DNS 似乎非常无用,因为它基于 IP 地址,在配置时无法知道。因此,我无法使用我在 CloudFormation 堆栈时所知道的内容来配置节点。
据我所知,我有几个选择。在我看来,所有这些都比必要的复杂 - 还有其他选择吗?
- 使用 Route53,设置私有 DNS 托管区域,为每个连接到其网络接口的 VM 创建一个条目,然后通过命名条目,我应该提前知道我分配给它们的私有 DNS .
- 启动另一个服务,让 3 个虚拟机在初始化后“回拨”,然后向他们报告谁准备好了。
- 想出一些其他基于 VM 的 shell 魔术,并做一些愚蠢的事情,比如使用 nmap 扫描本地子网中某个端口上的活动机器。
在我使用过的其他云(如 GCP)上,当您配置 VM 时,它会根据部署模板中的资源名称获取内部 DNS 名称,这使得此类问题非常简单。男孩,我希望我有那个。
这里最好的方法是什么? (1) 看起来很简单,但要求使用我的堆栈的人拥有他们并不真正需要的额外权限。 (2) 是有点浪费的额外资源使用。 (3) 看起来……很傻。
【问题讨论】:
-
您可以在启动每个 EC2 实例时为其请求一个特定的私有 IP,如果您更喜欢这种方法。或者您可以更改主机名(请参阅docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html)。
-
@jarmod 更改主机名似乎不是一种选择;在 VM 本地工作,但其他 VM 无法解析该主机名。私有 IP,看起来确实可行,并且类似于 (1),因为它需要配置/支付/许可新资源。
标签: amazon-web-services amazon-ec2 amazon-cloudformation