当前位置: 首页 > news >正文

保姆级教程:在OpenEuler 22.03 LTS-SP4上,用cephadm搞定一个三节点CEPH集群

从零构建高可用CEPH集群:OpenEuler 22.03 LTS-SP4实战指南

在分布式存储领域,CEPH凭借其出色的扩展性和可靠性,已成为企业级存储解决方案的首选。本文将带你在国产操作系统OpenEuler 22.03 LTS-SP4上,用最前沿的cephadm工具部署一个生产级三节点CEPH集群。不同于简单的安装教程,我们会深入每个配置背后的原理,让你真正掌握集群部署的核心要领。

1. 环境准备与系统调优

1.1 硬件规划与系统安装

三节点CEPH集群的最低硬件要求:

  • 每节点至少4核CPU
  • 8GB内存
  • 两块硬盘(系统盘+数据盘)
  • 万兆网络环境(千兆网络仅适合测试)

推荐配置方案

节点类型 CPU 内存 数据盘 网络 ------------------------------------------- ceph01 8核 32GB 4TB SSD 10Gbps ceph02 8核 32GB 4TB SSD 10Gbps ceph03 8核 32GB 4TB SSD 10Gbps

从OpenEuler官网获取22.03 LTS-SP4镜像后,使用以下命令验证ISO完整性:

sha256sum openEuler-22.03-LTS-SP4-x86_64-dvd.iso

对比输出值与官网提供的校验值,确保下载完整。

1.2 网络与主机配置

三节点网络拓扑应采用全互联架构,避免单点故障。配置静态IP后,按如下方式设置主机名和hosts文件:

所有节点执行

hostnamectl set-hostname ceph0X.novalocal

在ceph01节点编辑/etc/hosts文件:

192.168.18.204 ceph01.novalocal ceph01 192.168.18.191 ceph02.novalocal ceph02 192.168.18.100 ceph03.novalocal ceph03

然后同步到其他节点:

scp /etc/hosts ceph02:/etc/ scp /etc/hosts ceph03:/etc/

注意:生产环境中建议使用DNS服务器而非hosts文件,便于后期维护

1.3 安全策略调整

CEPH对系统安全策略有特殊要求,需要关闭防火墙和SELinux:

systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0

为什么需要关闭这些安全机制?

  • 防火墙会阻断CEPH节点间的通信端口
  • SELinux可能导致容器访问权限问题
  • 生产环境中可通过精细配置安全策略替代完全关闭

2. 基础软件栈部署

2.1 配置CEPH软件源

创建/etc/yum.repos.d/ceph.repo文件:

[ceph] name=ceph x86_64 baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/x86_64 enabled=1 gpgcheck=0 [ceph-noarch] name=ceph noarch baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/noarch enabled=1 gpgcheck=0

更新yum缓存:

yum makecache

2.2 时间同步服务

分布式存储对时间同步有严格要求,安装chrony服务:

yum install -y chrony systemctl enable --now chronyd chronyc sources -v

理想的时间偏差应小于50ms,可通过以下命令检查:

chronyc tracking

2.3 容器引擎安装

CEPH集群使用容器化部署,推荐使用podman:

yum install -y podman lvm2

验证安装:

podman --version lvm version

3. cephadm工具部署

3.1 获取cephadm

从开源仓库获取适配OpenEuler的cephadm:

git clone https://gitee.com/yftyxa/openeuler-cephadm.git cp openeuler-cephadm/cephadm /usr/bin/ chmod +x /usr/bin/cephadm

3.2 初始化集群

在ceph01节点执行引导命令:

cephadm bootstrap --mon-ip 192.168.18.204 --allow-fqdn-hostname

成功后会输出管理面板访问信息:

CEPH Dashboard URL: https://ceph01.novalocal:8443 Username: admin Password: xxxxxxxx

重要:记录生成的admin密钥路径/etc/ceph/ceph.client.admin.keyring

3.3 集群节点扩展

将其他节点加入集群:

ssh-copy-id -f -i /etc/ceph/ceph.pub ceph02 ssh-copy-id -f -i /etc/ceph/ceph.pub ceph03 ceph orch host add ceph02.novalocal --labels=mon ceph orch host add ceph03.novalocal --labels=mon

验证节点状态:

ceph orch host ls

4. OSD部署与集群验证

4.1 添加存储设备

列出各节点可用磁盘:

ceph orch device ls

为每个节点添加OSD(假设磁盘为/dev/nvme0n1):

ceph orch daemon add osd ceph01.novalocal:/dev/nvme0n1 ceph orch daemon add osd ceph02.novalocal:/dev/nvme0n1 ceph orch daemon add osd ceph03.novalocal:/dev/nvme0n1

4.2 集群健康检查

查看详细集群状态:

ceph -s

健康状态应为HEALTH_OK,关键指标包括:

  • mon: 3个守护进程
  • mgr: 1个活跃+1个备用
  • osd: 3个全部在线
  • 存储池: 至少1个

4.3 Dashboard配置

访问初始输出的Dashboard URL,完成以下操作:

  1. 使用初始凭据登录
  2. 立即修改默认密码
  3. 配置SSL证书(生产环境必须)
  4. 设置告警通知

5. 生产环境优化建议

5.1 网络分离配置

建议采用双网卡方案:

  • 公共网络:处理客户端请求
  • 集群网络:内部数据同步

配置方法:

ceph config set global public_network 192.168.18.0/24 ceph config set global cluster_network 10.10.10.0/24

5.2 存储池配置

创建适合生产环境的存储池:

ceph osd pool create mypool 128 128 ceph osd pool set mypool size 3 ceph osd pool set mypool min_size 2

参数说明:

  • 128: PG数量(根据集群规模计算)
  • size 3: 数据副本数
  • min_size 2: 最小可写副本数

5.3 监控与告警

启用Prometheus监控:

ceph mgr module enable prometheus

配置关键告警规则:

  • OSD下线
  • 存储空间不足
  • 网络延迟过高

6. 常见问题排查

6.1 节点无法加入集群

检查要点:

  1. 节点间SSH免密登录是否配置正确
  2. 防火墙是否完全关闭
  3. 时间同步是否正常
  4. /etc/hosts解析是否正确

6.2 OSD启动失败

典型错误处理:

# 查看日志 journalctl -u ceph-osd@<id> # 常见修复命令 ceph-volume lvm zap /dev/sdX ceph orch daemon rm osd.<id>

6.3 性能调优

关键参数调整示例:

# 提高网络吞吐 ceph config set global osd_op_num_threads 8 ceph config set global osd_disk_threads 4 # 优化内存使用 ceph config set osd bluestore_cache_size 4G

在真实生产环境中,我们曾遇到时钟漂移导致的数据不一致问题,最终通过部署本地NTP服务器解决。这也印证了分布式系统中时间同步的重要性——看似简单的配置,实则关乎系统稳定性。

http://www.jsqmd.com/news/569008/

相关文章:

  • 从10/1000us到8/20us:一个公式搞定TVS管在不同浪涌波形下的功率换算与选型
  • 别再只跑标准数据集了!手把手教你用OpenCompass 0.3.7测试自己的业务数据(附完整配置文件)
  • ENSP防火墙远程管理实战:Web与SSH双通道配置指南
  • 智谱AutoGLM从零开始:环境搭建、设备连接、指令执行
  • 告别‘塑料感’渲染:IBGS如何用‘颜色残差’让3D高斯重建的物体更真实?
  • ORB_SLAM3地图保存避坑指南:如何避免段错误导致数据丢失
  • 用Comsol模拟水力压裂:岩石损伤的完全耦合模型
  • 面向医疗隐私场景的隐私-效率协同评估体系
  • Kylin-Server-10-SP1 系统下源码编译降级GCC至5.3.0实战指南
  • Win11文件管理器左侧导航栏精简指南:如何彻底移除‘主文件夹‘和‘图库‘链接
  • Agentic RAG实战:LangChain与Milvus构建智能问答系统的决策循环优化
  • 基于Qt框架开发Janus-Pro-7B桌面客户端:跨平台模型应用工具
  • 从收音机到5G滤波器:品质因数Q如何影响你的手机信号?一个硬件工程师的实战笔记
  • 探索二维电介质介电击穿模型:Comsol相场模拟电树枝
  • Nuxt3 + PM2 + Nginx:打造高可用前端部署方案(附常见问题排查指南)
  • SAP FI VF01/VF04增强实战:如何避免发票折扣与销售订单不一致的坑
  • Zynq Ultrascale+ RF DAC实战:从混频器原理到IQ信号处理全解析
  • PyTorch ARM版安装指南:手把手教你用pip和国内镜像搞定aarch64环境
  • 单细胞上游分析实战:从cellranger安装到数据预处理全流程解析
  • 30天小白进阶AI大神:收藏这份路线图,免费工具玩转大模型!
  • ZH03B激光粉尘传感器原理与SD_ZH03B库工程实践
  • 用STM32F103+TMC5160做个小玩意:从CubeMX配置到FreeRTOS任务调度,手把手带你玩转电机驱动板
  • 网易云音乐永久直链解析:一键解决音乐链接过期问题的终极指南
  • 2026年评价高的宁波农机硬管总成/不锈钢硬管总成/高压硬管总成/风电硬管总成公司选择推荐 - 品牌宣传支持者
  • 2026年热门的润滑软管总成/汽车软管总成/挖掘机软管总成/液压软管总成源头工厂推荐 - 品牌宣传支持者
  • 感应电机故障检测的 Matlab/Simulink 仿真搭建之旅
  • 从原理到代码:深入解析UniFormer的多头关系聚合器(MHRA)设计
  • 3个核心价值:RisingWave实时流数据处理平台构建企业级监控告警系统
  • 轻量级PDF阅读器SumatraPDF:提升数字阅读效率的全方位指南
  • Hunyuan-MT-7B部署教程:Pixel Language Portal与企业SSO单点登录集成方案