如何实现零宕机网站托pipe过渡?

背景:

我是电脑程序编制员。 我还有很多东西要学习托pipe和DNS。 我正在使用一个廉价的共享主机提供商(DreamHost)来主办一个客户网站。 他们决定他们想pipe理自己的账户。 我以为这就像要求DreamHost把我的东西移动到自己的帐户一样简单,但显然这不是那么容易。

其要点在于,由于DreamHost正在托pipeDNSlogging,因此他们必须删除DNSlogging(在短时间内)以便DNS系统清除其caching,然后重新设置DNSlogging到新帐户(​​托pipe在他们的数据中心的一些新的服务器)…至less这就是我无论如何理解。 这是他们的实际回应:

– 我可以期待什么样的停机时间? 我们正在分钟/小时/天吗?

长度因地点和时间而异,您需要在目标帐户上重新创build域的主机,但时间在几分钟到几小时之间(天将用于极高的DNScaching)。

– 为什么会有新的DNSlogging? DNSlogging不会保持不变,因为该帐户仍然托pipe并在Dreamhost中注册?

原因是您不能保证在目标帐户的同一台计算机上托pipe。 由于它将是一台新机器,所以使用了新的networking地址,所以这是一个DNS更改,以便为域设置新的机器地址信息。 如果不清楚的话,域名会在Dreamhost DNS系统中完全删除(短暂的)时间,所以当它被添加回来时,系统会像添加的其他域一样对待它。 这就是为什么所有内容必须在删除之前进行备份的原因。 不存在指向该内容的指针(在某些情况下,内容永久不可用)。

题:

我的问题(针对您的专业服务器pipe理员):如何以最less的停机时间来传输代码,数据库和子域名,这样,电子邮件(由Google Apps托pipe)不会丢失? DreamHost推荐的方式 ,最好的方法是? 它会减less停机时间转移到另一台主机,然后转回到DreamHost? 如果事情发生在深夜,我会做出一些不会被人注意的事情吗?

通常当更改网站的公共IP时,我喜欢在两个IP上运行站点至less两天,因为有很多人在他们的DNS服务器中有caching的IP,他们将继续获得旧的IP 。 使用这种方法,假设当Dreamhost从DNS中移除网站时,他们也closures旧服务器上的旧网站,使用caching(现在是错误的)IP的用户将得到一个错误消息,而不是网站。

我看到的最糟糕的情况是,当我们将一个站点移动到一个客户端时,我们让人们点击了旧的服务器一个月(仅仅是几个人)。 我们最终不得不打电话给这些客户端,让他们手动刷新他们的DNScaching。

域被完全从Dreamhost DNS系统中删除(短暂的)时间,所以当它被添加回来

这是每个集体服务和自动化任务的阴暗面。

对于真正透明(但手动)的运动,你可以

  • 将DNS的DNS托pipe从DH转移到任何第三方托pipe
  • 移动之后至less把站点RR的TTL降低到一个小的值
  • 等等,而旧数据没有过期
  • 询问DH关于新的IP
  • 更改区域定义中的IP
  • 将网站转移到新主机

最后和最后一个操作可以在列表中交换

大多数共享服务(HostGator都是这样的)提供了一个预览域的临时方法。 简单地说,在使用临时URL进行传输之前设置服务器,并确保一切都是原始的。

但是,如果您对其他来源的path进行了硬编码,则必须在域更改后进行更改。

那么当然,当你把所有的东西都搬走了,你就可以把域名转到新的账户上了。 这种方法没有停机时间,但是用户可能被定向到不同的服务器,所以任何用户可编辑的东西(论坛是一个非常好的例子),你可能想在旧盒子上禁用,因为你不想让用户拥有非常caching的DNS服务器为他们服务的旧帐户和最新的DNS服务到新的服务器。

只要你有一切设置(特别是电子邮件),你会没事的。 有些内容可能像电子邮件一样位于旧服务器上,但是您必须与您的客户进行交谈,以便在旧盒子上手动检查电子邮件(使用cPanel的工具)。

让旧的服务器保持一个星期的上限,你的用户几乎不会注意到。 但是,如果是论坛或其他用户生成的网站,那么对于没有更新的DNS的用户可能会有“停机时间”,但除了DNS域中的TTL较低之外,您绝对无法做到这一点configuration…

希望能帮助你!