将 Linode VPS 从东京1机房迁移到东京2

今天终于将原来位于 Tokyo 机房的 Linode 迁移到了 Tokyo 2 机房。准备工作花了个把小时,迁移过程大约半个小时(当然实际的数据传递过程只有几分钟)。然后迁移完了又慢慢悠悠的测试和熟悉新环境,倒是花得时间更长。

Linode 东京 2 号机房早就上线了。但是我一直没有迁移,指望着他什么时候升级东京 1 号机房我就不用麻烦了。再然后 Linode 就开始推出优惠,包括免费升级之类的,居然都不适用于旧的东京 1 号机房。这是明摆着赶大家去新的东京 2 号机房呢。抵不住优惠的诱惑,我终于决定搬迁了,而且放弃了最早注册时候享受的年付 9 折优惠改成了按小时计费,因为这样才能将迁移后自动升级成的 Linode 2GB 套餐降级到 Linode 1024。这个对水景一页来说是划算的,因为 1GB 内存对水景一页这样的小博客来说真是非常充裕了。

下面是一些记录,主要是根据经验和教训优化了一下步骤(见「迁移过程」)。因为很多细节在之前的「更换 Linode VPS 数据中心」一文中都提到过了,所以这里就不再重复很多操作的解说了。当然此文与之前博文的主要区别在于,这里用的是 clone 的方法迁移,所以需要提前创建一个新的 linode 与当前 linode VPS 并存,而之前是提交支持单请客服协助迁移。

提前的准备工作

为了让服务器迁移更顺利,网站下线时间尽量少,一些必要的准备工作是很重要的。

域名解析

第一重要的就是提前修改域名解析,将 TTL 尽量改小。TTL 时间越长,域名解析的更改就需要更长的时间同步到全球各地。当然也有一些 ISP 域名解析服务并不遵守各种规范,这些漏网之鱼就不要去深究了。这个提前量就要看各自原来的设置了。但是提前 2 周应该是绰绰有余了,因为虽然貌似最长的过期(Expire)时间就是 4 周,可是应该很少有人用这么长的,而默认值一般也就 1 周。

记录服务器配置

更改数据中心肯定涉及到更换新的 IP。那么就需要检查自己服务器上跟 IP 地址有关的配置文件。提前修改好也行,写个批处理在迁移后自动完成也行。总之是要提前搞清楚。

因为需要将其中的 IP 地址(IPv4 和 IPv6)都给替换成新的。

水景一页采取的方式是提前修改。也就是在正式克隆到新数据中心之前就都给修改好。当然最好是先在服务器上某个目录里修改好,等到迁移到新服务器之后再登录新服务器将修改好的配置复制到他们应该在的位置并覆盖原来的配置文件。

至于怎么知道新 IP 的呢?请看后面的迁移过程。

熟悉网络设置

另外,本来以为如果将 Linode 默认的动态 DNS 设置修改成了静态的,也许还有些网络方面的配置需要修改。比如静态网络地址配置文件、hostname 等。在 CentOS 7 中位于以下文件中或命令中,

/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/hosts
/etc/resolv.conf
/etc/phpMyAdmin/config.inc.php
hostname

但是我想这个修改起来很快,就没有提前修改。

后来发现,迁移完成后 Linode 自动就给修改了。具体就是他自动创建了一个新的配置文件。OMG,Linode 考虑得太周到了。

迁移过程

备份

还是备份一下重要文件和网站数据库比较保险!!!

创建新的 Linode

使用 clone 的方法迁移首先需要创建一个新的 Linode。这样我们也就有新服务器的 IP 地址了。

特别要注意的是,新的 Linode 配置不能比当前用的低,要不然可能「放不下」 :-D

反正 Linode 是按小时收费的。创建完了测试一下,如果不好的话可以不用。

登录到 Linode 管理面板,在当前所有的 Linodes 下面靠右的位置有个「Add a linode」链接,点击创建一个新的。注意选择要迁移到的目标数据中心即可。这里是「Tokyo 2, JP」。

Linode 会预收当前这个月的费用。今天是 5 号,所以到月底的费用对于 Linode 2048 来说是 $8.71。

先不用急着在新 VPS 部署服务器,只要安装个系统(创建个 Profile 也就几秒钟的事儿)并开机就可以进行 ping 测试了。水景一页的测试结果在本文后面。

测试之后觉得还可以就可以继续下面的迁移过程了。当然,因为用的是 clone 的方法,所以可以先把这个新的 Linode 里的刚才创建的那个 Profile 删除。不过据猜测,不删除这个 Profile 应该也不会影响迁移过程,只不过迁移之后这个 VPS 里会有两个 Profile 罢了。

修改旧服务器上的配置

上一步测试如果觉得可以接受新服务器,比如 IP 没有被墙,访问速度也还可以(当然只是 ping 的结果了),就可以进行迁移了。

因为已经有了新 IP,可以先将旧服务器上的一些有关 IP 的配置文件先修改了。按照水景一页之前创建网页服务器的各种配置来的话,也就几个与 SSL 模式的网站的服务器配置文件需要修改,比如,

cnzhx.net-ssl.conf
test.cnzhx.net-ss.conf
phpmyadmin.conf

先将这个几个文件复制到用户目录,修改好。然后将复制回去的命令行写好,这样迁移之后就可以在新服务器上直接执行指令,速度很快的。

修改本地 HOSTS 文件

因为域名解析传递的时间比较长,所以在本地直接修改电脑的 HOSTS 记录,就可以在迁移后不需要等待 DNS 解析就可以测试新服务器上的网站了。

也许还要修改本地的 SSH 连接设置,SFTP 连接设置等以方便迁移后访问新服务器。

调整旧服务器磁盘到一个较小的值

主要是为了将当前 Linode 中的磁盘调整容量到一个比较小的值,这样可以节省网络传输的时间。

可以先删除不必要的日志文件以便能够将磁盘压缩到尽可能小。

还可以再清理一下 yum 的缓存,

# yum clean all

这样还能再释放一点磁盘空间。

最后发现目前占用磁盘是 3.7GB。保险起见,我留出了一些余量,将磁盘压缩到了只有 5GB 大小,不过也许 4.5GB 更好。但是后来发现这个其实没多大区别,500MB 需要的传输时间也就不到 20 秒。

调整磁盘容量是需要关机的。具体参考这里

当然下面的迁移过程也是需要关机的,所以,resize 完了就直接下一步了。

迁移

迁移过程其实就是把旧服务器上的磁盘镜像传送到新服务器上。

注意:Linode 提示说需要关机之后再克隆(clone)比较安全。所以请确认旧的服务器已经 Power off。

具体的迁移指导请看 Linode 支持文档

在 「Linode Manager」 中打开旧的 Linode,进入 「Clone」 标签页,选择需要复制到新 VPS 的「配置文件(Configuration Profiles)」或者下面的「磁盘(Disks)」前面选择上。然后在下面选择目标服务器。

按照提示操作,真是没有任何悬念。只能说这个自动化工作做得太好了。

系统会提示预计迁移完成需要的时间。确认执行之后能看到文件传输进度,比如,

2.9% done, 3:04 to go, 27.60 MB/s

这里观察到的最高峰的迁移复制速度是 30.7MB/s。耐心等待…结果水景一页的 5GB 磁盘镜像在短短 3 分钟后就传输完成了。这实际上就应该是水景一页网站下线的时长。

刚开始的时候提示水景一页的 VPS 需要 1 小时 25 分钟完成迁移。看来是夸大了。

重新开启旧的服务器

这样网站就又可以访问了,在旧服务器上。

因为域名解析还没有做啊,所以先不要停止旧的服务器,以减少网站不可访问的时长。当然最好是等个半天或几个小时。反正也不贵 :-D

确认新服务器工作正常

先修改配置文件之类的,必要的话重启一下系统或者相关服务。自己访问一下,没有问题的话迁移工作就基本完成了。

修改 DNS 解析

一切准备停当,就可以修改 DNS 解析设置了。所以这样在新的域名解析生效前,旧的服务器还可以保持工作,这样就不会有人遇到网站无法访问的故障了。

只是这么简单来弄的话,如果有人正好在旧的服务器上提交评论,新服务器上就看不到了。虽然也可以配置旧的服务器使用新服务器上的数据库来工作,但是水景一页觉得没有必要,就没有去尝试。

然后去 Linode Manager 中 「Remote Access」标签页为新的 VPS 设定反向 DNS (Reverse DNS)。

后记

月流量限制

将旧的 Linode 1024 改成小时计费后,后台显示的每月流量限额变成了 322GB。将新的 Linode 2048 改成 Linode 1024 之后,每月流量变成了 64GB。两个数不一样,而且还都比正常的标准 1TB 低了很多。真是很奇怪。在后台提交了支持单,等待回复中。

不过后来又注意到在 Linode Manager 首页显示的「This Month’s Network Transfer Pool」提示的每月流量是正确的。新的 Linode 1024 是 1TB。所以估计问题不大。

update:

Linode 支持单回复表示这个分实例的统计可能真是因为后台代码错误导致的。但是管理首页那里的综合信息显示的流量限额是正确的,也就是说,Linode 1GB 的每月限额的确是 1TB。

Linode Tokyo 1 与 Tokyo 2 速度对比

水景一页的 Linode Tokyo 1 机房与 Tokyo 2 机房速度对比

水景一页的 Linode Tokyo 1 机房与 Tokyo 2 机房速度对比

另外,上图是测试的两个地方的访问速度对比,感觉没差多少。使用的是 17CE 的测试服务。

域名解析传播时间

对于域名解析的全球同步,17CE 的测试结果显示,1 小时后,98 个测试解析中还有 26 个解析到原来的 IP,2小时后就只有 6 个解析到原来的 IP。看来吃完晚饭之后就可以停掉原来的 VPS 了。

现在已经过去 4 个小时了,测试结果显示大约还有 3% 的测试 DNS 解析返回结果是旧的 IP。既然这样就等到明天晚上再停掉旧的 linode 吧。一天下来合人民币也就 2 块钱。©

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

22 条关于 “将 Linode VPS 从东京1机房迁移到东京2” 的评论

  1. 到最后你还是直接迁移了..我要坚守东京1.东京2 的ip 和路线对国人不友好..

    • 都说是东京2对电信线路不友好但是对联通线路非常友好。从文中的测试图上看出来似乎刚好相反。
      曾经在东京1的时候用 Webkaka 测试,那个满意度得分一般在90-120之间,当然多数时候都是120。今天用它测了一下东京2(东京1服务器已经关掉了),得分98。还可以吧,也不算很差。

  2. 引用通告: 水景一页Linode东京1&2机房半月网站速度统计 | 水景一页

  3. 我个人比较担心就是听说Tokyo2线路不好。。。但是最近Tokyo1的Xen 老是在修,2017年已经重启了5次了,简直忍无可忍,可能最近也会搬到Tokyo2去。。。。

    • 这个线路问题还真是不好说。缺乏可靠的测试平台,很难比较全国不同运营商之间的差异。我因为最近几年不在国内,更缺少亲身体会。但是应该差别不是太大吧,特别是随着 Linode 对自己的不同数据中心之间的线路的整合。
      当时 Linode 推着大家升级到 KVM 的时候,卖点之一就是 KVM 打补丁的时候不用暂停服务。但是他们迟迟不升级 Tokyo1,而且我上次问的时候,似乎他们的意思是根本没这个打算。
      退一步讲,其实重启也不是什么大事吧?除非你的应用对在线率要求特别特别的高。而且重启也要不多大一会儿啊,不到30s吧?

  4. 请问博主,现在用的就是东京2吗?子站也是吗?感觉速度还可以啊。我现在用的是conoha。

    • 是的,子站也在 Tokyo2 上。这么多年下来,觉得网站访问速度在国内的地域甚至同一地的不同地区之间差异很大,感觉没法弄了。后来就慢慢不管了,只要我自己访问速度很快就行 :D

      • 觉得你网站相应的够迅速了。我那个不稳定,时快时慢,想换到linode试试。有好建议吗?

        • 反正口碑好的 VPS 就那么几个,而 Linode 算是性价比非常高的一个了。试试无妨。Linode 按小时计费,满一月才按月计费,只是网站搬家稍稍麻烦些。如果有条件可以弄个 Linode VPS 配置做现在服务器的负载均衡试试。不过具体怎么操作我就不了解了,没做过。要是用 Linode 的话记得用我网页底部的推荐链接啊 :D

      • 关键现在不知道是主机慢,还是我配置的问题。现在网站挂了incapsula免费cdn。一个小时几千pv,图片较多,2g内存够用不?

        • 不稳定有可能是多方面的问题吧?比如国内不同地域的线路、免费 CDN 稳定性、突发访问峰值和服务器配置优化等等。得有耐心慢慢分析。
          虽然图片多但那是静态资源,2G 应该够用,不够用还可以直接通过 Linode 控制台随时扩容的。至于服务器配置,我还没有面对这么高PV的配置经验,就给不了什么建议了。

  5. 我迁移到Tokyo2了,不小心把Tokyo1删了。结果发现,ping不是最重要的,传输速度才是。从原来的3M/s突然降到了50K/s,连youtube都看不了了。泪奔,一夜回到解放前!!!手欠的恶果,自己承担!

    • 对你深表同情!删除了就再也找不回来了。
      话说我的经验是这两个机房对国内的速度虽有差别但还不至于这么大。有没有检查是不是别的原因造成的?

雁过留声,人过留名

电子邮件地址不会被公开。 必填项已用*标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>