如何实现零停机网站托管转型?

如何实现零停机网站托管转型?

背景:

我是一名程序员。关于托管和 DNS,我还有很多东西要学。我正在使用一家廉价的共享托管提供商 (DreamHost) 来托管客户网站。他们决定自己管理帐户。我以为这就像要求 DreamHost 将我的东西移到他们自己的帐户一样简单,但显然没那么容易。

其要点是,由于 DreamHost 托管 DNS 记录,因此他们必须删除 DNS 记录(短时间内),以便 DNS 系统清除缓存,然后重新设置指向新帐户(托管在其数据中心的某个新服务器上)的 DNS 记录……至少我是这么理解的。以下是他们的实际回应:

-- 预计停机时间是多久?是几分钟、几小时还是几天?

长度因位置和在目标帐户上重新创建域托管所需的时间而异,但在几分钟到几小时的范围内(极端 DNS 缓存则需要几天)。

-- 为什么会有新的 DNS 记录?由于帐户仍在 Dreamhost 上托管和注册,DNS 记录不会保持不变吗?

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

问题:

我的问题(针对专业服务器管理员):如何以停机时间最少的方式传输代码、数据库和子域,并且电子邮件(由 Google Apps 托管)不会丢失?DreamHost 推荐方式,最好的方法是什么?转移到另一台主机,然后再转移回 DreamHost,这样会减少停机时间吗?如果这件事发生在深夜,我是不是要小题大做,否则根本不会被注意到?

答案1

通常,在更改网站的公共 IP 时,我喜欢在两个 IP 上运行该网站至少几天,因为有很多人在他们的 DNS 服务器中缓存了 IP,并且他们将继续获取旧 IP。使用这种方法,假设当 Dreamhost 从 DNS 中删除网站时,他们还会关闭旧服务器上的旧网站,使用缓存(现在错误的)IP 的人会收到错误消息而不是网站。

我见过的最糟糕的情况是,当我们为客户迁移一个网站时,有人(只有几个人)使用旧服务器一个月。最后我们不得不打电话给那些客户,让他们手动刷新 DNS 缓存。

答案2

域名在(短时间内)完全从 Dreamhost DNS 系统中移除,因此当它被重新添加时

这是每项大众服务和自动化任务的阴暗面。

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

  • 将域名的 DNS 托管从 DH 移至任何第三方托管
  • 移动后,至少将站点 RR 的 TTL 减少到某个较小的值
  • 等待,旧数据尚未过期
  • 向 DH 询问新 IP
  • 更改区域定义中的 IP
  • 将网站转移到新主机

列表中的 Last 和 Last-1 操作可以交换

答案3

大多数共享服务(HostGator 在这方面表现不错)都提供了预览域名的临时方法。因此,只需在转移之前使用其临时 URL 设置服务器,并确保一切正常即可。

但是,如果您对其他源的路径进行了硬编码,则必须更改这些路径,因为域现在已更改。

当然,在您完成所有操作并设置后,您将能够将域路由到新帐户。此方法不会停机,但是,用户可能会被定向到不同的服务器,因此您可能希望在旧机器上禁用任何用户可编辑的内容(论坛就是一个很好的例子),因为您不希望具有大量缓存 DNS 服务器的用户将他们的信息提供给旧帐户,而具有最新 DNS 的用户将他们的信息提供给新服务器。

只要您设置好一切(尤其是电子邮件),就没问题了。某些内容可能位于旧服务器上,例如电子邮件,但您必须与客户沟通,在旧服务器上手动检查电子邮件(使用 cPanel 的工具)。

让旧服务器运行最多一周,您的用户几乎不会注意到。但如果它是论坛或其他用户生成的网站,您可能会为没有更新 DNS 的用户带来“停机时间”,但除了在您的 DNS 配置中为域设置较低的 TTL 之外,您对此无能为力……

希望这对你有帮助!

相关内容