OP-CEPH02-在OpenEuler 22.03 LTS-SP4上构建高可用CEPH集群实战
1. 环境准备与系统配置
在OpenEuler 22.03 LTS-SP4上部署CEPH集群,首先要做好基础环境准备。我建议使用至少3台物理服务器或虚拟机,每台配置4核CPU、8GB内存和100GB系统盘,另外准备单独的SSD或HDD作为OSD存储设备。实际项目中遇到过内存不足导致MON进程崩溃的情况,这点要特别注意。
系统安装镜像可以从国内镜像站获取,比如上海交大的镜像源速度就很快。安装时选择最小化安装即可,不需要图形界面。装完系统后第一件事就是配置网络,这里有个小技巧:建议把网卡命名改为传统的eth0格式,避免后续CEPH识别出现问题。修改方法是在grub配置里添加net.ifnames=0参数。
主机名规划也很关键。我习惯用ceph[编号]-[角色]的格式,比如ceph01-mon、ceph02-osd这样,既清晰又方便管理。修改主机名后一定要记得更新/etc/hosts文件,把所有节点信息都加进去。这里有个坑要注意:如果用了FQDN格式的主机名,后续CEPH部署时要加--allow-fqdn-hostname参数,否则会报错。
2. 安全策略与软件源配置
生产环境安全很重要,但部署CEPH时需要临时调整一些安全策略。防火墙建议直接关闭,因为CEPH各个组件间的通信端口很多,一个个放行太麻烦。SELinux也建议设为permissive模式,等集群稳定运行后再考虑开启。
软件源配置是另一个容易出问题的地方。OpenEuler自带的源里没有CEPH软件包,需要添加华为云的CEPH源。这里要注意版本匹配问题 - OpenEuler 22.03对应的是CentOS 8的软件包架构。我遇到过因为用了错误的软件源导致依赖冲突的情况,折腾了好久才发现问题所在。
时间同步是分布式系统的生命线。建议在所有节点安装chrony并配置相同的NTP服务器。曾经有个客户环境因为时间不同步导致OSD频繁掉线,排查了半天才发现是时间偏差超过了mon_clock_drift_allowed阈值。
3. CEPH集群初始化
cephadm是现在官方推荐的部署工具,用起来确实方便。不过直接从官方拉取容器镜像可能会很慢,建议提前配置好国内镜像加速。初始化命令很简单,就一行cephadm bootstrap,但有几个参数很关键:
--mon-ip要指定一个固定的IP,不要用自动获取的--allow-fqdn-hostname如果用了域名形式的主机名就必须加--registry-url可以指定国内的容器镜像仓库
初始化成功后,会输出Dashboard的访问地址和默认账号密码。这里建议第一时间修改默认密码,并备份好/etc/ceph目录下的关键文件。我曾经因为误删这些文件不得不重新部署整个集群。
4. 节点扩展与OSD添加
单节点CEPH没什么实用价值,至少要3个节点才能保证高可用。添加节点前要确保SSH免密登录配置正确,这是很多新手容易忽略的地方。添加节点的命令是ceph orch host add,可以同时指定节点角色标签,比如mon、osd等。
添加OSD是最关键的步骤。建议先用ceph orch device ls查看所有可用磁盘,确认无误后再添加。有几点经验分享:
- 不要用系统盘做OSD,一定要用单独的磁盘
- 生产环境建议用SSD做OSD,性能好很多
- 可以用
ceph-volume命令预先对磁盘进行分区和格式化 - 添加OSD后记得用
ceph osd tree检查状态
我曾经遇到过一个坑:添加OSD时没注意磁盘已经被其他系统使用过,导致CEPH无法正确识别。后来用wipefs -a彻底擦除磁盘后才解决。
5. 集群监控与维护
CEPH自带的Dashboard功能很强大,可以直观地查看集群状态、性能指标和告警信息。不过默认配置可能不符合实际需求,建议调整以下几个参数:
- 修改pg_num和pgp_num,根据OSD数量合理设置
- 配置邮件或Webhook告警
- 设置自动清理旧的监控数据
日常维护时常用的命令有:
# 查看集群状态 ceph -s # 查看OSD状态 ceph osd stat # 查看PG分布 ceph pg dump # 查看性能指标 ceph perf遇到问题时,首先要检查日志。CEPH的日志默认在/var/log/ceph目录下,不同组件有各自的日志文件。我习惯用ceph -w实时查看集群事件,这对排查问题很有帮助。
6. 性能调优实战经验
要让CEPH集群发挥最佳性能,需要针对硬件和工作负载进行调优。根据我的经验,以下几个参数对性能影响最大:
- osd_memory_target:控制OSD进程的内存使用量
- osd_op_num_threads:处理IO请求的线程数
- osd_recovery_max_active:恢复操作的最大并发数
- osd_backfill_full_ratio:控制backfill行为
对于全闪存集群,建议启用bluestore的压缩和去重功能。虽然会消耗一些CPU资源,但能显著提高存储效率。可以用以下命令启用:
ceph config set osd bluestore_compression_algorithm snappy ceph config set osd bluestore_compression_mode aggressive网络配置也很关键。建议CEPH集群使用单独的万兆或更高速网络,并将public网络和cluster网络分离。在OpenEuler上可以用nmcli配置多网卡绑定,提高带宽和可靠性。
7. 常见问题排查指南
即使配置再完善,实际运行中还是可能遇到各种问题。下面分享几个典型问题的解决方法:
问题1:PG处于incomplete状态
这通常是因为OSD数量不足或配置不当导致的。解决方法:
- 检查ceph osd tree确认所有OSD都是up状态
- 调整pg_num和pgp_num参数
- 必要时手动触发pg修复:ceph pg repair <pg_id>
问题2:集群出现slow requests告警
可能原因包括:
- 磁盘性能瓶颈
- 网络延迟
- 系统负载过高
可以用ceph daemon osd.<id> perf dump查看具体哪个环节耗时最多。
问题3:Dashboard无法访问
检查以下几点:
- mgr服务是否正常运行
- 防火墙是否放行了端口
- SSL证书是否有效
最后提醒一点:任何配置修改前都要做好备份,特别是生产环境。CEPH的配置虽然可以动态修改,但有些参数需要重启服务才能生效。建议先在测试环境验证,确认无误后再应用到生产环境。
