更换 Linode VPS 数据中心

最初购买 Linode VPS 的时候考虑到日本离得近,速度会有优势,而且当时的 ping 值只有 350ms 左右。可是六月份以来 Tokyo 数据中心的 ping 值持续走高,SSH 登录操作简直迟钝得不行。经过严密的准备之后,昨天晚上迁移到了美国 Fremont 数据中心。现在速度是飞快了啊!

我的服务器没有冗余,迁移的时候肯定需要停止服务。虽然通过 Linode 管理后台迁移数据中心是易如反掌的事情,可是不怕一万只怕万一,所以为了尽量缩短网站下线时间,我制订了一个比较周全的流程。通过这次迁移数据中心的实践检验,这个流程还是挺不错的。详细记录一下,下次就不用再动脑筋想了。

1、提前修改域名解析设置

更换数据中心必然会更换 VPS 的 IP 地址,所以就涉及到修改域名解析的问题。DNS 设置更改后需要一段时间才能在全球范围内完成更新。这一段时间,短则几小时,长则几天,所以必须考虑。提前修改域名解析的存活时间(TTL)到一个比较小的值,比如 300s 或者 600s,可以保证我们在完成服务器迁移后新 IP 能在较短的时间内同步到各个域名解析服务器上。

当然,如果本来设置的域名解析 TTL 就很短,可以跳过此步骤。

可以使用 DNSPod 的域名健康诊断工具来判断当前设置的存活时间:

DNSPOD 域名健康诊断工具

DNSPod 域名健康诊断工具

我之前将域名的 TTL(存活时间) 设置成了一星期。这次已经提前两三天改成 300(5分钟)了。虽然这时间还不够消除之前设置 7 天的影响,可我实在等不及了。所以直到现在,还可以看到有不少域名服务器还没有更新我的域名解析设置,还是旧的 IP 地址(如上图)。

在等待新的域名解析存活时间 TTL 生效的时间里,可以做一些准备工作。

2、准备工作

正式申请迁移数据中心之前,可以准备以下几项工作,以保证我们能在最短的时间里面完成迁移,尽量减少网站不可访问的时间:

  1. 备份重要文件、数据库(数据库因为变动频繁,可以等到关闭 VPS 系统之前再做)等。备份指的是下载到本地计算机,或者到别的服务器上,而不是 Linode 的备份系统。
  2. 列出迁移到新数据中心之后因为更换了 IP 而需要修改配置的项目。也就是与 IP 地址和 DNS 相关的设置,如 hosts、resolv、静态地址配置文件等。当然这跟自己选择的 Linux 操作系统等最初的安装方法(比如我的 CentOS + LAMP 安装)有关。在后面修改配置一节会详细介绍。实际上这篇文章的主要内容我在迁移之前都已经准备好了 :D
  3. 如果服务器设置了 SSL 加密连接(HTTPS 访问能力),还需要修改 Apache 中关于 SSL 连接的配置。见在 Linode VPS 的 LAMP 平台上部署 SSL 加密服务一文中的第3部分
  4. (2013.03.17 增加)尽量缩小 Disk Images(磁盘镜像)。但是这一点是否能减少实际的传输时间还有待检验。

可能需要修改的文件列表如下:

  • /etc/hosts
  • /etc/resolv.conf
  • /etc/sysconfig/network-scripts/ifcfg-eth0
  • /etc/httpd/conf.d/vhostssl.conf (因个人配置不同,此文件名和路径可能不同)

3、提交迁移申请

Linode 有一个非常棒的管理控制台,这让我们的管理工作,当然还有 Linode 自己的管理工作都非常的规范和轻松。

登录 Linode 管理控制台,进入 support 页面提交新的 Support Ticket。

在 Linode 管理控制台提交迁移数据中心的申请

在 Linode 管理控制台提交迁移数据中心的申请

不用写得很复杂,意思到了就行。比如,

Hello,

I’d like to transfer my linode from data center in Tokyo to Fremont. Could you do me a favor?

Thanks!

然后一般几分钟就会有人回复,并告知操作注意事项。我觉得他们应该有快捷方式吧,不然怎么那么快就设置好了,而且回复应该也都是一个模式。如,

Hello,

Your migration to our Fremont, CA datacenter has been configured. Please log into the Linode Manager, shut down, and click the migrate button to move to your new server. Your disk images will be moved with you. The migration should take approximately 10-15 minutes per gigabyte of data to complete. Please note that any existing backups for this Linode will be purged and will not be recoverable after you initiate the migration.

Your new IP address is: 50.116.13.218

We ask that you begin this migration within 24 hours and let us know when it is complete. Thanks in advance!

就这么几个意思:

  1. 已经帮我们配置好了,需要自己动手迁移;
  2. 迁移前需要先关停 VPS,然后点击控制面板上的迁移按钮等待自动迁移;
  3. 当前 VPS 中的所有磁盘镜像都会迁移过去;
  4. 迁移时间大约是 10~15分钟/GB(约 1MB/s,实际可能会快些,能达到 10MB/s,但也可能会慢,比如网友 bit 反映的情况);
  5. 在 Linode 中的任何备份都会被清理掉,且不可恢复;
  6. 新的 IP 地址(可惜没有提供 IPv6 的地址);
  7. 迁移必须在 24 小时内完成,否则可能此次申请就作废了,或者丢了旧的数据也说不定(Linode 没说,我也不知道)。

4、修改配置 1

这一步也可以放在后面的第 5 步之后。

因为已经得到了新的 IP 地址信息,虽然还不知道新服务器的 DNS,但是有些配置已经可以提前修改了。因为,

  1. 新的配置要重启服务,或者重启系统才会生效;
  2. 基本不会影响当前服务器上网站的访问。

对于那些熟悉 Linux 的人来讲,完全可以写个自动执行的批处理文件在迁移后自动执行,加上登录的时间也就几分钟而已。不过我暂时还不会写,而且手动操作也很快。

要修改的内容

以下修改基于我自己的 CentOS + LAMP 服务器,可参考安装记录中第 1 节“基本设置”中的相关内容。

最快捷的方法是编写一个批处理程序来完成;次之可以通过 ftp 下载文件修改后上传覆盖;最麻烦的恐怕就是直接通过 SSH 远程编辑了 :D

A、HOSTS

修改

/etc/hosts

中的 IP 地址为新地址,保存。

B、网卡静态 IP 地址配置

如果没有设置静态 IP 地址而是使用默认的 DHCP 方式的话可以略过这一设置。有关静态 IP 地址配置,请参考前述引用的 1.4 小节。

修改

/etc/sysconfig/network-scripts/ifcfg-eth0

中的 IP 地址为新地址,网关为新网关。

虽然没有得到新网关地址,但是一般都是将自己的 IP 最后一节改为 1 即可。例如我的就是 50.116.13.1,而且后来发现也没错。而且,如果错了可以再改嘛,影响不大。

C、修改 Apache 配置文件 vhost.conf / vhostssl.conf

如果 vhost.conf 文件中没有用到 IP 地址,这一步可跳过。

修改

/etc/httpd/conf.d/vhost.conf

以及(如果没有配置 SSL 可以跳过)

/etc/httpd/conf.d/vhostssl.conf

中的 IP 地址为新的 IP 地址。

5、执行迁移操作

登录到 Linode 管理控制台,关停当前的 Linode,然后点击下图中的迁移按钮来完成迁移。在服务器关停前,图中的按钮是无法点击的。

Linode 控制台中的服务器迁移提醒

Linode 控制台中的服务器迁移提醒

然后就是等着迁移了,在控制台中可以看到进度和数据传输速度。还真是挺快的。

Linode VPS 迁移进度

估计是因为我的数据量比较小(大约有 2GB 的磁盘占用吧),5 分钟迁移就完成了。

在等待迁移完成的时间里,有一件很重要的事情可以做:修改域名解析设置到新的 IP 地址

6、修改配置 2

现在完成剩余的一点儿配置修改。虽然还剩余一小部分配置没有更改,可是网站应该已经可以正常访问了。

首先启动 VPS 系统,然后使用新地址通过 SSH 登录到新的 VPS 上。如果不能登录,就使用 Linode 管理控制台中的 Lish 登录。然后进行如下后续配置修改。

A、修改系统的域名解析服务器地址

修改

/etc/resolv.conf

中的 DNS 为新服务器的 DNS。这个在 Linode 管理控制台的 Remote Access 页面可以找到。

B、如果同时发现网关不对,则重新操作前述第 4 步的 B。

7、完成

别忘了给 Linode 支持单回复一下。

如果你的域名解析已经更新好了,就可以直接访问自己的网站了。否则修改自己电脑的 HOSTS 文件,将新 IP 地址对应到自己的域名,应该也可以访问和测试。如果不行,那就是出事儿了啊。

例如,

50.116.13.218 cnzhx.net

最后呢,也可以将自己的域名解析中的 TTL 再改成一个比较长一些的时间,300s 毕竟太短了。

8、更新

又迁移了一次。根据本次迁移增加一些新的说明。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/transfer-linode-vps-to-fremont-datacener/>。转载请保留此信息及相应链接。

29 条关于 “更换 Linode VPS 数据中心” 的评论

  1. 是吧。我也最近在想换呢。日本的最近是很多问题,不过说月底可以恢复好。别外加上日本节点的CDN,会很给力哦。

  2. Hello,

    Our upstream provider has reported that they’re having networking issues with one of their network peers. They hope to have this issue resolved by the end of the month. We apologize for any inconvenience caused by this. If we can be of any further assistance, please let us know.

    Regards,

    Doug

  3. 呃呃呃
    dns的ttl一般都在120-600之间设置
    获取ip地址也就0.1s左右的事…没啥…
    nnd,设置一星期啊…等的麻烦…

    • 是啊,以后再也不设置这么长时间了,一天还可以接受。到今天还有好多没有同步完成的,最晚的估计要到后天了。

  4. 引用通告: 悲催的网络 | 水景微博

  5. 引用通告: ping 测试 Linode VPS @ Fremont | 水景微博

  6. 引用通告: 日本服务器易受攻击,巧合还是事实? | 水景一页

  7. 哎,我去,刚从freemont转移到jp,速度急死人,估计要睡觉去明天早上起来看了。。
    3.1% done, 11:41:51 to go, 572.93 KB/s

  8. 引用通告: 调整 Linode VPS 磁盘镜像大小 | 水景一页

  9. 现在刚买的在日本的主机直接用secureCRT连接不上,但是用别的服务器去连ssh是可以连的,总是提示密码错误,不知道这是什么情况。

    • 没用过 secureCRT,不过想来与 PuTTY 是一样的。
      第一次连接的情形我记不太清楚了。
      既然用别的服务器使用 SSH 可以连接到,那应该说明是你的 secureCRT 的配置上有些问题吧?或者你可以用 PuTTY 试试看?这个我比较熟悉。

  10. 你好!请教一个问题,这几天我的linode VPS无法访问,测试从全球任何一个地方都ping IP地址ping不出来,排除GFW关照,请问是哪里设置有问题吗?之前一直正常的。联系客服换个IP,问题依旧。Rebuild后立即可以正常ping出,但数据文件没了,联系客服恢复原始备份的影像,但又无法ping出这个IP。期待回复,谢谢!

    • 不能 ping 通的话,是否可以访问网页?按照你说的情况,可能是 iptables 阻止了访问吧?通过 SSH 登录(如果不行就用 Linode Manager 中的 Lish 登录),然后执行,

      service iptables stop

      然后再试试看。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)