CEPH集群MON全部挂掉后恢复方法
2017-11-14 18:40
411 查看
CEPH集群MON全部挂掉后恢复方法
2017/11/14 恩松
本文介绍ceph集群中所有mon服务均无法启动或者说mon节点所在服务器os全部无法启动情况下的恢复方法,当然,这种极端情况出现的概率非常低,这里前提是要做好mon节点的配置文件和元数据备份,不然就没办法恢复了。我的环境是使用kolla部署的,恢复方法也都是基于kolla工具下才有效,如果采用物理机部署,具体操作上会有所区别,但大致的思路和原理是一样的。
将该目录完整备份
另外还有 配置文件,里面保存了key,默认路径如下:
同样,将该目录完整备份
我这里所有的相关进程都是跑在docker里,删除mon服务和数据之前先看下集群的整体状态
有2个mon节点,15个osd。现在我们将mon数据和容器都删除掉
另外一个节点执行同样的操作。删除完之后,修改kolla的配置文件,执行部署命令,会发现有错误,在ceph创建keyring时中断了,报错信息如下:
原因是在我删除容器和配置文件后,kolla生成的相关volume是没有删除的。其还存在于/var/lib/docker/volume下。因此当再次构建kolla时,这些已经存在的volume会阻止ceph_mon的启动,会导致上述错误Ceph keyring无法获取而产生的一些错误。因此 删除掉docker volume ls下的卷。再次部署就能够成功的解决问题。
这时再部署即可成功。这里有2个mon节点,我是一个一个的加入的,添加完一个mon节点后,查看集群状态
这其实 是一个全新的ceph集群,现在把之前备份的数据拷贝过来,覆盖新的数据
重启mon服务后,查看集群状态
这里只启动了一个mon节点,整个集群状态还不正常,需要把另外一个mon节点再恢复,整个集群状态才能恢复
恢复第二个节点的配置文件
再次查看集群状态
2017/11/14 恩松
本文介绍ceph集群中所有mon服务均无法启动或者说mon节点所在服务器os全部无法启动情况下的恢复方法,当然,这种极端情况出现的概率非常低,这里前提是要做好mon节点的配置文件和元数据备份,不然就没办法恢复了。我的环境是使用kolla部署的,恢复方法也都是基于kolla工具下才有效,如果采用物理机部署,具体操作上会有所区别,但大致的思路和原理是一样的。
备份配置文件及元数据
采用kolla部署,默认的元数据存储路径如下[root@node01 mon]# cd /var/lib/docker/volumes/ceph_mon/_data/mon/ceph-172.21.196.11/ [root@node01 ceph-172.21.196.11]# ls keyring store.db
将该目录完整备份
[root@node01 ~]# cp -r /var/lib/docker/volumes/ceph_mon/_data/ /root/ceph-mon-bak/
另外还有 配置文件,里面保存了key,默认路径如下:
[root@node01 ~]# cd /etc/kolla/ceph-mon/ [root@node01 ceph-mon]# ls ceph.client.admin.keyring ceph.client.mon.keyring ceph.client.radosgw.keyring ceph.conf ceph.monmap config.json
同样,将该目录完整备份
[root@node01 ceph-mon]# cp -r /etc/kolla/ceph-mon /root/ceph-mon-bak/
我这里所有的相关进程都是跑在docker里,删除mon服务和数据之前先看下集群的整体状态
[root@node01 kolla]# docker exec -ti ceph_mon /bin/bash (ceph-mon)[root@node01 /]# ceph -s cluster 84ff3941-2337-40ca-bd76-fb3be71b0fdd health HEALTH_OK monmap e4: 2 mons at {172.21.196.11=172.21.196.11:6789/0,172.21.196.12=172.21.196.12:6789/0} election epoch 44, quorum 0,1 172.21.196.11,172.21.196.12 osdmap e491: 15 osds: 15 up, 15 in flags sortbitwise,require_jewel_osds pgmap v679746: 7096 pgs, 25 pools, 184 GB data, 50069 objects 555 GB used, 39643 GB / 40199 GB avail 7096 active+clean
有2个mon节点,15个osd。现在我们将mon数据和容器都删除掉
[root@node01 kolla]# docker rm ceph-mon -f [root@node01 kolla]# rm -rf /var/lib/docker/volumes/ceph_mon/ [root@node01 kolla]# rm -rf /etc/kolla/ceph-mon/
另外一个节点执行同样的操作。删除完之后,修改kolla的配置文件,执行部署命令,会发现有错误,在ceph创建keyring时中断了,报错信息如下:
TASK [ceph : Fetching Ceph keyrings] ******************************************* fatal: [controller01]: FAILED! => {“failed”: true, “msg”: “The conditional check ‘{{ (ceph_files_json.stdout | from_json).changed }}’ failed. The error was: No JSON object could be decoded”
原因是在我删除容器和配置文件后,kolla生成的相关volume是没有删除的。其还存在于/var/lib/docker/volume下。因此当再次构建kolla时,这些已经存在的volume会阻止ceph_mon的启动,会导致上述错误Ceph keyring无法获取而产生的一些错误。因此 删除掉docker volume ls下的卷。再次部署就能够成功的解决问题。
[root@node02 kolla]# docker volume ls DRIVER VOLUME NAME local ceph_mon local ceph_mon_config local kolla_logs local libvirtd local nova_compute local nova_libvirt_qemu local openvswitch_db [root@node02 kolla]# docker volume rm ceph_mon ceph_mon_config
这时再部署即可成功。这里有2个mon节点,我是一个一个的加入的,添加完一个mon节点后,查看集群状态
(ceph-mon)[root@node02 /]# ceph -s cluster 84ff3941-2337-40ca-bd76-fb3be71b0fdd health HEALTH_ERR no osds monmap e1: 1 mons at {172.21.196.12=172.21.196.12:6789/0} election epoch 3, quorum 0 172.21.196.12 osdmap e2: 0 osds: 0 up, 0 in flags sortbitwise,require_jewel_osds pgmap v3: 320 pgs, 2 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 320 creating
这其实 是一个全新的ceph集群,现在把之前备份的数据拷贝过来,覆盖新的数据
[root@node02 ~]# cp -r ceph-mon-bak/_data/* /var/lib/docker/volumes/ceph_mon/_data/ cp: overwrite ‘/var/lib/docker/volumes/ceph_mon/_data/mon/ceph-172.21.196.12/store.db/LOCK’? y cp: overwrite ‘/var/lib/docker/volumes/ceph_mon/_data/mon/ceph-172.21.196.12/store.db/CURRENT’? y cp: overwrite ‘/var/lib/docker/volumes/ceph_mon/_data/mon/ceph-172.21.196.12/keyring’? y [root@node02 ~]# cp -r ceph-mon-bak/ceph-mon/* /etc/kolla/ceph-mon/ cp: overwrite ‘/etc/kolla/ceph-mon/ceph.client.admin.keyring’? y cp: overwrite ‘/etc/kolla/ceph-mon/ceph.client.mon.keyring’? y cp: overwrite ‘/etc/kolla/ceph-mon/ceph.client.radosgw.keyring’? y cp: overwrite ‘/etc/kolla/ceph-mon/ceph.conf’? y cp: overwrite ‘/etc/kolla/ceph-mon/ceph.monmap’? y cp: overwrite ‘/etc/kolla/ceph-mon/config.json’? y
重启mon服务后,查看集群状态
(ceph-mon)[root@node02 /]# ceph -s Error connecting to cluster: TimedOut
这里只启动了一个mon节点,整个集群状态还不正常,需要把另外一个mon节点再恢复,整个集群状态才能恢复
恢复第二个节点的配置文件
[root@node01 ceph-mon]# cp -r /root/ceph-mon-bak/ceph-mon/* . cp: overwrite ‘./ceph.client.admin.keyring’? y cp: overwrite ‘./ceph.client.mon.keyring’? y cp: overwrite ‘./ceph.client.radosgw.keyring’? y cp: overwrite ‘./ceph.conf’? y cp: overwrite ‘./ceph.monmap’? y cp: overwrite ‘./config.json’? y [root@node01 ceph-mon]# [root@node01 ceph-mon]# cp -r /root/ceph-mon-bak/_data/ bootstrap-mds/ bootstrap-osd/ bootstrap-rgw/ mds/ mon/ osd/ radosgw/ tmp/ [root@node01 ceph-mon]# cp -r /root/ceph-mon-bak/_data/* /var/lib/docker/volumes/ceph_mon/_data/ cp: overwrite ‘/var/lib/docker/volumes/ceph_mon/_data/mon/ceph-172.21.196.11/store.db/LOCK’? y cp: overwrite ‘/var/lib/docker/volumes/ceph_mon/_data/mon/ceph-172.21.196.11/store.db/CURRENT’? y cp: overwrite ‘/var/lib/docker/volumes/ceph_mon/_data/mon/ceph-172.21.196.11/keyring’? y
再次查看集群状态
[root@node01 ceph-mon]# docker exec -ti ceph_mon bash (ceph-mon)[root@node01 /]# ceph -s cluster 84ff3941-2337-40ca-bd76-fb3be71b0fdd health HEALTH_OK monmap e4: 2 mons at {172.21.196.11=172.21.196.11:6789/0,172.21.196.12=172.21.196.12:6789/0} election epoch 44, quorum 0,1 172.21.196.11,172.21.196.12 osdmap e491: 15 osds: 15 up, 15 in flags sortbitwise,require_jewel_osds pgmap v679711: 7096 pgs, 25 pools, 184 GB data, 50069 objects 555 GB used, 39643 GB / 40199 GB avail 7096 active+clean
相关文章推荐
- CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法
- 解决ios7越狱第三方应用全部消失及快速恢复原桌面的方法
- 源码安装ceph后使用测试集群的方法
- 苹果iMessage和FaceTime服务当前已全部挂掉(苹果更新:系统已经恢复)
- ceph集群在线添加||删除+mon&&osd
- 在ceph集群中摘掉包含(mon osd mds)的节点
- Ceph集群搬迁后的恢复过程
- 操作系统崩溃,数据库全部文件都在时,数据库恢复方法
- openstack-ocata-mariadb集群恢复方法
- Ceph集群中如何摘除一个包含mon、osd和mds的节点
- 超强的储存方法:即使连续128个扇区全部损坏也能恢复原数据
- CEPH集群RBD快照创建、恢复、删除、克隆
- Ceph集群磁盘没有剩余空间的解决方法
- 为docker ceph集群添加mon
- ceph存储 集群恢复流程详解
- ceph集群单个osd超95%导致集群无法读写集群恢复过程
- ceph存储集群发生scrub error后PG验证和repair的方法
- Ceph的集群全部换IP
- CDH Can't scan a pre-transactional edit log,Timed out waiting 120000ms ,JournalNode数据文件破坏集群恢复方法
- CEPH集群RBD快照创建、恢复、删除、克隆(转)