gpt4 book ai didi

amazon-web-services - 如果弹性 ip 关联到另一个正在运行的 ec2 实例,是否可以在重启后将弹性 ip 与 ec2 实例重新关联?

转载 作者:行者123 更新时间:2023-12-04 08:19:27 34 4
gpt4 key购买 nike

我们有一个设置,其中 3 个 ec2 实例每个都与其主网络接口(interface) eth0 上的弹性 ip 相关联,因此传入请求可以由这些实例提供服务。

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

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

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

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

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

最佳答案

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

  • 它的弹性IP是分离的
  • 它只有一个网络接口(interface)

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

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

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

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

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

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

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

关于amazon-web-services - 如果弹性 ip 关联到另一个正在运行的 ec2 实例,是否可以在重启后将弹性 ip 与 ec2 实例重新关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29615857/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com