Linode跨节点迁移:从Tokyo到Fremont
背景
上一篇博客交代了如何在 Linode 上搭建邮件服务器,并配置好各种协议、记录来投入实际使用。
由于实践过程中,曾经尝试使用明文协议与服务器交流数据,可能泄露了账号、密码信息,造成之后被攻击发送垃圾邮件(详细情况类似于如下链接:链接 1,链接 2),IP 被上了黑名单,在 mail-tester.com 上的测试评分为 0 分,同时还收到了 Linode 的警告。
为了能继续使用邮箱服务,我只好想着法子给 Linode 换一个 IP。但原则上 Linode 是不支持换 IP 的。幸运的是,它支持 VPS 的迁移,而且方便快捷。从 Tokyo 节点迁移到 Fremont 节点后 IP 一般会发生变动(对于网络延迟,权衡了下大家的说法,Fremont 还不错:官方测速),这样就可以间接的更换 IP 了。
迁移过程很简单,这里做一下记录。
迁移准备
发出迁移请求
Linode 有比较完善的 Support。对于迁移这种情况,可以在 Support 页面发出如下请求:
1 2 3 4 5 6 7 |
|
1 分钟之后,我就收到了技术支持的回复:
1 2 3 4 5 6 7 8 9 10 |
|
此时,Linode 控制面板中已经多了一个迁移的提醒:You have a migration pending!
。
不过先不要着急迁移,因为迁移过程是不可恢复的,我们需要首先将 VPS 中得重要数据备份到本地。注意如回复中所说,这种备份不同于 Linode 中的备份服务。
备份数据
找到一份科学的全盘备份数据方式:linode 用户通过 ssh+dd 命令复制整个磁盘。不可否认 dd 做传输比 scp 一个个拷贝文件快得多,但由于需要将整个盘 5G 数据全部通过网络传输,而家里网速慢,传输数据只有大概 100KB/s 的速度,需要等待太长时间。
实际上,我所需要备份的文件无非是/home
目录下得所有数据和部分服务的配置数据(比如 postfix、dovecot、nginx 等),总共大概也就 100MB,于是决定选择性的用 scp 传输备份数据:
scp root@vps-ip:/backup /home/backup #vps-ip 替换为服务器 IP 地址
同时由于零散的传输文件效率不高,可以考虑先将服务器端所有小文件使用 tar 命令压缩到一个包里:
tar zcvf backup.gz /home /etc/nginx/sites-enable
在本地的解压缩命令如下:
tar zxvf backup.gz
当然,实际上我们都不会希望备份数据需要被使用到啦,而迁移 vps 丢失数据的概率应该也是很小的。
修改 DNS 记录
由于迁移过程需要大概一个多小时,网站服务的不可访问是无法避免了。只好尽可能将迁移过程放在深夜没有用户访问需求的时候。
从这个角度讲,DNS 的修改也没有特别的及时性要求。在前已完成前修改好 DNS 服务器中的 A 记录、MX 记录等配置即可。
迁移
在正式迁移之前,需要关闭服务器。
然后点击 Linode 控制面板中的 migration 按钮。接下来,就是一个多小时的等待。
后续
完成迁移之后,开启 VPS,还需要注意修改服务中 IP 相关的配置。比如 shadowsocks 里的 json.config 中的 server ip。
一切顺利完成后,别忘了去 Support 界面回复 Ticket =).
如果你考虑租用 Linode 机器,而又不吝啬使用我的推荐码,本博客不胜感激=).