Kylin v10环境下利用cephadm实现Ceph集群的高效离线部署与优化

张开发
2026/6/8 7:20:50 15 分钟阅读
Kylin v10环境下利用cephadm实现Ceph集群的高效离线部署与优化
1. 麒麟操作系统与Ceph存储的完美结合在国产化替代的大背景下麒麟操作系统Kylin v10作为国产操作系统的代表正在越来越多的企业环境中得到应用。而Ceph作为开源的分布式存储解决方案以其高可靠性和可扩展性著称。将两者结合可以构建出既符合国产化要求又具备企业级存储能力的解决方案。我最近在一个金融客户现场完成了基于Kylin v10的Ceph集群部署整个过程虽然遇到了一些挑战但最终效果令人满意。与在CentOS上部署相比Kylin v10环境下需要注意一些特殊的配置点这也是本文要重点分享的内容。为什么选择cephadm这个工具是Ceph官方推荐的部署方式相比传统的手动部署或者使用ceph-deploycephadm具有以下优势全容器化部署环境隔离性好内置编排能力简化集群管理支持无缝升级提供完善的监控和日志收集在离线环境中cephadm的优势更加明显。它通过容器镜像将所有依赖打包避免了复杂的依赖关系处理。下面这张表对比了不同部署方式的优劣部署方式优点缺点手动部署灵活性高复杂度高易出错ceph-deploy相对简单已停止维护cephadm官方推荐容器化需要容器环境2. 离线环境下的准备工作2.1 系统基础配置在Kylin v10上部署Ceph集群首先要确保所有节点的基础环境配置正确。根据我的经验以下几个步骤必不可少网络配置建议使用静态IP避免DHCP可能带来的问题。在三个节点上分别执行nmcli connection modify ens33 ipv4.method manual \ ipv4.addresses 172.25.0.141/24 \ ipv4.gateway 172.25.0.2 \ connection.autoconnect yes主机名解析编辑/etc/hosts文件确保所有节点都能互相解析。一个常见的坑是主机名解析顺序问题建议将最重要的解析放在文件开头。时间同步分布式系统对时间同步要求极高。我推荐使用chronyyum -y install chrony systemctl enable --now chronydSELinux和防火墙在测试环境中可以暂时关闭生产环境需要精细配置规则setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config systemctl disable --now firewalld2.2 容器环境准备cephadm依赖容器运行时在Kylin v10上安装Docker有几个注意事项Kylin v10默认可能已经安装了docker-engine如果没有可以通过yum安装yum -y install docker-engine配置镜像加速如果有内部镜像仓库mkdir -p /etc/docker cat /etc/docker/daemon.json EOF { registry-mirrors: [http://registryserver:4000] } EOF启动Docker服务systemctl enable --now docker特别注意在离线环境中需要提前准备好所有必需的容器镜像。我建议建立一个本地镜像仓库这样所有节点都可以从同一个源拉取镜像避免重复传输。3. cephadm的安装与配置3.1 获取和安装cephadm在离线环境中我们需要提前下载好cephadm的RPM包。以octopus版本为例wget http://mirrors.163.com/ceph/rpm-octopus/el7/noarch/cephadm-15.2.17-0.el7.noarch.rpm rpm -ivh cephadm-15.2.17-0.el7.noarch.rpm安装完成后会遇到一个常见问题/var/log/tallylog权限问题。解决方法如下chmod 600 /var/log/tallylog pam_tally2 --user root --reset3.2 容器镜像处理这是离线部署最关键的一步。我们需要导入基础镜像docker load ceph-v15.img docker load prometheus-v2.18.1.img docker load node-exporter-v0.18.1.img搭建本地registrydocker load registry-2.img mkdir -p /data/registry/ docker run -d -p 4000:5000 \ -v /data/registry/:/var/lib/registry/ \ --restartalways --name registry registry:2重新标记并推送镜像到本地仓库docker tag quay.io/ceph/ceph:v15 registryserver:4000/ceph/ceph:v15 docker push registryserver:4000/ceph/ceph:v15经验分享在实际操作中我发现Kylin v10对某些镜像的兼容性需要特别注意。建议先在测试环境验证所有镜像都能正常运行再部署到生产环境。4. 集群初始化与节点管理4.1 集群引导使用cephadm bootstrap命令初始化集群mkdir -p /etc/ceph cephadm bootstrap --mon-ip 172.25.0.141这个命令会自动完成以下工作创建monitor和manager守护进程生成SSH密钥并配置免密登录创建基本的ceph.conf配置文件部署Prometheus、Grafana等监控组件常见问题处理如果遇到timeout after 60 seconds错误通常是DNS解析问题。解决方法是在/etc/resolv.conf中添加有效的DNS服务器echo nameserver 223.5.5.5 /etc/resolv.conf4.2 节点管理初始化完成后需要将其他节点加入集群复制SSH密钥和配置文件ssh-copy-id -f -i /etc/ceph/ceph.pub rootceph2 scp -r /etc/ceph rootceph2:/etc/添加主机到集群ceph orch host add ceph2 172.25.0.142验证节点状态ceph orch host ls生产环境建议对于大规模集群建议使用标签labels来管理不同角色的节点例如ceph orch host label add ceph1 mon ceph orch host label add ceph2 osd5. 存储服务部署与优化5.1 OSD部署OSD是Ceph存储数据的核心组件。部署前需要确保磁盘符合要求无分区无文件系统大于5GB查看可用设备ceph orch device ls部署所有可用设备ceph orch apply osd --all-available-devices或者指定具体设备ceph orch daemon add osd ceph1:/dev/sdb性能优化建议对于高性能SSD可以考虑单独创建CRUSH规则调整OSD内存限制默认4GBceph config set osd osd_memory_target 8GB5.2 CephFS部署CephFS提供了POSIX兼容的文件系统接口创建元数据和数据池ceph osd pool create cephfs_data ceph osd pool create cephfs_metadata创建文件系统ceph fs new cephfs cephfs_metadata cephfs_data部署MDS服务ceph orch apply mds cephfs --placement3 ceph1 ceph2 ceph3客户端挂载mount -t ceph ceph1:6789,ceph2:6789,ceph3:6789:/ /mnt/cephfs \ -o nameadmin,secretkey5.3 RGW对象存储对象存储接口部署步骤创建realm和zoneradosgw-admin realm create --rgw-realmradosgw --default radosgw-admin zonegroup create --rgw-zonegroupdefault --master --default radosgw-admin zone create --rgw-zonegroupdefault --rgw-zonecn --master --default部署RGW服务ceph orch apply rgw radosgw cn --placement3 ceph1 ceph2 ceph3性能调优调整RGW线程数ceph config set client.rgw rgw_thread_pool_size 512启用缓存ceph config set client.rgw rgw_cache_enabled true6. 监控与运维6.1 监控配置cephadm默认会部署Prometheus和Grafana。通过以下命令获取Dashboard访问信息ceph mgr services告警配置建议设置合理的磁盘使用率告警阈值监控OSD延迟和网络延迟配置PG不平衡告警6.2 日常维护集群状态检查ceph -s ceph osd status ceph pg dump添加/移除节点ceph orch host add newnode 192.168.1.100 ceph orch host rm oldnode扩容OSDceph orch daemon add osd newnode:/dev/sdc升级策略在离线环境中升级需要提前下载好新版本的容器镜像然后执行ceph orch upgrade start --image registryserver:4000/ceph/ceph:v167. 常见问题排查在实际部署中我遇到过几个典型问题MDS服务无法启动ceph fs set cephfs max_mds 1 ceph osd pool set cephfs_metadata size 1OSD状态异常ceph osd rm 3 ceph orch daemon rm osd.3 --force dmsetup rm ceph--89a94f3b--e5ef--4ec9--b828--d86ea84d6540-osd--block--e4a8e9c8--20e6--4847--8176--510533616844节点时钟不同步chronyc sources -v chronyc makestep容器启动失败 检查Docker日志journalctl -u docker --no-pager -n 50对于持久性问题可以收集以下信息供分析ceph -s输出ceph health detaildocker ps -a相关服务的日志通过cephadm logs命令获取8. 性能优化实践经过多次部署和调优我总结出以下几点Kylin v10环境下Ceph集群的优化经验网络优化使用高性能网络设备建议10G分离公共网络和集群网络调整MTU建议9000如果网络支持内核参数调优echo vm.swappiness 10 /etc/sysctl.conf echo vm.vfs_cache_pressure 50 /etc/sysctl.conf sysctl -pCeph配置优化ceph config set global osd_op_num_threads_per_shard 2 ceph config set global osd_op_num_shards 8 ceph config set osd bluestore_prefer_deferred_size 0CRUSH算法调优根据硬件配置创建不同的CRUSH规则区分SSD和HDD设置合理的故障域host/rack/row等监控指标关注重点OSD延迟特别是apply和commit延迟PG不平衡情况缓存命中率如果使用了缓存层在最近的一个项目中经过上述优化后集群的IOPS性能提升了约40%延迟降低了30%。特别是在Kylin v10环境下合理的内核参数调整对性能影响很大。

更多文章