1、目 录一、前言5二.集群环境51.集群信息52. 所有mon均发生故障72.1停止所有mon服务72.2删除所有mon配置文件8三.利用osd恢复mon81.创建一个mon临时目录82.停止所有服务93.收集mon信息到/tmp/mon-store93.1开始收集ceph03的mon信息93.2将ceph03收集的信息同步到ceph0293.3再收集ceph02的mon信息103.4将ceph02的汇总信息同步到ceph01113.5最后收集ceph01的mon信息113.6 查看信息同步后的文件12四.重构store.db121.在ceph01上进行重构操作122.复制重构文件并创建其他相关文件13五.创建monmap141.利用monmaptool工具创建mommap142.在ceph01上导入monmop143.修改mon目录权限144.修改ceph.conf155.启动服务166.查看集群信息16六、在ceph01上开始创建mgr181、通过ceph-deploy创建182.查看密钥193.创建client.bootstrap-mgr密钥204. client.bootstra
2、p-mgr的密钥导到ceph.keyring中205.再次创建mgr成功206.查看集群信息217.开启dashboard功能218.浏览器打开dashboard界面229.添加其他模块的密钥22七.添加其他mon节点241. 在ceph02添加mon节点(getmap方式)241.1安装ceph组件241.2查看monitor信息241.3建立mon默认目录251.4创建一个临时目录251.5获取 mon 的 keyring 文件251.6获取集群的 mon map251.7格式化mon默认目录261.8修改文件权限261.9加入集群271.10启动服务查看集群272. 在ceph03添加mon节点(monmaptool方式)282.1准备工作282.2查看fsid信息282.3通过monmaptool创建monmap文件292.4查看monmap文件的内容292.5从其他活动的monitor节点拷贝keyring密钥292.6生成文件292.7启动ceph03的mon进程302.8查看进程及集群信息30八.添加其他mgr节点321.在ceph02上添加mgr(ceph-deploy
3、方式)321.1在部署节点(ceph01)上执行创建321.2因认证问题创建失败331.3修改/var/lib/ceph/bootstrap-mgr/ceph.keyring341.4创建成功341.5集群中不包含ceph02的mgr信息351.6重启ceph02的mgr进程362.在ceph03上添加mgr(手动方式)362.1查看密钥是否一致362.2创建mgr372.3查看ceph auth信息372.4启动服务382.5查看集群信息38九.恢复原来的OSD节点381.查看现在的osd状态392.查看osd down的服务状态393.尝试启动服务394.查看挂载情况405.再次查看OSD状态和集群状态41Cphe mon节点发生故障处理 一、前言在生产环境中为确保ceph集群的可靠性和稳定性,对集群中的monitor数量作了规定,要求在集群中的MON节点数量为1、3、5、7等奇数个。一般推荐3个,如果集群规模很大,可以设置5个或7个。正常来说很少出现集群中的所有MON同时挂掉的情况,但凡事没有绝对性。与您中彩票的概率一样,集群中的MON也可能出现全部失效或发生故障的情况。假如集群
4、中的所有MON都出现故障,这时Ceph集群就无法正常工作,外界客户端将无法进行IO操作,需要尽快对集群进行恢复。对于此种情况的恢复,在一些网站上也有过介绍与实际解决办法,但其中方法与步骤有时无法进行下去,这可能是故意隐藏了某些操作或参数吧,这个不过于多言。其中在官网上也提供了利用OSD来重构store.db的脚本,用于对MON的元数据进行重构。现根据这个脚本现在进行分步骤进行恢复,使集群的所有功能都恢复正常。为了能使您更容易地理解与操作,本文中采用了大量的实际操作截图,以供您在今后实操中作以对比和鉴别,同时也真心希望您没有这个机会!二.集群环境1.集群信息本次采用3台虚拟服务器,创建3个mon和6个osd,集群状态HEALTH_OK。Ceph版本:2.0.1 ceph-deploy版本:ceph version 12.2.13 luminous (stable)操作系统:CentOS Linux release 7.6.1810 (Core)节点名称:ceph01:192.168.1.201/24 ceph02:192.168.1.202/24 ceph03:192.168.1.203
5、ceph.conf配置文件的内容:2. 所有mon均发生故障友情提示:决不要在真实的生产环境中进行操作,否则您会引火烧身!本文档是在模拟实验环境进行的,通过将所有mon的服务停止掉来模拟生产环境全部mon发生故障。因此您要正常的生产环境中进行操作,除非生产环境真的瘫痪了。2.1停止所有mon服务在所有mon节点上停止mon服务来模拟故障。systemctl stop ceph-mon.target可以看到当集群有两个节点停止服务,在第三个节点上就无法使用ceph s查询了。2.2删除所有mon配置文件其实在任何系统运维过程中,删除操作均要谨慎。我们可以通过mv将原来的文件和系统进行备份,既起到删除的作用,又起到原系统备份的作用。因此在删除前能想到备份工作,这也是您的一种态度。mv /var/lib/ceph/mon/ceph-ceph1/ /var/lib/ceph/mon/ceph-ceph1.backmv /var/lib/ceph/mon/ceph-ceph2/ /var/lib/ceph/mon/ceph-ceph2.backmv /var/lib/ceph/mon/ceph-
6、ceph3/ /var/lib/ceph/mon/ceph-ceph3.back现在集群已经不可用了三.利用osd恢复mon如果您所运维的的数据中心意外的断电造成mon节点的服务器无法启动操作系统,在这种很不幸的情况下,我们只有通过存放在 OSDs 上的信息来恢复 monitor 的数据库。1.创建一个mon临时目录在第一个osd节点(ceph03)上分别执行命令:mkdir -p /tmp/mon-store2.停止所有服务systemctl stop ceph*.target3.收集mon信息到/tmp/mon-store3.1开始收集ceph03的mon信息在ceph03上执行命令:for osd in /var/lib/ceph/osd/ceph-*;do ceph-objectstore-tool -data-path $osd -op update-mon-db -mon-store-path /tmp/mon-store -no-mon-config; done3.2将ceph03收集的信息同步到ceph02在ceph03上执行命令:rsync -avz /tmp/mon
7、-store/ rootceph02:/tmp/mon-store/3.3再收集ceph02的mon信息在第二个osd节点(ceph2)上执行命令:for osd in /var/lib/ceph/osd/ceph-*; do ceph-objectstore-tool -data-path $osd -op update-mon-db -mon-store-path /tmp/mon-store -no-mon-config; done3.4将ceph02的汇总信息同步到ceph01在ceph2上执行命令:rsync -avz /tmp/mon-store/ rootceph01:/tmp/mon-store/3.5最后收集ceph01的mon信息在第三个osd节点(ceph01)上执行命令:for osd in /var/lib/ceph/osd/ceph-*; do ceph-objectstore-tool -data-path $osd -op update-mon-db -mon-store-path /tmp/mon-store -no-mon-config; done3
8、.6 查看信息同步后的文件由于ceph01是同步信息最后一个节点,它上面的信息最完整。四.重构store.db1.在ceph01上进行重构操作此时3台服务器mon信息已经收集完成,在ceph01服务器上的信息最完整,所以我们要在ceph01上进行重构store.db的工作。ceph-monstore-tool /tmp/mon-store/ rebuild - -keyring /etc/ceph/ceph.client.admin.keyring 2.复制重构文件并创建其他相关文件将重构都store.db等文件复制到mon文件夹下,并创建相关文件mkdir -p /var/lib/ceph/mon/ceph-ceph01cp -ra /tmp/mon-store/* /var/lib/ceph/mon/ceph-ceph01/touch /var/lib/ceph/mon/ceph-ceph01/donetouch /var/lib/ceph/mon/ceph-ceph01/systemdceph-authtool -create-keyring /var/lib/ceph/mon/ceph-ceph01/keyring -gen-key -n mon. -cap mon allow *五.创建monmap1.利用monmaptool工具创建mommap我们先将ceph01加入monmap,这样可以先恢复一个mon,其他mon待集群正常后再加入进来。首先看一下原集群的fsid,这个fsid可以在/etc/ceph/ceph.conf中找到:monmaptool -create -fsid 3b35fd5a-a40b-4470-b7bc-480278cdae30 -add ceph01 192.168.1.201:6789 monmap2.在ceph01上导入monmopceph-mon -i ceph01 -inject-monmap monmap3.修改mon目录权限chown -R ceph:ceph /var/lib/ceph/mon/chmod -R 755 /var/lib/ceph/mon/4.修改ceph.conf去掉其它的mon节点信息,然后分发到其它节点去。
《实操解决Ceph集群中Mon节点的故障》由会员lexu****2003分享,可在线阅读,更多相关《实操解决Ceph集群中Mon节点的故障》请在金锄头文库上搜索。