2

最初我的问题是“我如何在无需先找到其 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 的性能是否总是比我的脚本解决方案更好?

4

2 回答 2

4

根据官方 AWS 文档,“私有 IP 地址在其生命周期内仅与实例关联,并且仅在实例停止或终止时返回给 Amazon EC2。在 Amazon VPC 中,实例在实例停止运行时保留其私有 IP 地址。停了。” 因此,如果有变化,每 30 秒检查一次似乎本质上是错误的。这给您留下了两个明显的选择:

  • 在启动时/启动后更新一次 DNS
  • 使用弹性 IP 和静态 DNS

使用过的弹性 IP 不会花费您任何费用,即使是停放的 IP 也只需很少的费用。如果您的实例大部分都在运行,请使用弹性 IP。如果它们大部分都处于关闭状态,请转到启动时间更新路线。如果您的实例位于 VPC 中,则甚至不需要启动时间更新(但在 VPC 中,您可能有不同的需求和更复杂的网络设置)。

于 2012-12-04T07:28:49.127 回答
1

您可以考虑的另一个选择是使用软件定义的数据中心解决方案,例如 Amazon VPC 或 Ravello Systems(免责声明:我们公司)。

使用这样的解决方案将允许您在公共云中创建一个封闭的私有环境。在环境内部,您拥有完全的控制权,包括您自己的私有 L2 网络,您可以在该网络上管理 IP 地址并可以使用例如静态分配的 IP。与外部(例如您的应用服务器)的通信通过您配置的 IP 和端口进行。

于 2012-12-04T16:31:55.177 回答