我已经有一个指向经典 EC2 实例的弹性 IP 好几年了。现在我启动了一个新实例 - 在 VPC 内 - 并希望将该实例用于我的网站。因此我想将我的“旧”弹性 IP 指向新实例。显然这是不可能的。
我需要将我的网站保留在原始 IP 地址上。有没有其他方法可以使用 VPC 中的实例,并将原始弹性 IP 指向该实例?
答案1
不可能(就我所知,即使对于 AWS 支持人员来说)将不适用于 VPC 的弹性 IP 与 VPC 实例一起使用。所以你被困在这里 - 做这样的事情的唯一可能方法是不依赖固定 IP 地址(如果你尝试使用 ELB 或多个实例,你会遇到同样的问题)。
您的客户不应指向 IP 地址,但他们应使用您为其提供的子域的 CNAME 记录。借助该架构,您可以在需要时将整个域及其所有子域迁移到新的 IP 地址,而使用 CNAME 记录时客户端不会发生任何变化(因为他们指向的子域具有新的 IP 地址)。
现在您唯一的解决方案是向所有使用其 DNS 记录中的 IP 的客户发送电子邮件,将其更改为 CNAME,将所有客户迁移到 CNAME 后,您可以切换到新的弹性 IP 并更改您自己的 DNS 记录。
更新:正如下面指出的,现在可以将弹性 IP 从“经典”移动到“VPC” - 您可以在此处找到详细信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-eip-migration
答案2
我不知道如何在 VPC 上获取相同的 IP 地址。我会将此视为策略问题。
我会更改您的文档和 DNS 记录以使用新的 IP 地址,并设置一个 Web 服务器来执行 301 重定向。在内容服务 Web 服务器上,您可能需要为每个用户的站点设置一个临时域的别名。在重定向 Web 服务器上,您将使用临时子域重定向到服务 Web 服务器。例如:如果用户请求http://mysite.example.com/index.html,您可以重定向到http://mysite.temporarydomain.example.com/index.html. 捕获所有使用重定向服务器的用户的日志,并向他们发送消息以将其 DNS 记录更新为新 IP。
答案3
这实际上是有可能的。但如果不出现短暂的中断,就无法实现。
如果您将弹性 IP 与实例取消关联,则可以将弹性 IP 移动到 VPC 范围:
不幸的是,它可能需要几分钟才能转换完毕,而且可能看起来像是消失了一会儿(详细信息这里)。一旦它移动完毕,您就可以将其分配给 VPC 中的实例。