Amazon EC2学习笔记(五)——挽救因升级挂掉的EC2 Instance
前言
上一篇笔记介绍了Giroro将自己的Amazon Linux从2010.11.1 Beta升级到2011.02 Beta的步骤,日前,Giroro偶然发现了Amazon不声不响的又将Amazon Linux升级到了2011.09版(没有Beta标签了哦),于是Giroro就打算故技重施,继续升级至最新版。但是运气不佳的Giroro在升级完成后,却再也无法连接上instance,然后查阅更新说明的时候,无奈的发现Known Issues里赫然写着“After using yum to upgrade to Amazon Linux AMI 2011.09, t1.micro 32-bit instances fail to reboot.”- -而由于Giroro并没有备份的习惯,所以只好苦逼地想方设法挽救已死的instance……所幸在木头的提醒下(他的instance也挂过- -),Giroro终于找到了办法,将数据从原instance里弄了出来,并最终复活了这个部落格。
PS: 这篇笔记并不是教人如何将无法启动的instance重新启起来,而是想办法从原instance的硬盘里把网站相关数据迁移出来,并移植到另一个EC2 instance里。所以如果你想问怎样让升级后挂掉的instance起死回生,对不起,Giroro做不到……
正文
这个方法的基本思路是将挂掉的instance的硬盘挂载在一个新instance上,然后将硬盘里面的数据复制到新instance里去。具体步骤如下:
1. 关闭挂掉的EC2 Instance
2. 将硬盘从原instance上卸载
3. Launch一个新EC2 Instance,具体细节第一篇笔记里介绍得很清楚,这里就不赘述了
4. 将硬盘安装到新instance上,安装位置为/dev/sda2(因为新instance会新建一个Volume并安装在/dev/sda1上,所以我们要换一个位置)
PS: 我不确定EC2 Instance是否支持热插拔,所以建议先关闭instance,安装硬盘之后再启动。不过要注意,关闭再启动instance之后,Elastic IP需要重新关联,切记!
5. 在/mnt目录下建立文件夹以挂载刚安装的硬盘
6. 挂载硬盘到刚才建立的挂载点
好了,现在就可以在这个文件夹下访问之前硬盘里的所有内容了。于是Giroro赶紧把/home/wwwroot和/usr/local/mysql/var下面的文件挪到了新instance上,同时还把/usr/local/nginx/conf下的一些配置文件挪了过去。然后重启instance,重启LNMP,大功告成!
结束
其实整个操作还是挺简单的,而且由于种种原因,Amazon的北加州机房访问速度越来越慢,所以趁此机会,Giroro将自己的instance挪到了日本机房。不过这种跨Region的迁移就没有上面写的那么简单了,最主要的问题就是在日本机房是无法看到北加州机房里的EBS。所以其实Giroro的做法是将需迁移的文件夹打包下载了下来,然后重新上传至日本的instance,稍微麻烦了点。而且在这过程中我还发现2011.09版的Amazon Linux已经不能像第二篇笔记结束时介绍的那样,通过把authorized_keys复制到/home/www/.ssh文件夹下来开启www用户的登录了,这一点大家需要注意。