更改服务器 – redirect到新的IP =没有停机时间?

我正在更换我的网站的服务器。 旧服务器的IP不能移动到新的服务器上。 要没有停机时间,我打算做下面的事情,请有人确认它会工作:

  1. build立新的服务器,并听取新的IP
  2. 旧服务器将所有stream量redirect到新IP
  3. 更改DNSlogging以指向新的IP

我的逻辑告诉我,当我从旧盒子redirect到新的IP时,用户将不会在浏览器中看到域名,但会看到新的IP。 有没有办法redirect到新的IP,并与HOSTNAME一起发送,以便用户可以在浏览器中看到域名?

我这样做是因为该网站是不断使用,只是简单地改变DNS设置将不会做,因为数据库将不会在传播过程中新旧服务器之间同步。

这是为我工作的方法:

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

以下是我将如何做第4步:

我们将在Linux服务器上configurationIPTables,将所有来自端口80(这是默认Web服务器端口)的stream量redirect到IP 122.164.34.240的服务器。 第一步是设置您的Linux机箱以允许进行这种转发。 打开terminal窗口,以root用户身份login并运行以下命令:

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

下一步是告诉IPTables将stream量redirect到新服务器:

 # 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服务器连接来自客户端机器,它会认为它们来自旧服务器。

您可能还想重复这个数据库和电子邮件服务器端口。

您也可以考虑添加多个Alogging。 例如,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 

如果您将多个Alogging添加到域中,则访问者将收到多个IP,然后按顺序尝试。 如果一个人失败,客户会转到下一个尝试。

设置新的IP作为一个额外的Alogging24小时前,启动新的服务器,closures旧的,删除IP。

另一种select是使用VIP(虚拟IP)。 所以,你的步骤是:

  1. build立新的服务器,并听取新的IP。
  2. 添加一个VIP到旧的服务器。
  3. 更改DNSlogging以指向VIP IP。 直到现在所有的stream量仍然会被发送到旧的服务器,但使用VIP。
  4. 准备好后,将VIP移到新的服务器上。
  5. 或者,您可以将DNS更改为新的服务器IP,并从DNS中删除VIP(一段时间后)。

好吧,既然你提到数据库复制,你必须做到以下几点。

  1. 在两台服务器上的数据库之间设置复制。
  2. 切换期间,将新服务器的数据库作为主服务器,旧服务器作为只读服务器。
  3. 将应用程序的数据库连接string指向旧服务器和新服务器上的新服务器。 如果您的网站使用会话,请确保会话在数据库中保留。
  4. 将DNS中的IP地址更改为新的服务器。
  5. 继续运行至less48小时的服务器。
  1. build立新的服务器,并听取新的IP
  2. 然后configuration透明redirect。 在旧服务器上安装rinetd。

在rinetd.conf中:

 OLD_SERVER_IP 80 NEW_SERVER_IP 80 
  1. 更改DNSlogging以指向新的IP

您可以在您的Web服务器前面使用HA-Proxy,其中一个服务器将维护模式从属服务器接pipe。

你做什么清单看起来相当明智。

举个例子,假设你使用apache,当你在旧服务器上的apache中做这样的事情时:

 redirect permanent / http://newserver.example.com 

用户浏览到旧网站时将在浏览器中看到新域。 在这种情况下,只要浏览器正在运行,redirect也是永久的。

所以只要你在你的web服务器中实现某种redirect,除了你的其他更改,你应该没问题。