一、环境说明

1.1 硬件环境

主机名 Public Network Cluster Network OSD磁盘
SZ-ARM-C01 192.168.50.2 192.168.40.2 /dev/sdb(14TB)
SZ-ARM-C02 192.168.50.3 192.168.40.3 /dev/sdb(14TB)
SZ-ARM-C03 192.168.50.4 192.168.40.4 /dev/sdb(14TB)

1.2 软件环境

  • 操作系统:Ubuntu 20.04.6 LTS(aarch64)
  • CPU:ARM64(Kunpeng)
  • Ceph版本:Quincy 17.2.8
  • 部署方式:cephadm + Docker
  • MON网络:192.168.50.0/24
  • Cluster网络:192.168.40.0/24

二、为什么放弃 Reef(18.2.x)

最开始尝试使用 Reef 18.2.8 部署。

部署 MON、MGR 均正常,但在创建 OSD 时出现严重问题:

ceph orch daemon add osd SZ-ARM-C01:/dev/sdb

出现错误:

RuntimeError:
Command failed with exit code -11:
ceph-osd --mkfs

进一步验证:

docker run --rm quay.io/ceph/ceph:v18 ceph-osd --version
echo $?

返回:

139

即:

Segmentation fault

而测试 Quincy:

docker run --rm quay.io/ceph/ceph:v17 ceph-osd --version

正常返回:

ceph version 17.2.8

说明:

  • Reef ARM镜像存在兼容性问题
  • ceph-osd程序在当前ARM平台发生段错误
  • 问题与磁盘、LVM、cephadm均无关

最终决定放弃 Reef,采用 Quincy。


三、安装 Ceph Quincy(17.2.8)

本次部署采用 Ceph Quincy 17.2.8 版本,通过 cephadm 方式部署三节点 Ceph 集群。

3.1 安装 cephadm

下载 cephadm:

curl --silent --remote-name --location \
    https://download.ceph.com/rpm-quincy/el9/noarch/cephadm

赋予执行权限:

chmod +x cephadm
mv cephadm /usr/sbin/

验证:

cephadm version

输出类似:

cephadm version 17.2.8 (quincy)

3.2 配置 Ceph 软件源

添加 Quincy 软件仓库:

cephadm add-repo --release quincy

安装 cephadm:

cephadm install

验证:

cephadm version

输出:

cephadm version 17.2.8 (quincy)

3.3 安装 Docker

执行 cephadm install 时,系统会自动检测容器运行时环境。

由于系统中未安装 Podman,cephadm 自动安装并配置 Docker,因此无需手工安装 Docker。

验证:

docker version
docker ps

3.4 安装依赖组件

安装 Ceph 部署所需基础组件:

apt install -y \
    lvm2 \
    chrony \
    ssh

启动时间同步:

systemctl enable chrony
systemctl restart chrony

检查主机环境:

cephadm check-host

输出:

Host looks OK

3.5 下载 Ceph Quincy 镜像

拉取 Ceph Quincy 17.2.8 镜像:

docker pull quay.io/ceph/ceph:v17

验证:

docker run --rm quay.io/ceph/ceph:v17 ceph --version

输出:

ceph version 17.2.8 (quincy)

四、失败清理旧集群

删除 Reef 集群:

cephadm rm-cluster \
    --force \
    --zap-osds \
    --fsid <old_fsid>

确认删除:

docker ps -a
ls /var/lib/ceph
ls /etc/ceph

确保:

/var/lib/ceph为空
/etc/ceph仅剩rbdmap

五、安装 Quincy

4.1 下载镜像

docker pull quay.io/ceph/ceph:v17

验证:

docker run --rm quay.io/ceph/ceph:v17 ceph --version

输出:

ceph version 17.2.8

4.2 Bootstrap

由于本机 cephadm 为 Reef,需要允许跨版本:

cephadm \
    --image quay.io/ceph/ceph:v17 \
    bootstrap \
    --allow-mismatched-release \
    --mon-ip 192.168.50.2 \
    --cluster-network 192.168.40.0/24

部署完成后:

ceph -s

输出:

mon: 1
mgr: 1
osd: 0

五、添加节点

5.1 导出 ceph 公钥

ceph cephadm get-pub-key > ceph.pub

复制到其它节点:

ssh-copy-id -f -i ceph.pub root@SZ-ARM-C02
ssh-copy-id -f -i ceph.pub root@SZ-ARM-C03

5.2 添加节点

ceph orch host add SZ-ARM-C02 192.168.50.3
ceph orch host add SZ-ARM-C03 192.168.50.4

确认:

ceph orch host ls

六、部署 MON

部署三个 MON:

ceph orch apply mon --placement="3"

遇到的问题:MON无法加入 quorum

现象:

mon.SZ-ARM-C02 running
ceph mon stat
只有2个mon

排查发现:

docker ps | grep mon

存在旧 Reef MON:

ceph-a6890fd0-xxxx-mon-SZ-ARM-C02

旧集群残留导致新的 MON 无法加入。

解决:

ssh root@SZ-ARM-C02 \
    "cephadm rm-cluster --force \
    --zap-osds \
    --fsid old_fsid"

重新部署:

ceph orch daemon rm mon.SZ-ARM-C02 --force
ceph orch daemon add mon SZ-ARM-C02:192.168.50.3

最终:

ceph mon stat

输出:

3 mons
quorum 0,1,2

七、添加 OSD

首先确认设备:

ceph orch device ls

显示:

/dev/sdb Available: Yes

添加 OSD:

ceph orch daemon add osd SZ-ARM-C01:/dev/sdb
ceph orch daemon add osd SZ-ARM-C02:/dev/sdb
ceph orch daemon add osd SZ-ARM-C03:/dev/sdb

验证:

ceph osd tree

输出:

osd.0 up
osd.1 up
osd.2 up

八、创建 Pool

创建 RBD Pool:

ceph osd pool create images 32
ceph osd pool create template 32
ceph osd pool create backup 32
ceph osd pool create ebs 128
ceph osd pool create rds 32

设置副本:

for p in images template backup ebs rds
do
    ceph osd pool set $p size 2
    ceph osd pool set $p min_size 1
done

初始化:

rbd pool init images
rbd pool init template
rbd pool init backup
rbd pool init ebs
rbd pool init rds

九、最终集群状态

ceph -s

输出:

health: HEALTH_OK

mon: 3 daemons
mgr: active + standby
osd: 3 up / 3 in

pgs:
active+clean

十、本次部署踩坑总结

1、Reef ARM镜像崩溃

现象:

ceph-osd exit code -11

原因:

Ceph Reef ARM镜像兼容性问题

解决:

改用 Quincy 17.2.8

2、升级过程中 cephadm 模块崩溃

错误:

TypeError:
include_ceph_conf

原因:

Reef/Quincy 配置对象不兼容

解决:

停止升级
删除旧集群
重新部署

3、cephadm 自动重启 mgr

现象:

ceph mgr fail
立即又恢复

原因:

cephadm 自动拉起 daemon

解决:

需要清理 cephadm 编排记录

4、MON无法加入 quorum

现象:

mon running
但 mon stat 看不到

原因:

旧集群残留 MON 容器

解决:

cephadm rm-cluster
重新部署 mon

5、device unavailable

现象:

Has GPT headers

解决:

wipefs -a /dev/sdb
sgdisk --zap-all /dev/sdb
pvremove -ff -y /dev/sdb
partprobe
udevadm settle
Logo

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

更多推荐