1. 项目概述
在当今数据爆炸式增长的时代,企业级分布式存储系统已成为支撑现代IT基础设施的关键组件。基于RockyLinux 8.7构建的Ceph分布式存储解决方案,以其卓越的性能、可靠性和扩展性,正在成为越来越多企业的首选方案。
Ceph作为开源的统一分布式存储系统,能够同时提供对象存储、块存储和文件系统服务。而RockyLinux 8.7作为RHEL的兼容替代品,为企业提供了稳定、安全且长期支持的操作系统基础。两者的结合,为企业构建高性能、高可用的存储基础设施提供了理想的技术栈。
2. 环境准备
2.1 硬件需求规划
构建企业级Ceph集群前,需要仔细规划硬件配置。典型的生产环境建议:
- 管理节点:至少2个,配置16核CPU/32GB内存/500GB SSD
- OSD节点:至少3个,配置24核CPU/64GB内存/多块HDD或SSD
- 网络:建议10Gbps或更高带宽,管理网络和存储网络分离
2.2 操作系统配置
在所有节点上安装RockyLinux 8.7后,需要进行以下基础配置:
- 主机名与hosts文件配置:
hostnamectl set-hostname ceph01 echo "10.0.0.1 ceph01" >> /etc/hosts echo "10.0.0.2 ceph02" >> /etc/hosts echo "10.0.0.3 ceph03" >> /etc/hosts- 禁用SELinux和防火墙:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config systemctl disable --now firewalld- 配置NTP时间同步:
dnf install chrony -y systemctl enable --now chronyd chronyc sources- 创建Ceph部署用户:
useradd -d /home/cephadm -m cephadm echo "cephadm ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/cephadm chmod 0440 /etc/sudoers.d/cephadm3. Ceph集群部署
3.1 安装Cephadm工具
Cephadm是Ceph官方推荐的部署工具,简化了集群的安装和管理过程。
- 在所有节点安装依赖:
dnf install -y podman python3 lvm2- 在管理节点安装cephadm:
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm chmod +x cephadm ./cephadm add-repo --release octopus ./cephadm install- 验证cephadm安装:
cephadm --version3.2 初始化Ceph集群
- 创建初始集群:
cephadm bootstrap --mon-ip 10.0.0.1- 安装ceph-common工具:
cephadm install ceph-common- 验证集群状态:
ceph -s3.3 添加OSD节点
- 将节点加入集群:
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph02 ceph orch host add ceph02 10.0.0.2- 添加OSD存储设备:
ceph orch daemon add osd ceph02:/dev/sdb- 查看OSD树:
ceph osd tree4. 集群管理与维护
4.1 服务管理
Ceph集群中的服务可以通过多种方式进行管理:
- 使用systemctl管理单个守护进程:
systemctl restart ceph-4b4cc258-6679-11ee-ad4a-005056982bba@mon.ceph01.service- 使用ceph orch管理服务:
ceph orch restart mon ceph orch stop grafana ceph orch start grafana4.2 节点维护
- 将节点置入维护模式:
ceph orch host maintenance enter ceph02- 从维护模式恢复:
ceph orch host maintenance exit ceph02- 节点标签管理:
ceph orch host label add ceph02 osd ceph orch host label rm ceph02 osd4.3 集群监控
- 查看集群状态:
ceph -s ceph health detail- 查看服务状态:
ceph orch ps ceph orch ls- 查看日志:
journalctl -u ceph-4b4cc258-6679-11ee-ad4a-005056982bba@mon.ceph01.service -f5. 高级配置与优化
5.1 网络配置优化
- 配置集群网络分离:
ceph config set global cluster_network 10.1.0.0/24 ceph config set global public_network 10.0.0.0/24- 启用RDMA加速:
ceph config set global ms_type async+rdma5.2 性能调优
- 调整OSD参数:
ceph config set osd osd_op_num_threads 8 ceph config set osd osd_disk_threads 4- 启用Bluestore压缩:
ceph config set osd bluestore_compression_algorithm snappy ceph config set osd bluestore_compression_mode aggressive5.3 存储池配置
- 创建存储池:
ceph osd pool create mypool 128 128- 配置EC池:
ceph osd pool create ecpool erasure ceph osd pool set ecpool allow_ec_overwrites true6. 故障排查与恢复
6.1 常见问题处理
- OSD故障恢复:
ceph osd out osd.1 ceph osd crush remove osd.1 ceph auth del osd.1 ceph osd rm osd.1- MON故障处理:
ceph mon remove ceph01 ceph orch daemon rm mon.ceph01- PG状态异常:
ceph pg repair <pg_id> ceph pg scrub <pg_id>6.2 集群灾难恢复
- 备份集群关键数据:
ceph mon dump > mon_dump.txt ceph osd getcrushmap -o crushmap.txt- 恢复MON数据库:
ceph-mon -i ceph01 --extract-monmap /tmp/monmap ceph-mon -i ceph01 --inject-monmap /tmp/monmap7. 安全加固
7.1 认证与授权
- 创建受限用户:
ceph auth get-or-create client.myuser mon 'allow r' osd 'allow rwx pool=mypool'- 配置CephX:
ceph config set mon auth_cluster_required cephx ceph config set mon auth_service_required cephx ceph config set mon auth_client_required cephx7.2 网络隔离
- 配置防火墙规则:
firewall-cmd --zone=public --add-service=ceph-mon --permanent firewall-cmd --zone=cluster --add-service=ceph --permanent firewall-cmd --reload- 启用TLS加密:
ceph config set global ms_cluster_mode secure ceph config set global ms_service_mode secure8. 扩展与升级
8.1 集群扩展
- 添加新节点:
ceph orch host add ceph04 10.0.0.4- 扩容OSD:
ceph orch daemon add osd ceph04:/dev/sdc8.2 版本升级
- 准备升级:
ceph orch upgrade start --image quay.io/ceph/ceph:v18.2.0- 监控升级进度:
ceph orch upgrade status- 完成升级:
ceph orch upgrade commit9. 最佳实践与经验分享
在实际生产环境中部署和维护Ceph集群时,积累了一些宝贵经验:
- 硬件选择:
- 使用企业级SSD作为Journal/WAL设备可显著提升性能
- 建议每个OSD节点配置12-24个OSD,以获得最佳性价比
- 网络配置:
- 强烈建议使用独立的存储网络,至少10Gbps带宽
- 启用Jumbo frames(MTU 9000)可提高大块数据传输效率
- 监控告警:
- 部署Prometheus+Grafana监控栈,配置关键指标告警
- 特别关注OSD使用率、PG状态和网络延迟等指标
- 容量规划:
- 预留20%以上的空闲空间,避免集群过满导致性能下降
- 定期进行容量预测和扩容规划
- 备份策略:
- 对关键配置和CRUSH map进行定期备份
- 考虑使用RBD mirroring或CephFS snapshot进行数据保护
提示:在生产环境部署前,务必在测试环境充分验证配置和性能,特别是对于大规模集群。