后台ceph检测mon数据库目录store.db过大,提示警告 的处理

环境:
mhflex2.3.188
ceph 10.2.10

问题:
后台ceph检测mon数据库目录store.db过大,提示警告。

检测过程:
1、确保环境mon在线数量后,尝试压缩修复。ceph tell mon.wy03 compact。
2、设置日志级别,ceph daemon mon.wy03 config set debug_mon 10,监控mon日志发现数据库在进行压缩。
3、等待压缩完成,检查集群mon状态与store.db目录,问题依然存在。
4、设置日志级别为20,发现mon进程同步超时。
5、监控集群状态日志,发现大量刷新blacklist更新,过量的更新变更osdmap导致数据库文件压大,此时同步过慢导致mon挂住。
6、查看进程ps -ef|grep qemu,发现平台同时多次对同一rbd进行heartbeat检测。
7、检查ceph osd blacklist ls|wc -l,发现后台在大量刷新。怀疑是平台的heartbeat进程导致。
8、在平台上设置-高级设置-物理机自检主存储检查超时时间-为15。
9、取消所有云主机高可用状态,设置为none。重启mn服务。
10、疑似平台同时发起多个heartbeat检测进程引起。
11、检查发现平台心跳服务正常,监控心跳rbd的连接watcher(rados listwatchers -p pl-root rbd_header.f5277b8b4567),发现单台服务器同时存在多个链接会话。
12、监控ceph日志发现新建心跳会话时,mon存在了相同记录,此时新的拉黑老的。
13、查看ceph黑名单(ceph osd blacklist ls|wc -l),集群维持有三千多个。
14、跟踪日志发现老会话依旧占用上锁。
15、设置ceph上锁机制为false(rbd_blacklist_on_break_lock)。
16、检查日志发现没有追加黑名单,并监控心跳rbd的watcher发现数量维持在一个。
17、清理ceph的老黑名单。

结论:
ceph会话broken掉的老锁依然存在IO占用,此时平台新建心跳会话会不断拉黑老会话并自我broken,致使ceph大量的压黑名单列表,从而store.db直线上涨。

处理操作:
1、平台上操作设置-高级设置-物理机自检主存储检查超时时间-为15。
2、每台服务器后台操作
vim /etc/ceph/ceph.conf 添加参数rbd_blacklist_on_break_lock=false。
3、清理黑名单ceph osd blacklist clear。