Ubuntu20.04下基于cephadm的Ceph集群高效部署指南

张开发
2026/4/17 5:16:29 15 分钟阅读

分享文章

Ubuntu20.04下基于cephadm的Ceph集群高效部署指南
1. 环境准备打造Ceph集群的基石在Ubuntu 20.04上部署Ceph集群前需要像搭积木一样先打好地基。我遇到过不少初学者因为环境配置不当导致后续步骤失败的情况所以这里会详细说明每个环节的避坑要点。硬件配置方面建议每台节点至少配备4核CPU/8GB内存管理节点建议翻倍系统盘单独使用SSD建议50GB以上数据盘推荐用HDD每块至少10GB建议4TB以上企业级硬盘万兆网络环境千兆网卡会出现性能瓶颈软件依赖的安装其实有讲究。很多人直接apt install完事但实际生产环境中需要特别注意版本匹配# 推荐使用阿里云镜像加速安装国内环境 sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update sudo apt upgrade -y # 必须安装的依赖包 sudo apt install -y docker.io lvm2 chrony python3这里有个容易踩的坑时间同步。我有次部署后集群频繁出现脑裂问题排查半天发现是节点间时间差超过0.05秒。正确的chrony配置应该是# 修改/etc/chrony/chrony.conf pool ntp.aliyun.com iburst makestep 1.0 3验证时间同步是否生效要用chronyc tracking命令看到System time的偏差值小于1ms才算合格。另外建议在所有节点执行timedatectl set-timezone Asia/Shanghai统一时区。2. 单机集群引导从零到一的突破cephadm的bootstrap过程就像给新生儿办出生证明这一步会生成集群的唯一身份标识FSID。我实测发现几个关键点IP地址选择必须使用固定IPDHCP分配的IP会导致集群故障容器镜像默认从quay.io拉取国内环境建议提前配置镜像加速防火墙设置需要放行6789(TCP)、3300(TCP)、9283(TCP)等端口具体执行时建议这样操作# 先检查网络连通性 ping -c 4 114.114.114.114 # 推荐使用完整bootstrap命令包含日志输出 cephadm bootstrap --mon-ip 192.168.64.128 | tee bootstrap.log这个命令会输出包含dashboard访问信息的彩蛋内容务必保存好。我习惯用jq工具解析生成的配置文件sudo apt install jq jq . /etc/ceph/ceph.conf常见问题排查技巧如果卡在pull镜像环节可以手动docker pull quay.io/ceph/ceph:v15出现证书错误时尝试cephadm regenerate-certs磁盘空间不足会导致mgr启动失败需要docker system prune清理3. 多主机扩展构建分布式存储军团单机集群只是开始真正的威力在于多节点扩展。这里分享我的三步添加法第一步准备新节点# 在所有新节点执行 sudo apt update sudo apt install -y docker.io lvm2 chrony sudo usermod -aG docker $USER第二步SSH互信配置# 在管理节点执行 ssh-copy-id -f -i /etc/ceph/ceph.pub rootnode02第三步正式加入集群ceph orch host add node02 192.168.64.129 ceph orch host label add node02 osd我遇到过节点添加后服务不自动部署的情况这时候需要手动触发ceph orch apply mon --placementnode01,node02,node03 ceph orch apply mgr --placementnode01,node02,node03扩展后的健康检查很重要推荐使用这个组合命令ceph -s ceph osd tree ceph orch ps4. OSD管理数据存储的实战艺术OSD是真正存储数据的地方管理好OSD等于掌握了Ceph的核心。根据我的经验OSD部署要遵循三看原则一看设备状态ceph orch device ls --hostnamenode01输出中要确认Available为True且没有Rejected标签二看部署方式# 单个磁盘部署适合测试 ceph orch daemon add osd node01:/dev/sdb # 批量部署生产推荐 ceph orch apply osd --all-available-devices三看性能表现# 查看OSD实时负载 ceph osd perf # 测试实际IO性能 rados bench -p testpool 10 write --no-cleanup删除OSD时有个安全操作顺序# 先停止OSD ceph osd out osd.0 # 等待数据迁移完成PG全部activeclean ceph osd crush remove osd.0 ceph auth del osd.0 ceph osd rm osd.0 # 最后擦除设备 ceph orch device zap node01 /dev/sdb --force5. 集群监控运维人员的火眼金睛Ceph自带的监控组件其实很强大但需要合理配置。我的监控方案包含三个层次基础监控层# 启用Prometheus所有模块 ceph mgr module enable prometheus可视化层# 定制Grafana仪表盘 ceph dashboard set-grafana-api-url https://localhost:3000告警层# 配置Alertmanager规则 vi /etc/ceph/alertmanager.yml日常运维中这几个命令最实用# 实时查看集群事件 ceph -w # 检查存储池健康度 ceph osd pool stats # 查看容量预测非常实用 ceph df detail对于生产环境我建议设置定期健康检查脚本#!/bin/bash ceph status /var/log/ceph-health-$(date %Y%m%d).log ceph osd df /var/log/ceph-health-$(date %Y%m%d).log最后提醒下所有关键操作前建议先做模拟演练ceph osd lost --yes-i-really-mean-it --dry-run

更多文章