误删/var/log/下所有日志引起openstack所有服务故障的恢复

1. 问题背景

今天openstack群里一位老哥在群里问了一个问题
在这里插入图片描述
咦,有红包
对于我这个穷B来说,红包就是我解决问题的动力,于是我就私聊了解了一下情况。

2. 问题定位

原来这个老哥在线上生产环境清理日志的时候,不小心在控制节点的/var/log/目录下执行了rm -rf *,删除了目录下面的所有文件。导致openstack的组件服务全部down掉,其原因是openstack组件在运行过程中,服务会不停的向日志文件写入日志,如果日志目录不存在,组件没法成功的写入日志,就会产生异常,导致服务故障。

3. 解决问题

既然我们已经知道问题产生的原因,那我们就好办了,解决思路就是恢复日志目录,然后重启相应的服务。
连上这个老哥的机器,确认了一下这个老哥的线上环境总共有以下服务需要恢复,glance,nova,keystone,neutron,keystone,horizon,cinder。

3.1 恢复glance服务

glance服务对应的日志目录/var/log/glance/
我们需要重建/var/log/glance/目录、对其授权,然后重启glance服务

mkdir /var/log/glance
chown glance.glance /var/log/glance
systemctl start openstack-glance-api.service \
  openstack-glance-registry.service

3.2 恢复glance服务

nova服务对应的日志目录/var/log/nova/
我们需要重建/var/log/nova/目录、对其授权,然后重启nova服务

mkdir /var/log/nova
chown nova.nova /var/log/nova
systemctl restart openstack-nova-api.service \
  openstack-nova-consoleauth openstack-nova-scheduler.service \
  openstack-nova-conductor.service openstack-nova-novncproxy.service

3.2 恢复keystone服务

keystone服务对应的日志目录/var/log/keystone/
我们需要重建/var/log/keystone/目录、对其授权,然后重启keystone服务

mkdir /var/log/keystone
chown keystone.keystone /var/log/keystone

这里我们要注意,keystone的服务是由httpd服务管理的,所以这里我们还需要恢复httpd服务

mkdir /var/log/httpd
systemctl restart httpd.service

3.3 恢复neutron服务

neutron服务对应的日志目录/var/log/neutron/
我们就需要重建/var/log/neutron/目录、对其授权,然后重启neutron服务

mkdir /var/log/neutron
chown neutron.neutron /var/log/neutron
systemctl restart neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service neutron-l3-agent.service

3.4 恢复cinder服务

cinder服务对应的日志目录/var/log/cinder/
我们就需要重建/var/log/cinder/目录、对其授权,然后重启cinder服务

mkdir /var/log/cinder
chown cinder.cinder /var/log/cinder
systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service

3.5 恢复horizon服务

horizon服务对应由httpd服务管理。在3.3恢复keystone服务的时候我们已经恢复了httpd服务。所以horizon服务不需要再做另外的操作。

至此,服务已全部恢复完毕。

PS:

在给这个老哥恢复neutron服务的过程中,发现日志目录重建之后重启服务,neutron-server无法正常重启,neutron-server的日志显示端口占用。
解决办法:
查看端口占用进程

ss -nltpd | grep <端口号>

在输出结果中找到进程的PID,杀死进程,然后再重新启动服务。

kill -9 <PID>
写在最后:

千万不要在线上环境乱用 rm -rf,实际环境中尽量少用,养成习惯,好的习惯在关键时刻能救你一命。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值