更换服务器 - 重定向至新 IP = 无停机时间?

更换服务器 - 重定向至新 IP = 无停机时间?

我正在更换网站的服务器。旧服务器的 IP 无法移至新服务器。为了不停机,我计划执行以下操作,请有人确认它是否可行:

  1. 设置新服务器并监听新 IP
  2. 旧服务器将所有流量重定向到新 IP
  3. 更改 DNS 记录以指向新 IP

我的逻辑告诉我,当我从旧机器重定向到新 IP 时,用户将不会在浏览器中看到域名,但会看到新 IP。有没有办法重定向到新 IP 并随附 HOSTNAME,以便用户在浏览器中看到域名?

我这样做是因为该站点正在不断使用,并且简单地更改 DNS 设置是行不通的,因为在传播期间数据库不会在新旧服务器之间同步。

答案1

以下是对我有用的方法:

  1. 将文件和数据库与新服务器同步。
  2. 在截止之前执行重新同步。
  3. 更改 DNS 以指向新服务器。
  4. 将来自旧 IP 的请求转发到新服务器,直到 DNS 传播完成。

以下是我执行第 4 步的方法:

我们将在 Linux 服务器上配置 IPTables,将端口 80(默认 Web 服务器端口)上的所有流量重定向到 IP 为 的服务器122.164.34.240。第一步是设置您的 Linux 机器以允许进行这种转发。打开终端窗口,以 root 用户身份登录并运行以下命令:

# echo 1 >/proc/sys/net/ipv4/ip_forward

下一步是告诉 IPTables 将流量重定向到新服务器:

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240

这就是 IPTables 的魔力所在。在第三步也是最后一步,我们告诉 IPTables 重写到新服务器端口 80 的连接来源,使其看起来来自旧服务器。

# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE

最后一步是必需的,因为如果我们不告诉新服务器的 Web 服务器这些连接来自客户端机器,它就会认为它们来自旧服务器。

您可能还想对数据库和电子邮件服务器端口重复此操作。

答案2

您还可以考虑添加多个 A 记录。例如,Google 就使用了这种方法,请查看他们的 nslookup 输出:

Name:       google.com
Addresses:  209.85.148.101
            209.85.148.102
            209.85.148.113
            209.85.148.138
            209.85.148.100
            209.85.148.139

如果您向域名添加多个 A 记录,访问者将收到多个 IP 并按顺序尝试。如果一个失败,客户端将转到下一个进行尝试。

提前 24 小时将新 IP 设置为额外的 A 记录,启动新服务器,关闭旧服务器,删除 IP。

答案3

另一个选择是使用 VIP(虚拟 IP)。因此,您的步骤如下:

  1. 设置新的服务器并监听新的 IP。
  2. 为旧服务器添加 VIP。
  3. 更改 DNS 记录以指向 VIP IP。到目前为止,所有流量仍将发送到旧服务器,但使用 VIP。
  4. 准备就绪后,将 VIP 移至新服务器。
  5. 或者,您可以将 DNS 更改为新的服务器 IP,并从 DNS 中删除 VIP(一段时间后)。

答案4

  1. 设置新服务器并监听新 IP
  2. 然后配置透明重定向。在旧服务器上安装 rinetd。

在 rinetd.conf 中:

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. 更改 DNS 记录以指向新 IP

相关内容