cephadm 部署 Ceph(Octopus)
使用 cephadm 以容器 + systemd 的方式安装和管理 Ceph 集群,并与 CLI、Dashboard 紧密集成。
简介
Cephadm installs and manages a Ceph cluster using containers and systemd, with tight integration with the CLI and dashboard GUI.
| 要点 | 说明 |
|---|---|
| 版本要求 | 仅支持 Octopus 及更新 发行版 |
| 编排能力 | 完整对接新 orchestration API,支持新版 CLI / Dashboard 管理部署 |
| 运行依赖 | 需要容器运行时(podman 或 docker)以及 Python 3 |
- 官网:https://ceph.io
- 文档:https://docs.ceph.com/
环境
| 项目 | 说明 |
|---|---|
| 操作系统 | CentOS Linux release 8.2.2004 (Core) |
| 发行版 | Ceph Octopus(示例中指定 15.2.11) |
| 容器 | 本例选用 podman(与 docker 二选一) |
前置要求(REQUIREMENTS)
| 项 | 要求 |
|---|---|
| a | Python 3 |
| b | systemd |
| c | podman 或 docker(本例:podman) |
| d | 时间同步(chrony / NTP) |
| e | lvm2 |
主机规划与 hosts
cat /etc/hosts
192.168.3.201 igo-ceph-mon1
192.168.3.202 igo-ceph-mon2
192.168.3.203 igo-ceph-mon3
192.168.3.206 igo-ceph-osd1
192.168.3.207 igo-ceph-osd2
建议在所有节点配置一致的
/etc/hosts(或可靠 DNS),保证主机名互相解析。
配置 podman 国内镜像加速
mkdir -p ~/.config/containers/
tee ~/.config/containers/registries.conf <<'EOF'
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "59xo2v7a.mirror.aliyuncs.com"
EOF
location请换成当前可用的镜像加速地址;配置用户级或系统级 registries 均可,按实际 podman 版本文档调整。
1. 安装 cephadm
可通过 standalone 脚本安装(也可用 apt / dnf / zypper 等包管理器安装)。
curl --silent --remote-name --location \
https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
# 按发行版添加仓库
./cephadm add-repo --release octopus
# 若需锁定小版本,可再指定(与上一行按需选用,避免冲突)
./cephadm add-repo --version 15.2.11
./cephadm install
验证:
which cephadm
# /usr/sbin/cephadm
2. 部署集群
2.1 引导第一个 mon 节点
在 igo-ceph-mon1(192.168.3.201)上执行:
cephadm bootstrap --mon-ip 192.168.3.201
该命令会:
- 在本机创建新集群的 monitor 与 manager 守护进程
- 生成集群 SSH 密钥,并写入 root 的
/root/.ssh/authorized_keys - 将公钥副本写到
/etc/ceph/ceph.pub - 写入精简配置
/etc/ceph/ceph.conf(用于与集群通信) - 写入管理员密钥
/etc/ceph/ceph.client.admin.keyring(权限很高,妥善保管) - 给 bootstrap 主机打上
_admin标签;默认带该标签的主机会同步ceph.conf与client.adminkeyring
成功输出示例(节选):
Ceph Dashboard is now available at:
URL: https://igo-ceph-mon1:8443/
User: admin
Password: b9hjymo328
You can access the Ceph CLI with:
sudo /usr/sbin/cephadm shell --fsid 81f6add6-4534-11ec-99e1-000c298b72d6 \
-c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
Please consider enabling telemetry to help improve Ceph:
ceph telemetry on
Bootstrap complete.
Dashboard 初始密码以本次 bootstrap 输出为准,请立即保存;可登录后修改。
界面截图可参考:doc-pic/ceph_install_cephadm_1.png(章鱼哥 / Octopus 主题页)。
开始使用 CLI:
cephadm shell -- ceph -s
# 可选:宿主机安装 ceph-common,便于直接使用 ceph 命令
cephadm install ceph-common
ceph -s
ceph -v
ceph status
2.2 其他主机加入集群
1)分发 cephadm 公钥
ceph cephadm get-pub-key > ~/ceph.pub
ssh-copy-id -f -i ~/ceph.pub root@igo-ceph-mon2
ssh-copy-id -f -i ~/ceph.pub root@igo-ceph-mon3
ssh-copy-id -f -i ~/ceph.pub root@igo-ceph-osd1
ssh-copy-id -f -i ~/ceph.pub root@igo-ceph-osd2
2)添加主机
ceph orch host add igo-ceph-mon2
ceph orch host add igo-ceph-mon3
ceph orch host add igo-ceph-osd1
ceph orch host add igo-ceph-osd2
若名称解析不稳,可使用:
ceph orch host add <hostname> <ip>。
3)指定 mon 节点
默认情况下,mon 可能随集群规模按子网策略自动伸缩。若要固定 mon 所在主机,先关闭自动部署,再显式指定:
ceph orch apply mon --unmanaged
ceph orch apply mon igo-ceph-mon1,igo-ceph-mon2,igo-ceph-mon3
按需向指定地址/网段添加 mon daemon(文档示例):
ceph orch daemon add mon newhost1:10.1.2.123
ceph orch daemon add mon newhost2:10.1.2.0/24
4)添加 OSD
告知 Ceph 使用节点上所有可用且未使用的设备:
ceph orch apply osd --all-available-devices
生产环境更推荐按设备精确声明,避免误用系统盘;并优先使用稳定的 by-id 设备名。
5)确认集群状态
ceph -s
健康示例如下:
cluster:
id: 413469b6-46fe-11ec-ad54-000c29c10c35
health: HEALTH_OK
services:
mon: 3 daemons, quorum igo-ceph-mon1,igo-ceph-mon3,igo-ceph-mon2
mgr: igo-ceph-mon1.mkciav(active, ...), standbys: ...
osd: 3 osds: 3 up, 3 in
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 27 GiB / 30 GiB avail
pgs: 1 active+clean
部署流程速览
装 cephadm → bootstrap 首个 mon
→ 分发公钥 / orch host add
→ apply mon(可选 unmanaged + 指定主机)
→ apply osd --all-available-devices
→ ceph -s / Dashboard 验证
常见注意点
- 时间不同步 易导致 mon clock skew 等告警,部署前先配 chrony。
- 镜像拉取失败 时检查 podman/docker 镜像源与网络。
add-repo --release与--version按需选择,避免重复配置冲突。- admin keyring 权限极高,勿随意拷贝到非管理节点。
- OSD 盘 必须为空闲盘;重装前需清理旧数据(参见相关排障文档)。