开篇场景:
“想象你在宿舍组装乐高千年隼:
- 步骤1:拆开包装(安装依赖)
- 步骤2:拼装底盘(部署Monitors)
- 步骤3:添加引擎(配置OSD)
- 步骤4:启动光速(集群初始化)
Ceph部署就像这个过程,只不过你搭建的是数据宇宙飞船!”

技术解析:
1. 现代部署工具对比
|
工具 |
适用场景 |
核心优势 |
学习曲线 |
|
Cephadm |
生产环境 |
全生命周期管理 |
中等 |
|
Rook |
Kubernetes集成 |
云原生友善 |
较高 |
|
Ansible |
传统数据中心 |
灵活定制 |
较低 |
选择提议:
- 初学者:从Cephadm开始,官方推荐工具
- 云原生用户:直接使用Rook,与K8s无缝集成
- 批量部署:Ansible Playbook适合大规模集群
2. 单节点快速部署(实验环境)
环境要求:
- 1台Linux服务器(Ubuntu 20.04+)
- 至少2块磁盘(1块系统盘,1块数据盘)
- 4GB内存,2核CPU
部署步骤:
# 1. 安装依赖
sudo apt update
sudo apt install -y docker.io python3-cephadm
# 2. 启动Bootstrap节点
sudo cephadm bootstrap --mon-ip 192.168.1.100
# 3. 添加所有可用磁盘为OSD
sudo ceph orch apply osd --all-available-devices
# 4. 验证集群状态
sudo ceph -s
预期输出:
cluster:
id: 3e8f5c6a-1b2c-4d3e-9f0a-8b7c6d5e4f3a
health: HEALTH_OK
services:
mon: 1 daemons, quorum node1
mgr: node1.vkrptz(active, since 2m)
osd: 3 osds: 3 up (since 1m), 3 in (since 1m)
3. 多节点生产架构图
推荐拓扑:
- Monitor节点:3台(奇数台,防止脑裂)
- OSD节点:至少3台,每台4-12块数据盘
- RGW/MDS节点:按需扩展
网络规划:
|
网络类型 |
带宽要求 |
用途 |
|
公共网络 |
10GbE |
客户端访问、API调用 |
|
集群网络 |
25GbE/100GbE |
数据复制、心跳检测 |
硬件配置提议:
|
组件 |
配置要求 |
备注 |
|
Monitor |
16核CPU/64GB内存/SSD系统盘 |
高可用需3台 |
|
OSD |
24核CPU/128GB内存/HDD数据盘 |
每节点4-12块盘 |
|
RGW |
32核CPU/256GB内存/NVMe缓存盘 |
支持S3接口 |
避坑指南:
问题1:时钟不同步导致Monitor脑裂
现象:
HEALTH_WARN clock skew detected on mon.node1, mon.node2
解决:
# 1. 安装NTP服务
sudo apt install chrony -y
# 2. 配置NTP服务器
sudo nano /etc/chrony/chrony.conf
# 添加:
server ntp.aliyun.com iburst
server time.google.com iburst
# 3. 重启服务
sudo systemctl restart chrony
# 4. 强制同步
sudo chronyc makestep
问题2:OSD无法自动发现磁盘
排查步骤:
- 检查磁盘状态:
lsblk # 确认磁盘未挂载
- 查看Ceph设备列表:
sudo ceph orch device ls
- 手动添加OSD:
sudo ceph orch daemon add osd node1:/dev/sdb
动手实验:
实验1:在MiniKube中部署Ceph测试集群
步骤:
# 1. 创建本地集群
minikube start --nodes 3 --driver=docker
# 2. 部署Rook Operator
kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/crds.yaml
kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/common.yaml
kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/operator.yaml
# 3. 创建CephCluster
cat <<EOF | kubectl apply -f -
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
dataDirHostPath: /var/lib/rook
mon:
count: 3
storage:
useAllNodes: true
useAllDevices: true
EOF
验证部署:
kubectl -n rook-ceph get pods # 查看Pod状态
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status # 检查集群健康
实验2:使用Ceph Dashboard
启用Dashboard:
# 1. 启用模块
ceph mgr module enable dashboard
# 2. 创建管理员用户
ceph dashboard set-login-credentials admin mypassword
# 3. 访问Dashboard
https://<monitor-ip>:8443
功能亮点:
- 实时监控:集群健康、性能指标
- 配置管理:存储池、OSD、RGW设置
- 日志查看:聚焦化日志检索
总结:
通过本篇,可以掌握从单节点实验到多节点生产的Ceph部署全流程。记住:
- 实验环境:Cephadm快速上手
- 生产环境:严格规划网络与硬件
- 云原生场景:Rook是首选方案
下篇预告:
《第三篇:解剖Ceph OSD——数据世界的搬运工》将深入探讨:
- OSD工作原理与性能优化
- Bluestore引擎的黑科技
- 故障恢复与数据重建机制
© 版权声明
文章版权归作者所有,未经允许请勿转载。
收藏了,感谢分享