鲲鹏 ARM 架构 Cephadm 部署 Ceph
·
一、环境说明
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
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)