在 OpenEuler 系统上基于 cephadm 安装 Ceph 集群

本文提供在 OpenEuler 系统上使用 cephadm 安装 Ceph 集群的方法,cephadm 是目前 Ceph 官方推荐的部署和管理工具。

方案概览

使用 cephadm 工具,通过一个 Bootstrap 节点来引导建立整个 Ceph 集群,过程主要包括:

  1. 环境准备:配置所有节点以满足 Ceph 安装的先决条件。

  2. 安装 cephadm:在 Bootstrap 节点上安装 cephadm 工具。

  3. 引导集群:在第一个节点上初始化一个新的 Ceph 集群。

  4. 添加节点:将其他节点加入到集群中。

  5. 部署服务:在所有节点上部署 Ceph 守护进程(如 OSD, Mgr, Mon, MDS)。

  6. 验证集群:检查集群的健康状态和功能。

第一步:环境准备(在所有节点上执行)

假设拥有三个或更多运行 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 自动化部署的关键。

  1. 在 bootstrap-node (如 node1) 上生成密钥对:

ssh-keygen
  1. 将公钥复制到所有节点(包括自己):

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

  1. 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
  1. 在其他节点上安装 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 命令来管理集群。

将其他节点添加为集群主机

  1. 进入 cephadm shell 使用 orch 命令

sudo cephadm shell
  1. 在 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>
  1. 列出所有主机,确认添加成功

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

第五步:验证集群状态

  1. 检查集群健康状态

ceph -s

输出中 health: 应为 HEALTH_OK,初期可能是 HEALTH_WARN,通常是由于 PG 数不足或正在数据均衡,稍等片刻即可恢复。

  1. 查看已部署的服务

ceph orch ps
  1. 查看 OSD 树和存储空间

ceph osd tree
ceph df
  1. 访问 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

常见问题与故障排除

  1. cephadm 找不到命令:确保已成功安装 cephadm 包,并且 PATH 环境变量设置正确。

  2. SSH 连接失败:确保 Bootstrap 节点能通过 SSH 无密码登录所有其他节点,使用 ssh root@node2 进行测试。

  3. 端口占用或防火墙问题:使用 netstat -tulnp 检查端口,并确认防火墙已正确配置。

  4. 设备未被发现:运行 ceph orch device ls 如果看不到磁盘,确认磁盘未被挂载或已有文件系统,cephadm 需要 raw devices。

  5. 拉取容器镜像失败:由于网络原因,可能需要配置 Docker 镜像加速器。

通过以上步骤,应该能够在 OpenEuler 上成功部署一个功能完整的 Ceph 集群。对于生产环境,请务必仔细规划网络、磁盘和硬件配置,并参考 Ceph 官方文档进行更深入的调优。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐