阿里云网络迁移引发公司服务器宕机的24小时吐血恢复纪实

7月初收到阿里云邮件,提示说需要做经典网络预约迁移到专用网络(更安全,配置更灵活的虚拟网络空间), 于是乎就随意自然选择了一个工作日日期(下午14点:30预约迁移,客户使用高峰期,这个时间选的我也是后悔莫及o(╥﹏╥)o)。

如期迁移,14:35开始, 收到客户反馈,PC系统和手机端APP、小程序均无法使用, 内部测试人员检查结果也显示无法正常使用, 服务器处于瘫痪状态(挖槽, 阿里云生产从来没有全部挂过, 我也没有经手过阿里云的初期搭建,所有的人都在问我咋回事,公司没有运维,我是兼职运维(✖人✖))。

于是开始了24小时通宵恢复的血泪史。。

--------------------------------------------事件描述-------------------------------------------------

2018-7-7 14:30 按照计划阿里云系统自动开启迁移进程,

迁移流程为:

自动停机 -> 自动迁移 -> 自启动

所有实例在10分钟自动迁移完毕, 此时收到客户反馈服务器无法使用,

经检查问题为:

1. 本公司在阿里云有两个阿里云账号(以前搭建阿里云的同事想不明白脑子哪根筋搭错了, 开两个账号,画个圈圈诅咒下他),xxxA@gmail.com(简称A)和xxxB@gmail.com(简称B)。两个账号的实例数量分布情况为: A : 12 个实例 B : 20 个实例 + 2个RDS数据库 + 2个memcache + 1个Redis

由于A服务器迁移后, 网络变更导致A,B服务器间无法进行局域网通信(经典网络和专用网络间实例无法进行局域网通信, 之前未考虑到这点!!!),故A无法连接部署在B上的数据库,同时A和B服务器之间的接口通信也依赖局域网通信,也被中断, 两者导致整个系统服务器中断(当时看到这一点,我就知道晚上的睡眠时间已经喂狗了,,)。

--------------------------------------------解决办法描述-------------------------------------------------

经和阿里云技术客服沟通, A进行的网络迁移是不可逆,故无法做还原!! 只能把B内的实例从经典网络迁移到专用网络, 从而构建A和B间实例的局域网通信。
问题解决步骤:
1.B内的所有实例从经典网络迁移到专用网络
2.AB均需配置云企的专用网络交换机和VPC,通过交换机让AB账号实例ping互通
3.分开配置A, B内实例的内网IP网段, 防止交换机IP冲突
4.网络迁移后,A,B实例的内网IP全部发生了变化,修改每个实例内的 /etc/hosts 的配置, 把旧内网IP改成新的内网IP
5.RDS数据库不支持经典网络切换到专用网络(后来发现也可以切换,后话了),需要生成RDS外网访问域名, 替换掉所有实例中配置中的数据库链接
6.数据库的账号是根据IP进行授权,内网IP变化有部分账号需要重新修改授权(重新grant)
7.检查所有实例中的内网IP配置, 把旧的内网IP修改为新的内网IP
8.RDS的白名单中把所有实例的新的内网IP设置进去防止被拦截
9.逐个重启数据库和所有实例, 查看日志检测是否正常启动
10.测试实例是否能够正常访问, 检查PC、APP、小程序是否正常
11.通知产品人员和测试人员进行产品可用性和稳定性测试
内部确认系统正常后, 通知运营和客户恢复系统使用

由于阿里云ECS服务器总共加起来有二十多台, 加上RDS数据库、缓存、TFS、SolrCloud、MQ等, 几乎每台机子都要检查修改IP, 重新启动测试是否正常。。

中间被有几个点被卡住:

1. 两个账号对应两个专用网络, 这两个专用网络对应的网段(第三位)不能配置相同,会导致IP网段冲突, 阿里云的小哥帮定位了俩小时!!(领导一直当时坐我旁边, 我也很无奈啊~~)

2. TFS不知道如何启动(命令没找到, history也没找到~~),摸索啊摸索,尝试啊尝试, 终于找到了启动方法:

cd /opt/tfs/scripts
#启动dataServer数据库(两台): 
./tfs start_ds 1-2 #启动nameServer :
.
/tfs start_ns

3. rokectMQ恢复,修改broker配置的IP

 

全部搞完已经是下午三点,整整24小时没闭眼, 虽然累趴,但是也算是终于全部把生产服务器摸清了一遍, 下次也更有底了,这就是运维的苦吧~~

posted @ 2018-08-03 12:07  小马哥的春天  阅读(592)  评论(0编辑  收藏  举报