最初我的问题是“我如何在无需先找到其 IP 地址的情况下 RDP 进入 EC2 实例”。为了解决这个问题,我编写了一个在每个实例上定期执行的脚本。该脚本读取特定标签值并使用实例的公共 dns 名称更新 Route53 中的相应条目。
这样我总是可以 rdp 进入 web-01.ec2.mydomain.com 并连接到正确的实例。
当我继续设置我的实例时,我意识到要设置 mongodb 复制,我需要以某种方式引用三个独立的实例。我无法使用内部私有 IP 地址,因为它们不断变化(或者在实例停止/启动和 dhcp 租约到期时容易发生变化)。
尝试web-01.ec2.mydomain.com
从我的 EC2 实例中访问会返回实例的内部 IP 地址。这似乎是标准行为。因此,通过提及我的三个实例的 route53 cnames,我可以确保它们始终可以被彼此发现。我不会支付任何额外的数据传输费用,因为 cnames 将始终解析为内部 ip。但是,我将为所有这些 route53 查询付费。
我可以每 30 秒或更短的时间运行一次脚本,以确保 dns 条目尽可能是最新的。
在这一点上,我意识到我所拥有的在很大程度上是一个弹性 IP 替代方案。也许不完全,但肯定适用于我所有的用例。所以我想知道是否使用弹性IP。只要我的实例正在运行,就不会产生任何费用。这似乎是一个更简单的选择。
大多数人做什么? 如果有这方面经验的人可以回复,我将不胜感激。
其次,在实例丢失其当前私有 ip 并获得新的内部 ip 的那几秒/分钟内会发生什么。我假设所有现有的连接都被丢弃。这会影响 ELB 健康检查(每 30 秒 ping 一次)吗?我假设如果我使用的是弹性 IP,dns 名称将立即解析为新的 ip,而不是在我的脚本执行后说。假设我的脚本每 30 秒运行一次,是否只有 30 秒的停机时间,还是可能更多?Elastic ip 的性能是否总是比我的脚本解决方案更好?