第二篇:5分钟部署Ceph集群——从零开始的存储革命

阿里云教程3个月前发布 谢谢
18 1 0

开篇场景:

“想象你在宿舍组装乐高千年隼:

  • 步骤1:拆开包装(安装依赖)
  • 步骤2:拼装底盘(部署Monitors)
  • 步骤3:添加引擎(配置OSD)
  • 步骤4:启动光速(集群初始化)
    Ceph部署就像这个过程,只不过你搭建的是数据宇宙飞船!”

第二篇:5分钟部署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无法自动发现磁盘

排查步骤

  1. 检查磁盘状态:
lsblk  # 确认磁盘未挂载
  1. 查看Ceph设备列表:
sudo ceph orch device ls
  1. 手动添加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引擎的黑科技
  • 故障恢复与数据重建机制
© 版权声明

相关文章

1 条评论

  • u又改主意咯o3o
    u又改主意咯o3o 投稿者

    收藏了,感谢分享

    回复