AWS使用快照创建实例启动失败
问题描述
因业务需求,需要将A集群复制一份到B集群,当做预生产环境使用。但是在AWS使用快照的方式创建EC2实例的时候无法正常启动,通过获取AWS EC2截图能够看到已经到了登录界面。
cnsre运维博客|Linux系统运维|自动化运维|云计算|运维监控
分析过程
在发现问题后尝试使用SSM
登录,但是却无法登录进系统内部。后再停止实例运行,然后在运行实例,依然无法启动。
为了排查是VPC
的问题,还是实例镜像的问题。使用另外一台服务器的镜像启动,但是依然无效。最后在待实例进入 running
状态后,依次选择 Actions
、Instance Settings
、Get System Log
通过获取系统日志发现了一些问题。
后来在通过查看服务器的
pyhton
版本的时候发现cnsre运维博客|Linux系统运维|自动化运维|云计算|运维监控
到这里,基本上能确定是
python
版本的问题了。最后通过分析排查发现是因为环境配置所导致。
Linux 系统默认的
python2.7
被修改为了python3.6.8
快照的恢复使用的应用是Cloud-init
,could-init
调用的是python
也就是系统默认的python2.7
的版本 也就导致cloud-init
调用了python3.6.8
的版本。从而导入配置失败。关于
cloud-init
可参考 https://xixiliguo.github.io/post/cloud-init-1/
解决方法
在/usr/bin/cloud-init
中修改#!/usr/bin/python
为 #!/usr/bin/python2.7
然后手动创建快照。在用创建的快照从新启动一台新的实例来。
最后
为了能够更好的解决这个问题。后来通过实际测试,centos7
系统中默认使用的python
版本为python2.7
,我们通过使用yum
安装,是不会覆盖掉系统的python版本。
yum install python3 -y
python --version
Python 2.7.x
所以建议,系统中同时存在两个python
版本,您使用yum
安装python3
这样不会覆盖系统的python
版本,在您不想使用系统python2.7.x
而使用python3
时,您直接在相应应用指明使用python的版本即可。
如果将Centos7
中系统默认的python
版本修改为python3
时,这个可能会遇到各种各样的问题。
不过python2.7
已经停止维护了,如果不想使用python2.7
,目前可能只能通过升级系统的方式来解决这个问题,centos8
和redhat8
系统默认使用的python
版本都是python3
文章原文
https://cnsre.cn/posts/210311132723
网友评论