问题现象
新部署的集群,无法正常启动mon,执行 ceph health detail
有如下输出信息
$ ceph health detail
……
mon.node3 (rank 2) addr 192.168.1.121:6789/0 is down (out of quorum)
原因分析
从 ceph health detail
输出信息来看,是node3节点出现的异,导出无法完成quorum。经过信息核对,node3节点的IP地址和实际配置的IP地址是不匹配的。而通过在正常的节点node1上执行 ceph daemon mon.node1 mon_status
进行核实map信息,map中记录的node3的地址存在错误。
处理过程
1、停掉有问题的mon进程
systemctl stop ceph-mon@{host}
2、抽取map,命令如下:
ceph-mon -i {id} --extract-monmap /tmp/monmap
如:
ceph-mon -i node3 --extract-monmap /tmp/monmap
3、修改map,把有异常的map信息删除,命令如下:
monmaptool --rm {id} /tmp/monmap
如:
monmaptool --rm node3 /tmp/monmap
4、可以通过print命令来验证一下是否已经删掉,命令如下:
monmaptool --print /tmp/monmap
执行结果类似如下这样:
$ monmaptool --print /tmp/monmap
monmaptool: monmap file /tmp/monmap
epoch 3
fsid 9a0ef35c-691a-4c3c-b242-c5a57e43e08a
last_changed 2018-07-20 12:01:29.580779
created 2018-07-20 11:57:44.542507
0: 192.168.1.10:6789/0 mon.node1
1: 192.168.1.11:6789/0 mon.node2
5、重新把正确的ip添加到monmap,命令如下:
monmaptool --add {id} {IP}:{port} /tmp/monmap
如:
monmaptool --add node3 192.168.1.12:6789 /tmp/monmap
6、注入monmap,命令如下:
ceph-mon -i {id} --inject-monmap /tmp/monmap
如:
ceph-mon -i node3 --inject-monmap /tmp/monmap
7、重启mon进程,命令如下:
systemctl start ceph-mon@{id}
如:
systemctl start ceph-mon@node3
结果验证
通过 ceph -s
或 ceph health detail
确认集群状态为HEALTH_OK