更换网络服务器的快捷方法

更换网络服务器的快捷方法

我有 2 个 CentOS Web 服务器,分别位于 2 个不同的主机上

  • 1 当前正在直播 ( Server A)
  • 第二个将取代第一个(Server B

我们的域名目前指向Server A

在正常情况下,切换服务器时,我们只需更新域的 DNS 即可切换服务器。此操作显然可能需要长达 72 小时。

由于我们要在 上启动一个新平台Server B,因此我需要一个应急计划,以便能够即时在 2 个服务器之间切换,而不是等待 DNS 传播。我没有使用过负载平衡器之类的东西,但是使用配置在 DNS 和 2 个服务器之间切换流量是否有助于解决问题?

在此处输入图片描述

欢迎针对这种情况提出任何建议。

编辑:重新措辞问题并添加示例流程图

答案1

实现这一目标的方法有很多,每种方法的确定性、风险和复杂性程度都不同。评论中涵盖了其中一些方法。

  • 在迁移前几天减少 DNS 记录的 TTL。迁移后,您可以将 TTL 恢复到以前的值。这不能保证世界上所有的 DNS 服务器都已更新。可能仍有一些用户在使用过时的 DNS 记录。但这就是 DNS 的弊端。通常情况下,这样做很好。但不能保证。您甚至无法真正验证,因为您必须检查世界上所有的 DNS 服务器,许多服务器会进行缓存,有些服务器不会遵守 TTL。但一般来说,这是一种非常安全的方法。除非您有 1000 万或更多用户,否则我认为潜在风险相对较低,您的某个用户可能会使用损坏的 DNS 服务器。
  • 用最新版本更新两台服务器,那么就没关系了。假设 A 当前是 DNS 指向的服务器,更新 B,更改 DNS,更新 A。在更新 A 期间可能会出现一个小问题窗口,用户将看到一个损坏的网站。
  • 在前面放置一个负载平衡器,它接管 DNS 当前指向的 IP 地址。这是对现有设置的更复杂的更改,但更符合一般情况。
  • 快速交换 IP 地址。将服务器 A 的 IP 地址提供给服务器 B,然后更改服务器 A。停机时间非常短 - 如果您准备好了脚本,则只需几秒钟。由于您不更改 DNS,因此不存在 DNS 过时的风险。
  • 使用 Keepalived 或类似工具。DNS 随后指向一个浮动 IP 地址。当前拥有该 IP 的服务器需要获得不同的 IP 地址。这比大多数其他解决方案的复杂程度更高,但对您的设置来说是一个很大的改进。现在,您处于危险之中。DNS 对指向服务器 A 的 A 记录具有“长”TTL。如果服务器 A 发生故障,您必须将 DNS 更改为指向服务器 B,这将需要很长时间才能传播。使用浮动 IP,您永远不必更改 DNS。如果服务器 A 发生故障,服务器 B 会在几毫秒后自动接管浮动 IP,一切继续正常工作。
  • 使用新代码更新服务器 B。切换服务器 A 上的配置,这样 Web 服务器将请求代理到服务器 B,而不是为网站提供服务。(如果是 Apache httpd、NGINX 或 IIS,这很容易。许多其他服务器应该能够做到这一点,如果不行,您可以放置​​ HAProxy,快速停止 Web 服务器并启动 HAProxy。)此时,所有请求都由新代码上的服务器 B 处理。更改您的 DNS。

答案2

如果您只需要解决 Web 问题,为什么不直接在主索引文件中执行 302 重定向,然后更改 A/AAAA DNS 记录?当然,您仍然可以先更改 TTL,这样就不必等待 DNS 记录更改这么长时间,但 302 重定向将立即生效。

使用负载均衡器的解决方案也不错,而且配置 HAProxy 或 NginX(甚至 Microsoft 的 IIS)等反向代理模式也并不难。您可以先在不同的端口(比如说端口 8080/4443)上进行测试,然后将其切换到端口 80/443。但在 LB 解决方案中,当您更改端口时,可能会出现短暂的服务中断,因为您必须将服务器 A 上的 Web 服务器端口从 80/443 更改为其他端口,并将这些端口用于 LB - 这取决于您的速度。

或者,如果您的两个 Web 服务器都在防火墙后面,则可能存在 NAT 端口转发,因此您只能将目标 IP 地址从服务器 A 更改为服务器 B。

相关内容