我要将网站从一台服务器迁移到另一台服务器。该网站有大量实时事务活动读取/写入后端数据库。
我相信我应该降低域名 DNS 中的 TTL,这样一旦我准备好进行切换,我所需要做的就是更新分配给域名的名称服务器,然后流量就会开始移动到新服务器。
如果我对该过程的理解正确,我应该在当前服务器上将 TTL 设置为何值?
我是否还需要在旧服务器上设置“刷新”、“重试”和“过期”值?如果需要,它们还应该设置什么?
谢谢
以下是我的流程
www.blah.com 托管于托管服务提供商“hoster
www.blah.com 的 ns1 记录为 ns1.myFirstNameServer.net,ns2 记录为 ns2.myFirstNameServer.net
我设置了一个新的名称服务器,其 ns 记录为 ns1.aNewNameServerIdecidedToBuy.net 和 ns2.aNewNameServerIdecidedToBuy.net - 它的 IP 指向我当前“托管商”的当前服务器
我的两个名称服务器域名(myFirstNameServer.net 和 aNewNameServerIdecidedToBuy.net)均已设置并驻留在我的注册商的 DNS 设置中 - 其 IP 指向我在新“托管商”的新服务器
一旦我准备好进行切换,我将登录到我的注册商并更改 www.blah.com 上的名称服务器设置,如下所示:
- 从
ns1.myFirstNameServer.net
到ns1.aNewNameServerIdecidedToBuy.net
- 从
ns2.myFirstNameServer.net
到ns2.aNewNameServerIdecidedToBuy.net
答案1
为了简单起见,一次只做一件事,您不应该在此迁移过程中更改域的 NS 记录。如果您想迁移网站和还迁移权威 DNS 服务器,分两个步骤进行。要迁移网站,只需更改 A 和 AAAA 记录。
在 A 和 AAAA 记录上设置的常规“低值” TTL 为 300(5 分钟)。
如果您可以在短时间内同时操作两台服务器,那么您可以做得比基于 DNS 的迁移更好。您可以将旧服务器设置为将请求代理到新服务器,以便仍然与旧服务器联系的客户端将其请求转发到新服务器。使用 Apache 可以轻松实现这一点ProxyPass
。
稍后,如果您想要移动 DNS 托管,请更改 NS 记录并更改父区域中的委派(即在域的注册商处进行更改)。理想情况下,您可以提前在新服务器中部署区域,并让两组名称服务器在一段时间内为域提供服务。
编辑: 详情ProxyPass
此 Apache 配置片段放在<VirtualHost>
您的服务器部分中(如果没有),则直接放在服务器配置中<VirtualHost>
,将允许旧服务器将所有请求转发到新服务器:
<Location />
ProxyPass http://www.example.org/
</Location>
通常情况下您应该ProxyPassReverse
使用ProxyPass
但在这种情况下可以省略它因为它不会产生任何影响因为旧站点和新站点具有相同的ServerName
。
您可能希望同时从旧服务器配置中删除任何其他、、或其他 URL 映射指令,以确保代理规则(且仅代理规则)得到处理。(当然,请保留备份,以防您需要退出迁移!<Location>
)Alias
RewriteRule
确保旧服务器知道正确的新的网站域名的 IP 地址,否则它会将请求代理回自身!