服务器迁移,尽量减less错误的DNS查找

我运行一个大型网站(每天500k独特),即将搬到另一个主机上。

我的新机器已经安装完毕,经过testing,所有的文件都被复制了,所以我几乎准备好在我的注册商那里更改我的域名的IP地址。

现在我想知道是否有一个离开,以最大限度地减less人们击中旧服务器,因为他们的DNS信息还没有更新。

有时可能需要很长时间才能更新,而人们点击旧服务器会使我的网站不同步。

有没有办法强迫人们从我的旧机器到新机器?

不,是的,但实际上没有。

在迁移之前(例如5分钟)将您的DNS TTL设置得非常低,这会告诉客户端只cachingDNS 5分钟然后刷新。 理论上,在DNS中更改IP之后,客户端只需5分钟就可以开始创build新的服务器IP。

不幸的是,这个理论不是现实。 一些ISP和DNS提供商cachinglogging的时间超过了TTL设置(我曾经看到一些ISPcaching5分钟的TTL,持续48小时),总之,从技术的angular度来看,绝对没有办法阻止他们这样做,甚至尽pipe他们不应该。 唉,说服你所有的用户转移到OpenDNS可能不是最好的主意。

当我移动大型网站之前,这通常是我遵循的过程;

设置两个(新的和旧的)数据库服务器之间的同步。

如果您使用的数据库支持主 – 主复制(IE写入以太网节点将被传播到另一个),则将旧服务器和新服务器并排运行,直到所有客户端都更新。 这意味着客户端可以访问以太网服务器,并且网站将function完整。

如果数据库只支持主 – 从/日志传送等,那么保持站点的唯一真正选项是让旧服务器运行数据库的“只读”副本,它仍然有最新的数据,但只能读取,而不是写/更新。 根据您的网站,这可能不是太多的问题。

另一种select,也许是最容易实现的方法,是将旧代理服务器上的代理服务器转发给新服务器。 旧服务器上的用户由于代理服务器中的额外跳数而会经历一些延迟,但是使用巧妙的cachingconfiguration,您可能会将其最小化。

通过以上任何一种select,监视旧服务器,以及当所有/大多数客户端已经解散时,就像通常一样。

当然,如果每个人都遵循他们应有的标准,那么所有这些都是可以避免的。

想到两个小小的补充:如果数据库访问可以容忍这两个服务器之间的延迟,那么也可以设置在新机器上使用数据库。 (如果您需要安全,您可以使用SSH隧道或VPN)。

另一个select是设置旧机器以回答所有具有临时HTTPredirect(307)到新IP的查询(或者您可以使用新IP设置一些像www1.yoursite.com这样的临时域名,并将其用于redirect)。

使用反向代理

如果你有对两个系统的root权限,你可以使用Apache的mod_proxy代理从旧服务器到新服务器的stream量。

使用mod_proxy,您可以设置从旧服务器到新服务器的反向代理。 这样客户端的活动都发生在同一台服务器上。 当仔细安排时,你可以有最小的停机时间(例如,重新启动Apache所需的时间)。

我喜欢这种方法,因为它可以让你更改DNS 之前testing一些东西。 一个好的最后一分钟的健康检查。

如果您拥有需要该信息的工具,则可能还必须使用名为mod_rpaf的模块来获取访问者的真实IP地址。

有些网站使用可能导致问题的规范url。 一个技巧是将新服务器的IP设置在旧服务器上的/ etc / hosts文件中。 然后你可以在你的代理设置中join这样的东西:

ProxyPass / http://www.domain.com/ ProxyPassReverse / http://www.domain.com/ 

而已。 您也可以对HTTPS执行此操作。

还要注意许多ISP忽略TTL值。 康卡斯特,ATT和其他公司将只能每天刷新几次DNScaching。