我正在更换我的网站的服务器。 旧服务器的IP不能移动到新的服务器上。 要没有停机时间,我打算做下面的事情,请有人确认它会工作:
我的逻辑告诉我,当我从旧盒子redirect到新的IP时,用户将不会在浏览器中看到域名,但会看到新的IP。 有没有办法redirect到新的IP,并与HOSTNAME一起发送,以便用户可以在浏览器中看到域名?
我这样做是因为该网站是不断使用,只是简单地改变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)。 所以,你的步骤是:
好吧,既然你提到数据库复制,你必须做到以下几点。
在rinetd.conf中:
OLD_SERVER_IP 80 NEW_SERVER_IP 80
您可以在您的Web服务器前面使用HA-Proxy,其中一个服务器将维护模式从属服务器接pipe。
你做什么清单看起来相当明智。
举个例子,假设你使用apache,当你在旧服务器上的apache中做这样的事情时:
redirect permanent / http://newserver.example.com
用户浏览到旧网站时将在浏览器中看到新域。 在这种情况下,只要浏览器正在运行,redirect也是永久的。
所以只要你在你的web服务器中实现某种redirect,除了你的其他更改,你应该没问题。