记一次阿里云服务系统奔溃事件及处理过程

昨晚阿里云上部署的应用服务突然无法访问,以为是服务挂了,准备ssh远程上去看个究竟。以前也出现过类似的情况,解决方案是远程上去后重启tomcat服务马上就恢复正常。这次准备ssh竟然连接不上,瞬间眼前一黑。打电话问同事是否做了什么操作,同事反馈,由于服务无法访问,他直接把系统执行reboot给重启了。reboot后直接无法ssh连接,也就是系统不能正常重启。登录阿里云控制台重启ECS实例依旧不成功,通过阿里云控制台实例的远程连接 进入管理终端,界面显示如下:
yun

通过上图说明系统无法重启,打电话给阿里云客服,客服建议提交工单找阿里工程师处理(工单受理等待时间一般为半小时),工程师尝试恢复系统也无果,给出如下处理建议。

尝试了各种方法暂时无法解决这个问题。
建议做好备份,然后重新初始化磁盘,然后重新安装应用恢复业务,加强主机安全。
创建快照:https://help.aliyun.com/document_detail/25455.html?spm=5176.product25365.6.701.haklDS
重新初始化磁盘 https://help.aliyun.com/document_detail/25449.html?spm=5176.doc25455.6.697.ywlUna
重新初始化后如需要之前系统的数据,可以使用快照创建云盘,然后挂载到数据,然后拷贝出需要的数据。https://help.aliyun.com/document_detail/32317.html?spm=5176.doc25455.6.680.JDavY

由于服务器上有重要数据包括应用部署文件及mysql数据库文件,之前都没有备份,所以接下来的每一步操作都慎之又慎,心里默念数据不能丢。具体操作步骤如下:

对系统盘创建快照

这个比较耗时,系统盘空间20G创建快照大概用时20分钟左右(直接在阿里云界面操作)。

创建云盘并保存系统盘快照

创建云盘(阿里云云盘现在开始收费,按时收费份SSD盘和普通盘价格不一样,SSD盘20G每小时0.028元),将快照导入云盘(直接在阿里云界面操作)。创建云盘选择地区时一定要注意选择与ECS服务地区一致,否则到时候无法挂载。

系统盘格式化

点击重新初始化磁盘(直接在阿里云界面操作),做了这个操作相当于对ECS实例进行了恢复出厂设置操作

启动实例

直接在界面操作

ssh远程连接

使用ssh远程工具进行连接,输入密码登录成功,一个全新ESC服务器诞生了

挂载云盘

直接在阿里云界面操作,挂载云盘后,在linux系统中就会发现一个新的空间,挂载盘作为系统盘中根目录下的一个文件夹,文件夹中的内容就是之前系统盘中数据,目录结构也与之前系统盘中的目录保持一致。

配置jdk

直接在挂载盘中找到之前部署的应用,启动tomcat无法启动,报错找不到jdk,在/etc/profile下配置jdk环境变量并让jdk生效。

1
vim /etc/profile

/etc/profile文件最底部添加jdk环境变量的配置

1
2
3
4
export JAVA_HOME=/mnt/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH

使配置立即生效

1
source /etc/profile

mysql数据库迁移

先安装数据库

1
yum install -y mysql-server mysql mysql-devel

老数据迁移 在/var/lib/mysql目录下 执行如下数据,将老数据迁移到新安装的数据库,迁移是注意,对本目录下ibdata1进行备份,防止迁移迁移过来后数据库服务不能启动

1
2
3
cp /mnt/var/lib/mysql/ibdata1 ./ -f ##这是保存的数据
cp -rf /mnt/var/lib/mysql/databasename ./ ##这是要迁移的数据库目录 与数据库名同名
sync

启动mysql服务,并登录mysql 查询数据是否迁移成功。

至此,数据库迁移成功,jdk环境变量配置成功,tomcat服务重新启动,大功告成!

结语

本次处理问题环境

环境 版本
系统 linux Centos6.5
mysql 5.1.73
jdk build 1.7.0_79-b15
tomcat 7.0.67

此次最担心的是数据丢失,告诫自己,以后在生产环境必须对数据库进行备份或做数据实时同步,防止数据丢失。