我正在跟进此程序将新版本的应用程序部署到 EC2。当新版本稳定后,我会更新 DNS 条目的 A 记录,以将流量路由到新服务器的 IP 地址。
我猜这不是最佳做法,特别是因为您不能确定所有访问者的 DNS 现金何时更新了条目,以便您可以将旧版本脱机。
有没有最佳实践?我是否必须创建一个具有自己的 IP 地址的服务器,以便配置路由(昂贵)?或者我可以利用托管服务提供商的服务来做到这一点?或者是否有特定于 AWS 的解决方案?
答案1
有很多不同的方法可以无缝部署应用程序的新版本。
要使用现有的方法,您只需确保在进行转换之前已降低 DNS 记录的 TTL。
- 将 TTL 更改为 5 分钟
- 等待原始TTL值的总时间
- 进行 DNS 更改
- 5 分钟 TTL 到期后,大多数解析器都应更新更改
虽然不是完全无缝,但是相当常见。
答案2
好的,这是一个很老的问题,我现在第一次看到......
我更新 DNS 条目的 A 记录以将流量路由到新服务器的 IP 地址。
您说得对,由于 DNS 缓存,这将导致未知比例的用户仍使用旧版应用程序。如果您关注phoebus 的切实建议,可能用户会很少——但 AWS 上仍有更好的方法。
或者是否有特定于 AWS 的解决方案?
是的,我在你链接的原始答案中提到了这一点。亚马逊的弹性 IP 地址如果您对每个服务仅使用一个 IP 地址;或者弹性负载平衡如果您正在使用一组服务器。
弹性 IP 通常会在几秒钟内切换,根据我的经验,不到 10 秒。