在 OpenEuler 系统上基于 cephadm 安装 Ceph 集群
在 OpenEuler 系统上基于 cephadm 安装 Ceph 集群
本文提供在 OpenEuler 系统上使用 cephadm 安装 Ceph 集群的方法,cephadm 是目前 Ceph 官方推荐的部署和管理工具。
方案概览
使用 cephadm 工具,通过一个 Bootstrap 节点来引导建立整个 Ceph 集群,过程主要包括:
-
环境准备:配置所有节点以满足 Ceph 安装的先决条件。
-
安装 cephadm:在 Bootstrap 节点上安装 cephadm 工具。
-
引导集群:在第一个节点上初始化一个新的 Ceph 集群。
-
添加节点:将其他节点加入到集群中。
-
部署服务:在所有节点上部署 Ceph 守护进程(如 OSD, Mgr, Mon, MDS)。
-
验证集群:检查集群的健康状态和功能。
第一步:环境准备(在所有节点上执行)
假设拥有三个或更多运行 OpenEuler 20.03 LTS SP1 或更高版本的节点(本文以 22.03 LTS 为例),每个节点应满足以下条件:
主机名
为每个节点设置唯一的主机名(如 node1, node2, node3)。
主机解析
确保所有节点可以通过主机名互相解析,可在 /etc/hosts 文件中配置静态解析,或者使用 DNS。
编辑每个节点的 /etc/hosts 文件,添加类似如下内容:
192.168.1.101 node1 192.168.1.102 node2 192.168.1.103 node3
时间同步
所有节点的时间必须同步,使用 chrony 或 ntp 确保时间一致。
sudo dnf install -y chrony sudo systemctl enable --now chronyd sudo chronyc sources
防火墙
-
选项 A:关闭防火墙(测试用)
sudo systemctl stop firewalld sudo systemctl disable firewalld
-
选项 B:开放必要端口
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent # Mon sudo firewall-cmd --zone=public --add-port=3300/tcp --permanent # OSD sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent # OSD sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent # Dashboard sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # Grafana sudo firewall-cmd --reload
SSH 免密登录
Bootstrap 节点(通常是第一个节点)需要能通过 SSH 无密码访问所有其他节点(包括自身),这是 cephadm 自动化部署的关键。
-
在 bootstrap-node (如 node1) 上生成密钥对:
ssh-keygen
-
将公钥复制到所有节点(包括自己):
ssh-copy-id root@node1 ssh-copy-id root@node2 ssh-copy-id root@node3
注意:cephadm 默认使用 root 用户,如果使用其他用户,需要在后续命令中指定 --ssh-user 。
安装 Docker
cephadm 使用容器来运行 Ceph 服务,因此所有节点都需要安装 Docker。
sudo dnf install -y docker sudo systemctl enable --now docker
第二步:在 Bootstrap 节点上安装 cephadm
在选定的引导节点(例如 node1)上执行以下操作:
安装 cephadm
sudo dnf install -y cephadm
引导新的 Ceph 集群
此命令将在当前节点(node1)上启动最基本的集群组件(Mon 和 Mgr)。
sudo cephadm bootstrap --mon-ip <BOOTSTRAP_NODE_IP>
将 <BOOTSTRAP_NODE_IP> 替换为 node1 的实际 IP 地址(例如 192.168.1.101)。
重要输出和信息:
命令执行成功后,会看到类似以下的输出,需保存这些信息!
... Ceph Dashboard is now available at: URL: https://node1:8443/ User: admin Password: <a-random-password> ... You can access the Ceph CLI with: sudo cephadm shell -- ceph -s ... You can deploy an additional daemon by running a command like: cephadm deploy --name <daemon-name> --image <image-name> [--fsid <fsid>] [--config <config>] ...
第三步:安装 ceph-common 并配置 CLI
-
bootstrap 命令已经在本地节点安装了 ceph 命令行工具,为了能在其他节点或方便地使用 ceph 命令,需要安装 ceph-common。
从容器中提取配置文件:
sudo cephadm shell -- ceph config generate-minimal-conf > /etc/ceph/ceph.conf sudo cephadm shell -- ceph auth get client.admin > /etc/ceph/ceph.client.admin.keyring
-
在其他节点上安装 ceph-common:
# 在所有需要 CLI 的节点上执行 sudo dnf install -y ceph-common # 将上一步生成的 ceph.conf 和 keyring 文件复制到该节点的 /etc/ceph/ 目录下 sudo scp root@node1:/etc/ceph/ceph.conf /etc/ceph/ sudo scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
现在就可以在这些节点上直接使用 ceph -s 命令了。
第四步:添加主机并部署服务
ceph cephadm get-pub-key > /etc/ceph/ceph.pub ssh-copy-id -f -i /etc/ceph/ceoh.pub root@node2 ssh-copy-id -f -i /etc/ceph/ceoh.pub root@node3
现在回到 Bootstrap 节点(node1),使用 ceph orch 命令来管理集群。
将其他节点添加为集群主机
-
进入 cephadm shell 使用 orch 命令
sudo cephadm shell
-
在 cephadm shell 中执行
ceph orch host add node2 <node2_IP> ceph orch host add node3 <node3_IP>
或者直接在宿主机上使用
sudo cephadm shell -- ceph orch host add node2 <node2_IP>
-
列出所有主机,确认添加成功:
ceph orch host ls
部署其他核心服务 - OSD
OSD 是实际存储数据的服务,需要告诉 Ceph 如何使用节点的磁盘。
-
自动部署:让 Ceph 自动使用任何可用且未使用的原始磁盘。
ceph orch apply osd --all-available-devices
-
手动部署:如果要对磁盘有更精细的控制(例如,避免使用系统盘)。
# 首先查看可用设备清单 ceph orch device ls # 然后使用特定设备的路径(如 /dev/sdb)创建 OSD ceph orch daemon add osd node1:/dev/sdb ceph orch daemon add osd node2:/dev/sdb
部署元数据服务器(MDS)(如果打算使用 CephFS)
ceph orch apply mds <fs_name> --placement "<number_of_daemons> node1 node2 node3" # 例如,创建一个名为 myfs 的文件系统,并在三个节点上各部署一个 MDS ceph orch apply mds myfs --placement "3 node1 node2 node3"
部署监控服务(Mon)
Ceph 通常会自动在奇数个节点上部署 Mon 以保证高可用,也可以手动指定或检查当前状态。
ceph orch apply mon --placement "node1,node2,node3"
添加数据池与元数据池
ceph osd pool create mypool-metadata 64 64 ceph osd pool create mypool-data 64 64
添加fs
ceph fs new myfs mypool-metadata mypool-data
第五步:验证集群状态
-
检查集群健康状态:
ceph -s
输出中 health: 应为 HEALTH_OK,初期可能是 HEALTH_WARN,通常是由于 PG 数不足或正在数据均衡,稍等片刻即可恢复。
-
查看已部署的服务:
ceph orch ps
-
查看 OSD 树和存储空间:
ceph osd tree ceph df
-
访问 Dashboard:
使用 Bootstrap 步骤中提供的 URL、用户名和密码通过浏览器访问 Ceph 管理面板(例如 https://node1:8443),可在 Dashboard 中直观地查看集群状态、配置和性能指标。
第六步、客户端挂载cephfs
sudo scp root@node1:/etc/ceph/ceph.conf /etc/ceph/ sudo scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ ##在client节点操作,安装客户端工具 yum install -y ceph-fuse ##创建挂载目录 mkdir /ceph ##挂载ceph ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.166.6:6789 /ceph ### df [root@node3 ceph]# df 文件系统 1K的块 已用 可用 已用% 挂载点 /dev/mapper/openeuler-root 71670904 6077684 61906820 9% / devtmpfs 4096 0 4096 0% /dev tmpfs 1727068 100 1726968 1% /dev/shm tmpfs 4096 0 4096 0% /sys/fs/cgroup efivarfs 256 56 196 22% /sys/firmware/efi/efivars tmpfs 690828 20540 670288 3% /run tmpfs 1727068 0 1727068 0% /tmp /dev/nvme0n1p2 996780 253680 674288 28% /boot /dev/nvme0n1p1 613184 6220 606964 2% /boot/efi /dev/mapper/openeuler-home 123844060 40 117506896 1% /home overlay 71670904 6077684 61906820 9% /var/lib/containers/storage/overlay/97b062f9a7ba7018b0c63d50b216a81a77bc9d1d4cb973276b7d3771956eb928/merged overlay 71670904 6077684 61906820 9% /var/lib/containers/storage/overlay/a1c8b35bafac79b0ca6cf89d1c25e55732d2e9490a7dd79d69d99de84fa96fcb/merged overlay 71670904 6077684 61906820 9% /var/lib/containers/storage/overlay/cc4c61d695bb72aab8bcd000a9e21448137f39664ba93744ca793ccedb08b034/merged overlay 71670904 6077684 61906820 9% /var/lib/containers/storage/overlay/ce7666c8615cd743d23b35124b18ad66d7966a76670b9ca91b86bee0066a4eca/merged overlay 71670904 6077684 61906820 9% /var/lib/containers/storage/overlay/b40d21821ba90c2306b703e9a8918a1bd31ef93eb45fe39387c1f50464d036c5/merged overlay 71670904 6077684 61906820 9% /var/lib/containers/storage/overlay/16f5ab1823bdf9908e7e7f248be39d7ee78ca69ec744fe6f85c990a81cd3eed2/merged ceph-fuse 19845120 0 19845120 0% /ceph
常见问题与故障排除
-
cephadm 找不到命令:确保已成功安装 cephadm 包,并且 PATH 环境变量设置正确。
-
SSH 连接失败:确保 Bootstrap 节点能通过 SSH 无密码登录所有其他节点,使用 ssh root@node2 进行测试。
-
端口占用或防火墙问题:使用 netstat -tulnp 检查端口,并确认防火墙已正确配置。
-
设备未被发现:运行 ceph orch device ls 如果看不到磁盘,确认磁盘未被挂载或已有文件系统,cephadm 需要 raw devices。
-
拉取容器镜像失败:由于网络原因,可能需要配置 Docker 镜像加速器。
通过以上步骤,应该能够在 OpenEuler 上成功部署一个功能完整的 Ceph 集群。对于生产环境,请务必仔细规划网络、磁盘和硬件配置,并参考 Ceph 官方文档进行更深入的调优。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)