如果在旧的MON节点上再次部署新的MON,再又没有清理环境,之前的MON数据库会保留着done文件,MON数据库里面还是记录着之前fsid,keyring等等,和新集群是两套完全不同的,所以这个节点的MON自然到达不了MON群体。
即使你单单删除了/var/lib/ceph/mon下的东西,而没有清理那些keyring,也有可能会因为收集了旧集群的秘钥而发生稀奇古怪的问题。
对于Jewel,你一不小心删除了/var/lib/ceph/mon目录,或者其他的OSD目录或者/var/run/ceph目录,然后又重建了目录,依然部署不上,是因为Jewel的所有Ceph指定都是运行在ceph:ceph用户下的,自然不能在root权限目录下建立任何文件,修改权限即可。
Ceph生成MON数据库是依照主机的hostname来命名至目录/var/lib/ceph/mon/${cluster}-${hostname}的,而检测SOCKET文件则是用ceph.conf里面的mon_initial_members里面的名字来检测的 ,如果mon_initial_members里面的名字和真是的主机名不一致,就会报错。
一旦你运行了ceph-deploy mon create-initial指令,并且失败了,有极大的可能性已经在某些节点建立好了MON的数据库,再次执行可能会因为旧的环境导致再次失败,所以如果失败了,执行一下第二节中的清理环境即可。清理完毕后,再执行ceph-deploy mon create-initial。
相关阅读
RMAN 配置、监控与管理
Hadoop学习11--Ha集群配置启动
rsync 服务部署详解
【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识