Ceph 集群部署:使用 cephadm 快速搭建生产环境

cephadm 是 Ceph 官方推荐的部署工具,使用容器化方式管理 Ceph 集群。它简化了部署流程,支持滚动升级,并且与 Ceph 版本紧密集成。

本文将详细介绍如何使用 cephadm 从零开始部署一个生产级的 Ceph 集群。


一、环境准备

1.1 硬件要求

节点类型 数量 CPU 内存 磁盘
管理节点 1 4 核 8GB 100GB SSD
MON/MGR 节点 3 4 核 16GB 100GB SSD
OSD 节点 3+ 8 核 32GB+ 数据盘×N

网络要求:

  • 前端网络(客户端访问):10GbE+
  • 后端网络(数据复制):10GbE+(可与前端共用)
  • 节点间延迟:< 10ms

1.2 系统要求

  • 操作系统:Ubuntu 20.04/22.04、Rocky Linux 8/9、CentOS Stream 8/9
  • Docker/Podman:Docker 20.10+ 或 Podman 4.0+
  • Python:Python 3.6+
  • 时间同步:所有节点配置 NTP/Chrony

二、前置配置

2.1 配置主机名解析

# /etc/hosts
192.168.1.101  ceph-node1
192.168.1.102  ceph-node2
192.168.1.103  ceph-node3

2.2 配置 SSH 免密登录

# 生成 SSH 密钥
ssh-keygen -t ed25519 -N ""

# 复制公钥到所有节点
ssh-copy-id root@ceph-node1
ssh-copy-id root@ceph-node2
ssh-copy-id root@ceph-node3

2.3 安装 Docker

# Ubuntu/Debian
curl -fsSL https://get.docker.com | bash
systemctl enable --now docker

# Rocky Linux/CentOS
dnf install -y docker
systemctl enable --now docker

2.4 配置时间同步

# 安装 Chrony
apt install -y chrony    # Ubuntu
dnf install -y chrony    # Rocky/CentOS

# 启动服务
systemctl enable --now chronyd

三、部署 Ceph 集群

3.1 下载 cephadm

# 下载 Ceph Reef (v18) 版本
curl --silent --remote-name --fail \
  https://raw.githubusercontent.com/ceph/ceph/v18/cephadm

# 添加执行权限
chmod +x cephadm

# 移动到 PATH
mv cephadm /usr/local/bin/

3.2 引导集群

# 引导 Ceph 集群
cephadm bootstrap --mon-ip 192.168.1.101 \
  --dashboard-password-noprompt \
  --cluster-network 10.0.0.0/24

参数说明:

  • --mon-ip:MON 节点 IP 地址
  • --dashboard-password-noprompt:自动生成 Dashboard 密码
  • --cluster-network:后端存储网络(可选)

3.3 添加其他节点

# 复制 SSH 公钥到节点 2 和 3
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-node2
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-node3

# 添加节点到集群
ceph orch host add ceph-node2 192.168.1.102
ceph orch host add ceph-node3 192.168.1.103

# 查看主机列表
ceph orch host ls

四、部署 OSD 存储

4.1 查看可用磁盘

# 查看所有节点的可用磁盘
ceph orch device ls --wide

# 在所有主机上使用所有可用磁盘
ceph orch apply osd --all-available-devices

# 查看 OSD 状态
ceph osd status
ceph osd tree

五、创建存储池

5.1 创建副本存储池

# 创建存储池(3 副本)
ceph osd pool create rbd_pool 32 32
ceph osd pool set rbd_pool size 3

# 初始化 RBD 存储池
rbd pool init rbd_pool

# 查看存储池
ceph osd pool ls detail
ceph df

六、集群验证

6.1 检查集群健康

# 查看集群状态
ceph -s
ceph health detail

6.2 测试 RBD 存储

# 创建 RBD 镜像
rbd create --size 1G rbd_pool/test_image

# 查看镜像
rbd ls rbd_pool
rbd info rbd_pool/test_image

# 删除测试镜像
rbd rm rbd_pool/test_image

6.3 访问 Dashboard

浏览器访问 https://ceph-node1:8443,用户名:admin,密码查看 /etc/ceph/ceph.client.admin.keyring


七、日常运维命令

# 查看集群状态
ceph -s
ceph health

# 查看 OSD 状态
ceph osd stat
ceph osd tree

# 查看服务
ceph orch ps

# 查看主机
ceph orch host ls

# 重新平衡数据
ceph osd reweight-by-utilization

八、常见问题

8.1 OSD 无法启动

检查:磁盘是否被其他进程占用、是否有分区表

# 清空磁盘
sgdisk --zap-all /dev/sdb
dd if=/dev/zero of=/dev/sdb bs=1M count=100 oflag=direct,dsync

8.2 Dashboard 无法访问

# 检查 Dashboard 服务
ceph orch ps | grep dashboard

# 重置密码
ceph dashboard ac-user-set-password admin

总结

通过本文,你应该已经成功部署了一个生产级的 Ceph 集群:

  • ✅ 完成环境准备和前置配置
  • ✅ 使用 cephadm 引导集群
  • ✅ 添加节点和部署 OSD
  • ✅ 配置 Dashboard 和管理服务
  • ✅ 创建存储池并验证功能

下一步:配置 RBD 块存储、部署 RGW 对象存储网关、搭建 CephFS 文件系统


🔗 相关链接

下一篇将介绍 Ceph RBD 块存储:从创建到 Kubernetes 集成,敬请期待!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注