Ceph Quincy版本在线安装实战:打造Kubernetes高性能存储集群

Ceph Quincy版本在线安装实战:打造Kubernetes高性能存储集群

在云原生时代,分布式存储已成为支撑大规模容器化应用的核心基础设施。当我们在KubeSphere中遇到ElasticSearch组件因NFS存储导致的性能瓶颈时,Ceph便成为了最佳替代方案。本文将详细介绍如何在线安装Ceph Quincy版本(v17.2.9),为Kubernetes 1.30.x集群提供稳定可靠的存储支持。

为何选择Ceph Quincy版本?

Ceph Quincy作为第17个稳定版本,在性能和功能上都有显著提升:

  1. BlueStore默认加持:作为新一代存储引擎,BlueStore相较FileStore提供更优性能和更强可靠性
  2. cephadm简化运维:全新管理工具让集群部署和维护变得轻而易举
  3. 全方位优化升级:RADOS、RBD、CephFS等核心组件均得到增强

Quincy版本兼具稳定性与兼容性,是替换传统NFS存储的理想之选。

环境准备清单

硬件配置要求

  • 4台服务器节点(生产环境建议5台以上)
  • 单节点配置:8核CPU + 16GB内存 + 50GB系统盘 + 100GB数据盘
  • 每节点额外配备1块数据磁盘(无需预分区)

软件环境设定

  • 操作系统:Rocky Linux 9.6(兼容RHEL 9)
  • 网络环境:节点间网络互通,支持静态IP配置
  • 时间同步:全节点时间一致(推荐chronyd服务)

网络规划参考

复制代码
192.168.3.41 ceph1
192.168.4.33 ceph2
192.168.4.34 ceph3
192.168.4.36 ceph4

安装操作详解

1. 基础环境配置

所有节点统一执行以下初始化操作:

bash 复制代码
# 关闭防火墙服务
systemctl stop firewalld
systemctl disable firewalld

# 禁用SELinux安全机制
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

# 配置各节点主机名
hostnamectl set-hostname ceph1  # ceph1节点执行
hostnamectl set-hostname ceph2  # ceph2节点执行
hostnamectl set-hostname ceph3  # ceph3节点执行
hostnamectl set-hostname ceph4  # ceph4节点执行

# 统一配置hosts解析
cat >> /etc/hosts << EOF
192.168.3.41 ceph1
192.168.4.33 ceph2
192.168.4.34 ceph3
192.168.4.36 ceph4
EOF

# 部署时间同步服务
dnf install -y chrony
systemctl start chronyd
systemctl enable chronyd

# 安装必要依赖组件
dnf install -y yum-utils python3 podman

2. 部署cephadm工具

在ceph1节点安装管理工具:

bash 复制代码
# 获取cephadm脚本
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm

# 授予执行权限
chmod +x cephadm

# 安装至系统路径
dnf install --assumeyes centos-release-ceph-quincy
dnf install --assumeyes cephadm

张师傅提供目前在用的cephadm文件

配置阿里云镜像加速(适用于国内环境):

shell 复制代码
cat > /etc/yum.repos.d/ceph-quincy.repo << EOF
[ceph-quincy]
name=Ceph Quincy RPMs for EL9 - x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-quincy/el9/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-quincy-noarch]
name=Ceph Quincy noarch RPMs for EL9
baseurl=https://mirrors.aliyun.com/ceph/rpm-quincy/el9/noarch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
EOF

# 更新yum缓存
dnf clean all
dnf makecache

3. 初始化Ceph集群

在ceph1节点启动集群引导程序:

bash 复制代码
# 启动集群引导(指定mon节点IP)
# 使用默认的podman,未安装podman,会自动安装podman
cephadm bootstrap --mon-ip 192.168.3.41
# 使用docker作为容器运行时进行安装,需要先安装docker
cephadm --docker bootstrap --mon-ip 192.168.3.41

引导日志关键信息解读:

shell 复制代码
# 日志节选展示关键步骤
Verifying time synchronization is in place...
Unit chronyd.service is enabled and running
Host looks OK
Cluster fsid: b830174a-ce95-11f0-9549-525400888397
Pulling container image quay.io/ceph/ceph:v17...
Ceph version: ceph version 17.2.8 (f817ceb7f187defb1d021d6328fa833eb8e943b3) quincy (stable)
Creating mon...
Creating mgr...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Ceph Dashboard is now available at:
	     URL: https://ceph1:8443/
	    User: admin
	Password: 01dypy5fh9

4. 配置Ceph CLI工具

为便于日常管理,安装ceph-common工具包:

bash 复制代码
# 安装CLI组件
dnf install -y ceph-common

安装完成后即可直接使用ceph命令:

bash 复制代码
# 检查集群运行状态
ceph -s

5. 添加其余节点

将SSH公钥分发至其他节点:

bash 复制代码
# 分发密钥至各节点
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph2
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph3
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph4

注册节点至集群:

bash 复制代码
# 注册各节点
ceph orch host add ceph2 192.168.4.33
ceph orch host add ceph3 192.168.4.34
ceph orch host add ceph4 192.168.4.36

验证节点注册情况:

bash 复制代码
# 查看集群主机列表
ceph orch host ls

6. 配置MON高可用

默认情况下,Ceph会自动部署MON服务,但考虑到网络环境特殊性,需手动调整:

bash 复制代码
# 查看当前MON服务状态
ceph orch ls --service-type mon

# 由于集群各节点不在同一子网,需配置网络参数
ceph config set global public_network "192.168.0.0/16"
ceph config set mon public_network "192.168.0.0/16"

# 明确指定MON服务部署位置
ceph orch apply mon --placement="ceph1 ceph2 ceph3"

# 验证MON服务运行状态
ceph orch ps --daemon-type mon

7. 配置MGR高可用

为保障管理服务高可用,部署多个MGR实例:

bash 复制代码
# 查看当前MGR服务状态
ceph orch ls --service-type mgr

# 部署MGR服务至指定节点
ceph orch apply mgr --placement="ceph1 ceph2"

# 检查MGR服务运行状态
ceph orch ps --daemon-type mgr

8. 添加OSD存储设备

推荐使用自动模式添加所有可用磁盘:

bash 复制代码
# 自动添加所有可用磁盘为OSD
ceph orch apply osd --all-available-devices

若遇到CD-ROM设备误识别问题(如ceph2上的/dev/sr0),可通过以下方式处理:

bash 复制代码
# 手动指定磁盘添加(根据实际磁盘名称调整)
ceph orch daemon add osd ceph1:/dev/sdb
ceph orch daemon add osd ceph2:/dev/sdb
ceph orch daemon add osd ceph3:/dev/sdb
ceph orch daemon add osd ceph4:/dev/sdb

验证OSD部署结果:

bash 复制代码
# 查看设备状态列表
ceph orch device ls

# 查看OSD服务状态
ceph orch ps --daemon-type osd

9. 验证集群状态

待所有服务进入running状态后,检查集群健康度:

bash 复制代码
# 查看集群整体状态
ceph -s

# 查看集群详细健康信息
ceph health detail

健康的集群应显示HEALTH_OK状态。

高可用性增强配置

1. MON高可用优化

MON作为集群大脑,其高可用至关重要:

bash 复制代码
# 查看当前MON配置信息
ceph mon dump

# 设置MON的部署个数,默认为奇数
ceph orch apply mon --placement="ceph1 ceph2 ceph3"

运维提示:4节点环境下建议设置mon_quorum_size=3,确保单点故障不影响集群运行。

最佳实践总结:

  • 部署奇数个MON实例(最少3个)防止脑裂
  • 分布于不同物理节点提升容灾能力
  • 保障网络低延迟高连通性

2. MGR高可用优化

MGR提供Web仪表板和REST API等功能:

bash 复制代码
# 查看MGR运行统计
ceph mgr stat

# 查看活跃/备用MGR实例
ceph mgr dump

最佳实践:

  • 部署1个活跃+1个备用MGR实例
  • 可增加备用实例提升可用性
  • MGR资源消耗较低,可与其他服务共存

3. OSD高可用优化

OSD负责实际数据存储:

bash 复制代码
# 查看OSD树状拓扑
ceph osd tree

# 查看OSD详细状态
ceph osd status

高可用保障要点:

  1. 副本策略配置

    bash 复制代码
    # 创建副本数为3的存储池
    ceph osd pool create mypool 64 64 replicated
    
    # 设置存储池副本数
    ceph osd pool set mypool size 3
  2. 故障域隔离

    bash 复制代码
    # 查看CRUSH映射结构
    ceph osd crush tree
  3. 自动故障恢复

    bash 复制代码
    # 调整OSD心跳参数
    ceph config set osd osd_heartbeat_grace 20
    ceph config set osd osd_heartbeat_interval 5

4. 网络高可用优化

建议配置独立集群网络提升性能:

bash 复制代码
# 分别设置公共网络和集群网络
ceph config set global public_network 192.168.3.0/24
ceph config set global cluster_network 192.168.4.0/24

实现客户端流量与内部复制流量分离,提升整体性能。

可扩展性增强配置

1. 新增节点扩容

集群容量不足时可快速扩容:

bash 复制代码
# 添加新节点至集群
ceph orch host add ceph5 192.168.4.37

# 分发SSH密钥至新节点
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph5

# 在新节点部署MON服务
ceph orch daemon add mon ceph5

# 在新节点部署MGR服务
ceph orch daemon add mgr ceph5

# 在新节点添加OSD
ceph orch daemon add osd ceph5:/dev/sdb

2. 存储池动态扩展

根据不同业务需求创建多样化存储池:

bash 复制代码
# 创建副本型存储池(通用场景)
ceph osd pool create replicated_pool 128

# 创建纠删码存储池(归档场景,节约空间)
ceph osd pool create erasure_pool 128 128 erasure

# 调整存储池副本参数
ceph osd pool set replicated_pool size 3
ceph osd pool set replicated_pool min_size 2

3. 性能调优配置

针对不同场景进行针对性优化:

bash 复制代码
# 设置OSD内存上限(按节点内存调整)
ceph config set osd osd_memory_target 8G

# 调整恢复并发参数适配扩容操作
ceph config set osd osd_max_backfills 4
ceph config set osd osd_recovery_max_active 4

常见问题诊断

1. 网络连通性检查

确保所有节点网络互通:

bash 复制代码
ping ceph2
ping ceph3
ping ceph4

2. 时间同步验证

确认时间同步服务正常运行:

bash 复制代码
# 检查chrony服务状态
systemctl status chronyd

# 查看时间源同步情况
chronyc sources

3. 防火墙端口开放

若启用防火墙,需开放必要端口:

  • 6789/tcp (mon监控端口)
  • 6800-7300/tcp (osd/mgr/mds服务端口)

性能优化建议

  1. 存储介质升级:生产环境优选SSD磁盘提升I/O性能
  2. 网络带宽优化:采用万兆网络降低节点间通信延迟
  3. 内存资源配置:每节点不少于8GB内存保障稳定运行
  4. 监控体系完善:建立完善的监控告警机制及时响应异常

总结

通过本文详尽的操作步骤,您可以成功搭建一套基于Ceph Quincy版本的分布式存储集群。该版本在稳定性和功能性方面的全面提升,使其成为解决KubeSphere中ElasticSearch等组件NFS存储性能问题的最佳方案。

实际生产环境中还需结合具体需求进行深度定制,如精细调整存储池配置、优化副本策略、完善监控告警等。随着对Ceph理解的加深,可进一步挖掘CephFS、RBD、RGW等高级特性,为Kubernetes及其他容器化应用提供高性能、高可靠的存储支撑。

参考资料

  1. Ceph官方文档 - Quincy版本
  2. 吴昊博客 - cephadm搭建Ceph集群(在线安装quincy版)
  3. Ceph版本发布说明

温馨提示

由于网络环境或文件存储等因素,若相关文件或图片链接暂时无法访问,您也可以通过访问张师傅的好来斯技术博客获取更多相关资源和最新信息。

本篇文章原始链接:

复制代码
https://www.howlaisi.com/categories/ceph/ceph-quincyban-ben-zai-xian-an-zhuang-shi-zhan-da-zao-kubernetesgao-xing-neng-cun-chu-ji-qun
相关推荐
韭菜张师傅8 小时前
CephFS存储池详解与命名规范:Rocky 9.6 + Ceph 17.2.9环境实践
ceph
韭菜张师傅8 小时前
Ceph MON 命令详解
ceph
就叫飞六吧9 小时前
K8s 端口暴露:集群统一暴露 vs 单 Pod 暴露
云原生·容器·kubernetes
执笔为剑10 小时前
docker环境升级数据库
数据库·docker·容器
于眠牧北11 小时前
ubuntu22.04安装docker以及安装过程中报错解决方法
运维·docker·容器
AI成长日志14 小时前
【agent专栏】Agent服务化与性能优化——Docker容器化、并发处理、成本控制
docker·容器·性能优化
indexsunny14 小时前
互联网大厂Java面试实战:微服务与Spring Boot在电商场景下的应用解析
java·spring boot·redis·docker·微服务·kubernetes·oauth2
江湖有缘14 小时前
从零开始:在Docker中一键部署Umbrel个人云系统
运维·docker·容器
岁岁种桃花儿14 小时前
kubenetes从入门到上天系列第十五篇:Kubernetes的持久化存储PC和PVC
云原生·容器·kubernetes
returnthem14 小时前
Docker数据卷
运维·docker·容器