Ceph MON 命令详解
MON(Monitor)是 Ceph 集群的大脑,负责维护集群映射(cluster map)和状态信息。MON 组件确保集群的一致性和协调性,是 Ceph 高可用性的关键组成部分。
MON 基础命令
1. 查看 MON 状态
# 查看 MON 状态概览
ceph mon stat
# 查看 MON 映射信息
ceph mon dump
# 查看 MON 仲裁状态
ceph quorum_status
# 查看 MON 详细信息
ceph mon metadata
2. MON 管理命令
# 添加 MON
ceph mon add <mon_id> <ip_address>
# 删除 MON
ceph mon remove <mon_id>
# 查看 MON 状态详情
ceph mon status
MON 高可用配置
1. 部署和管理 MON 服务
在 cephadm 环境中,通常使用 orch 命令来管理 MON:
# 查看 MON 服务状态
ceph orch ls --service-type mon
# 部署 MON 服务到指定节点
ceph orch apply mon --placement="<node1> <node2> <node3>"
# 手动添加 MON 实例
ceph orch daemon add mon <node>
# 移除 MON 实例
ceph orch daemon rm <mon_daemon_name>
2. MON 网络配置
# 配置公共网络
ceph config set global public_network <network_cidr>
# 配置集群网络
ceph config set global cluster_network <network_cidr>
# 查看当前网络配置
ceph config get mon public_network
ceph config get mon cluster_network
MON 故障排查
1. 日志查看
在容器化部署环境中(如使用podman运行Ceph),MON日志可以通过以下方式查看:
# 首先找到运行MON的容器
podman ps | grep mon
# 查看特定MON容器的日志
podman logs ceph-mon-ceph1
# 实时跟踪MON容器日志
podman logs -f ceph-mon-ceph1
# 或者进入容器内部查看日志文件
podman exec -it ceph-mon-ceph1 ls /var/log/ceph/
podman exec -it ceph-mon-ceph1 cat /var/log/ceph/ceph-mon.ceph1.log
2. 状态检查
# 检查 MON 时钟偏移
ceph health detail | grep clock
# 检查 MON 磁盘空间
ceph health detail | grep mon
# 检查 MON 选举状态
ceph quorum_status
常用 MON 管理场景
场景 1:扩展 MON 集群
向现有集群添加新的 MON 节点:
# 1. 添加新主机到集群
ceph orch host add <new_node> <ip_address>
# 2. 部署 MON 服务到新节点
ceph orch daemon add mon <new_node>
# 3. 验证 MON 状态
ceph mon dump
ceph quorum_status
场景 2:替换故障 MON
当某个 MON 节点发生故障时,需要替换:
# 1. 移除故障 MON
ceph mon remove <failed_mon_id>
# 2. 添加新 MON
ceph orch daemon add mon <new_node>
# 3. 验证 MON 状态
ceph mon dump
ceph quorum_status
MON 相关配置参数
| 参数名 | 含义 | 默认值 | 建议值 |
|---|---|---|---|
| mon_clock_drift_allowed | 允许的时钟漂移 | 0.05 | 0.05 |
| mon_data_avail_warn | 数据可用空间警告阈值 | 0.05 | 0.05 |
| mon_data_avail_crit | 数据可用空间严重阈值 | 0.05 | 0.02 |
| mon_max_pg_per_osd | 每个 OSD 的最大 PG 数量 | 200 | 根据集群规模调整 |
[root@ceph1 ~]# ceph config get mon mon_max_pg_per_osd
250
[root@ceph1 ~]# ceph config get mon mon_data_avail_crit
5
[root@ceph1 ~]# ceph config get mon mon_data_avail_warn
30
[root@ceph1 ~]# ceph config get mon mon_clock_drift_allowed
0.050000
MON 最佳实践
1. 部署建议
- 数量:部署奇数个 MON(通常 3 或 5 个)
- 分布:将 MON 分布在不同的物理节点上
- 网络:确保 MON 节点之间网络低延迟、高带宽
2. 监控建议
- 时钟同步:确保所有 MON 节点时间同步
- 磁盘空间:监控 MON 数据目录的磁盘使用率
- 网络延迟:监控 MON 节点之间的网络延迟
3. 维护建议
- 定期备份:定期备份 MON 数据
- 版本升级:升级时确保 MON 兼容性
- 日志轮转:配置适当的日志轮转策略
注意事项
- 法定人数:MON 数量必须保持奇数,避免脑裂
- 时钟同步:MON 节点间时钟偏差不能超过阈值
- 磁盘空间:MON 需要足够的磁盘空间存储集群映射
- 网络连通:MON 节点间必须保持网络连通
总结
MON 是 Ceph 集群的核心组件,负责维护集群的状态和一致性。了解 MON 的相关命令和配置参数,对于维护 Ceph 集群的稳定性和高可用性至关重要。在实际运维中,应密切关注 MON 的状态和性能,及时处理可能出现的问题。
评论区