【问题标题】:Is it possible to re-associate an elastic ip with an ec2 instance after reboot if the elastic ip is associated to another running ec2 instance?如果弹性 ip 与另一个正在运行的 ec2 实例相关联,是否可以在重新启动后将弹性 ip 与 ec2 实例重新关联?
【发布时间】:2015-06-19 09:14:39
【问题描述】:

我们有一个设置,其中 3 个 ec2 实例各自与其主网络接口 eth0 上的一个弹性 ip 相关联,因此这些实例可以处理传入的请求。

这些实例中的每一个都有一个辅助网络接口 eth1,如果实例发生故障/崩溃/重启,与该实例关联的弹性 ip 将与该接口上剩余的正在运行的 ec2 实例之一相关联。这是某种故障转移机制,因为我们总是希望这些弹性 IP 由某个正在运行的实例提供服务,这样我们就不会丢失任何传入的请求。

我遇到的问题特别是在重启实例时。当实例重新启动时,它无法取回它拥有的公共 IP,而这个公共 IP 是现在与另一个实例关联的弹性 IP。因此,除非我手动将弹性 ip 重新分配回此实例,否则此实例无法访问互联网。

是否可以在重新启动时自动回收/重新关联它曾经拥有的弹性 IP 到其 eth1 接口?如果没有,您有解决方法的建议吗?

重启是必要的,因为我们将对实例进行无人值守升级。

更新: 另请注意,我需要使用这些弹性 ip,因为它们是我们集成的合作伙伴公司的防火墙中允许的。使用 ELB 将无法正常工作,因为它的 IP 会随着时间的推移而变化。

【问题讨论】:

  • 您是否已经拥有适用于第 1 部分的脚本(将无响应服务器的弹性 IP 重新分配给故障转移服务器 eth1)?
  • 是的。该脚本在 python 中,使用 boto 库将无响应服务器的弹性 IP 重新分配给 eth1 上的故障转移服务器。

标签: amazon-web-services amazon-ec2 elastic-ip


【解决方案1】:

这就是我最终解决这个问题的方法。我错过的是亚马逊仅在两种情况下为实例提供新的公共 IP。

  • 其弹性 IP 已分离
  • 只有一个网络接口

因此,基于此,在启动时,我为实例配置了两个实例,但我分离了辅助 eth1 接口。因此,这使实例有资格获得新的公共 IP(如果由于任何原因重新启动)。

现在对于故障转移,一旦其中一个正在运行的实例检测到一个实例已从集群中脱机(在这种情况下,假设它已重新启动),它将在运行中附加辅助接口并将弹性 IP 关联到它.因此,弹性 IP 现在由至少一个正在运行的实例提供服务。效果立竿见影。

现在,当故障实例在重启后恢复时,亚马逊已经为其提供了一个新的非弹性公共 IP。这是因为它满足了只有一个网络接口的两个条件,并且它的弹性 IP 被解除关联并重新关联到另一个正在运行的实例。因此,这个重新启动的实例现在有一个新的公共 IP,并且可以在启动时连接到 Internet,并执行配置自身和重新加入集群所需的必要任务。之后,它重新关联回它需要的弹性 IP。

此外,当接管弹性 IP 的正在运行的实例检测到新实例或重启的实例上线时,它会再次分离辅助接口,以便在重启时也有资格获得新的公共 IP。

这就是我处理故障转移并确保始终提供弹性 IP 的方式。然而,这个解决方案并不完美,可以改进。如果 N 个网络接口可用于故障转移,它可以扩展到处理 N 个失败/重新启动的实例!

但是,如果在故障转移期间附加辅助接口的实例重新启动,它将不会获得新的公共 IP,并且将保持与集群的断开连接,但至少弹性 IP 仍将由剩余的活动实例提供服务。这仅适用于重新启动的情况。

顺便说一句,至少从我阅读的所有内容来看,亚马逊文档中没有明确提到这些获取新公共 IP 的条件。

【讨论】:

    【解决方案2】:

    听起来,使用弹性负载平衡器 (ELB) 会为您提供更好的服务。您可以只使用一个 ELB,它将为您的 3 个应用程序服务器提供请求。

    如果其中一个发生故障,ELB 会检测到并停止在那里路由请求。当它重新上线时,ELB 会检测到它并再次将其添加到路由组中。

    http://aws.amazon.com/elasticloadbalancing/

    【讨论】:

    • 感谢您的反馈。但是我需要为这些实例使用弹性 IP,因为它们是我们正在与之集成的合作伙伴公司的防火墙中唯一允许的。 ELB 的 IP 随时间而变化,因此无济于事。我会更新描述以更清楚。
    猜你喜欢
    • 2020-02-07
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多