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