我需要更改生产 Web 服务器的 IP 地址。我想知道是否可以在不停机的情况下完成此操作。我认为可行的步骤如下:
- 保留新的静态 IP 地址
- 将 IP 地址添加到我要切换的域的 DNS
- 部署使用新静态 IP 的 kubernetes 配置
- 删除旧的 DNS 条目
- 取消保留旧的静态 IP 地址
我应该期望它能起作用吗?如果新 IP 地址的另一端没有任何监听,那么大多数事情是否都会切换到另一个 IP 地址?还是它们会彻底失败?
答案1
您的问题中的关键词是“无停机时间”,而您明显配置的答案是“否”。让我们假设您的生产 Web 服务器是production.example.com
。
这是您原始帖子中的时间线:
- 将 IP 地址添加到我要切换的域的 DNS
此时您要添加的 FQDN 是什么?如果不是地址production.example.com
,那么这个新的 A 记录不会对将流量路由到您的新 IP 产生任何影响。如果它是然后您的 TTL 就会发挥作用production.example.com
。我通常将我的设置为 300(5 分钟),但这并不意味着您有 5 分钟的时间来执行步骤 3。一旦新地址开始传播到您的客户端,他们就会开始尝试在新 IP 上登陆 HTTP 请求。
- 部署使用新静态 IP 的 kubernetes 配置
一旦您完成此操作并重新启动 Web 服务器,任何当前的 TCP 会话都将中断,这意味着任何正在进行的 HTTP 请求都将失败。
至于你的问题“如果在新的 IP 地址的另一端没有任何监听,那么大多数事情是否都会切换到另一个 IP 地址?”,是的,如果有不HTTP 活动,那么您就没事了。
根据我的经验,“零停机”的要求很难满足,我说的难是指复杂和昂贵。人们应该努力将停机时间降到最低,这可以通过制定可靠的网站迁移流程来实现,无论是更改 IP 地址、将其移动到其他服务器还是升级底层数据库。开发完流程后,请对其进行测试,以查看流量的行为方式以及您的假设得到证实或否定的地方。优化流程以实现您所追求的停机时间指标,然后再次进行测试。清洗、漂洗,然后重复。