我正在维护一个相当知名的网站,该网站托管在 Amazon EC2 上,之前的开发人员将 A 记录指向实例的“公共 IP”,而不是使用“弹性 IP”。据我所知,“公共 IP”绝不是永久的,所以如果我需要停止实例,它会获得一个新的。此外,如果我分配弹性 IP,它会删除公共 IP,所以如果我更改它,网站将无法访问,直到 A 记录更改传播。
显然这不是什么好事情。
有什么方法可以分配弹性(或其他永久)IP 地址,而无需删除当前的“公共 IP”?或者,有没有其他我还没有想到的解决方案可以帮助我摆脱这种困境?
答案1
是的!拥抱 DNS 最终一致性的力量。
- 设置一个 ELB,并将其指向您的实例。
- 使用 ELB 的 CNAME 更新公共实例的 A 记录。
- 等一个星期。
- 将弹性 IP 与实例关联。
- 使用 EIP 的新 A 记录更新应用的 CNAME 记录。
- 等一个星期。
- 关闭 ELB。
在等待的两周内,网站可能会同时访问旧 IP 地址和新 IP 地址。您可能无法分辨,但由于这两个 IP 地址仍可访问,因此您可以很快管理此更改。
答案2
另一个选项是创建一个 ENI 并将 EIP 附加到它。然后将 ENI 附加到您的实例并更改 DNS 条目。