Ubuntu 22.04单节点Ceph集群实战:从零到生产级部署的完整指南
当开发者第一次接触Ceph时,往往会被其复杂的分布式架构和繁琐的配置步骤吓退。但Cephadm的出现彻底改变了这一局面——这个官方推荐的部署工具让单节点Ceph集群的搭建变得前所未有的简单。本文将带你用最新Cephadm 17.2.0在Ubuntu 22.04上快速构建一个功能完整的单节点Ceph集群,不仅适用于开发测试,还能满足小型生产环境的需求。
1. 环境准备:打造Ceph的理想温床
在开始Ceph之旅前,我们需要确保基础环境达到最佳状态。不同于简单的测试环境,生产级部署需要考虑更多细节。
1.1 系统优化配置
首先更新系统并安装必要工具:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git lvm2 chrony
关键配置项:
- 时间同步:Ceph对时间同步极其敏感
bash复制sudo timedatectl set-ntp true
sudo systemctl restart chronyd
- 内核参数调整:提升Ceph性能
bash复制echo "vm.swappiness = 10" | sudo tee -a /etc/sysctl.conf
echo "vm.vfs_cache_pressure = 50" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
1.2 存储设备规划
单节点部署中,磁盘配置直接影响集群性能。建议至少准备:
- 1块系统盘(20GB+)
- 3块数据盘(每块20GB+,用作OSD)
- 1块SSD(可选,用于WAL/DB设备)
使用lsblk确认磁盘情况:
bash复制lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE
1.3 容器运行时配置
Cephadm默认使用Docker,但也可选择Podman:
bash复制sudo apt remove docker docker-engine docker.io containerd runc
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
配置Docker镜像加速:
json复制{
"registry-mirrors": ["https://registry.docker-cn.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
2. Cephadm安装与集群引导
2.1 安装Cephadm工具
Ubuntu 22.04已收录Cephadm 17.2.0:
bash复制sudo apt install -y cephadm
验证安装:
bash复制cephadm --version
2.2 集群引导关键步骤
执行bootstrap时,这些参数至关重要:
bash复制sudo cephadm bootstrap \
--mon-ip 192.168.1.100 \
--cluster-network 192.168.1.0/24 \
--single-host-defaults \
--allow-fqdn-hostname \
--skip-monitoring-stack
参数解析:
| 参数 | 作用 | 推荐值 |
|---|---|---|
| --mon-ip | 监控节点IP | 主机实际IP |
| --cluster-network | 集群通信网络 | 根据实际网络配置 |
| --single-host-defaults | 单节点优化配置 | 必选 |
| --allow-fqdn-hostname | 允许FQDN主机名 | 解决主机名问题 |
| --skip-monitoring-stack | 跳过监控组件 | 测试环境可选 |
2.3 常见报错解决方案
问题1:No module named 'cephadm'
bash复制sudo python3 -m pip install cephadm
问题2:Docker权限不足
bash复制sudo usermod -aG docker $USER
newgrp docker
问题3:时间不同步
bash复制sudo chronyc makestep
sudo chronyc tracking
3. 集群核心组件部署
3.1 监控服务精简配置
生产环境建议保留必要监控:
bash复制ceph orch apply prometheus 1
ceph orch apply grafana 1
ceph orch apply alertmanager 1
查看服务状态:
bash复制ceph orch ls
3.2 OSD部署实战技巧
自动发现并部署所有可用磁盘:
bash复制ceph orch apply osd --all-available-devices
手动指定特定磁盘(更安全):
bash复制ceph orch daemon add osd host01:/dev/sdb
ceph orch daemon add osd host01:/dev/sdc
验证OSD状态:
bash复制ceph osd tree
3.3 存储池创建与优化
创建生产级存储池:
bash复制ceph osd pool create mypool 128 128
ceph osd pool set mypool size 2
ceph osd pool set mypool min_size 1
重要参数对比:
| 参数 | 单节点建议值 | 生产环境建议值 |
|---|---|---|
| pg_num | 64-128 | 根据数据量计算 |
| size | 2 | 3 |
| min_size | 1 | 2 |
4. 生产级调优与维护
4.1 性能优化配置
调整CRUSH map实现单节点优化:
bash复制ceph osd crush tunables optimal
ceph osd crush reweight-all
监控集群性能:
bash复制ceph osd perf
ceph df detail
4.2 日常维护命令
安全添加/移除OSD:
bash复制# 安全移除OSD
ceph osd out osd.0
ceph osd crush remove osd.0
ceph auth del osd.0
ceph osd rm osd.0
# 重新部署OSD
ceph orch daemon add osd host01:/dev/sdd
集群健康检查:
bash复制ceph health detail
ceph -s
ceph osd stat
4.3 灾难恢复方案
完整集群重置(慎用):
bash复制fsid=$(ceph fsid)
cephadm rm-cluster --force --zap-osds --fsid $fsid
保留配置的重置:
bash复制ceph orch pause
ceph osd down `ceph osd ls`
ceph osd out `ceph osd ls`
ceph orch rm osd --all
5. 进阶应用场景
5.1 RBD块存储实战
创建高性能RBD镜像:
bash复制rbd create mypool/myimage --size 10G --image-feature layering,exclusive-lock
rbd map mypool/myimage
mkfs.xfs /dev/rbd0
mount /dev/rbd0 /mnt
5.2 CephFS文件系统部署
创建CephFS:
bash复制ceph fs volume create myfs
ceph fs ls
挂载使用:
bash复制sudo mount -t ceph :/ /mnt -o name=admin,secretfile=/etc/ceph/admin.secret
5.3 对象网关(S3兼容)配置
部署RGW服务:
bash复制ceph orch apply rgw myrealm myzone --placement="1"
创建S3用户:
bash复制radosgw-admin user create --uid="testuser" --display-name="Test User"
在实际项目中,单节点Ceph集群虽然不能发挥Ceph的全部分布式优势,但对于开发测试和小型生产环境已经足够。记得定期检查ceph -s输出,当看到"HEALTH_OK"时,你就拥有了一个稳定可靠的存储系统。