文章目录
- [Ceph 分布式存储](#Ceph 分布式存储)
-
- [Ceph 分布式存储 介绍](#Ceph 分布式存储 介绍)
- [Ceph 集群部署](#Ceph 集群部署)
- [Ceph 管理配置、权限与认证](#Ceph 管理配置、权限与认证)
- 集群状态监管与管理
- [Ceph 池管理](#Ceph 池管理)
- [Ceph 分布式存储 使用详细指南](#Ceph 分布式存储 使用详细指南)
- 配置成功关键点
-
- [配置 Ceph 网络](#配置 Ceph 网络)
- [确认 MON 地址对应](#确认 MON 地址对应)
- 禁用某些功能(如快照)仅适用于特定池
- 存储监控工具与配置
-
- [通过 Grafana 监控](#通过 Grafana 监控)
- [安装 Grafana 部署建议](#安装 Grafana 部署建议)
- [配置算法(如 CRUSH)](#配置算法(如 CRUSH))
-
- [CRUSH Map 配置](#CRUSH Map 配置)
- 设置标志(即重量)
- [Ceph 块存储管理(RBD)](#Ceph 块存储管理(RBD))
-
- [部署 RBD 镜像](#部署 RBD 镜像)
- [配置 cache 等参数](#配置 cache 等参数)
- [实例化 RBD 最终即池](#实例化 RBD 最终即池)
- 协议与配置(CephX)
-
- [CephX 认证和授权](#CephX 认证和授权)
- [配置 CephX 的数据镜像](#配置 CephX 的数据镜像)
- 密钥管理
- [Ceph 对象网关(RGW)](#Ceph 对象网关(RGW))
- [Ceph 服务认证](#Ceph 服务认证)
-
- 操作指导
- [实例化 RGW 配置审核](#实例化 RGW 配置审核)
- [创建 RGW 用户](#创建 RGW 用户)
- [RGW 配置快照、清除 dist](#RGW 配置快照、清除 dist)
- [names 我们需要配置"storage"属性](#names 我们需要配置“storage”属性)
- 放弃索引操作
-
- 管理代码测试配额池
- [计算 RBD 灾难恢复与复杂化情况](#计算 RBD 灾难恢复与复杂化情况)
- 总结
Ceph 分布式存储
Ceph 分布式存储 介绍
存储中用户角色
存储管理员
存储管理员负责执行以下任务:
- 安装、配置和维护 Ceph 存储集群。
- 对基础架构架构师进行有关 Ceph 功能和特性的培训。
- 告知用户有关 Ceph 数据表示和方法的信息,作为他们数据应用程序的选择。
- 提供弹性和恢复,例如复本、备份和灾难恢复方法。
- 通过基础架构即代码实现自动化和集成。
- 提供对数据分析和高级海量数据挖掘的访问。
存储操作员
- 通常与存储管理员合作,协助存储集群的日常操作。
- 相比于存储管理员,通常缺乏经验和技能。
- 使用 Ceph Dashboard GUI 查看和响应集群警报和统计信息。
其他存储相关的角色
- 应用程序开发人员:负责 RBD 镜像的创建和部署(开发、维护及相关部署过程)。
- 云操作员:负责管理组织内的云资源,包括 OpenStack、OpenShift 基础设施。
- 自动化工程师:负责创建剧本以自动化常见重复任务。
- 服务管理员:管理最终用户的服务(不同于操作系统服务)。
- 部署工程师(DevOps):与存储管理员和应用程序开发人员一起管理和调整应用程序部署。
- 应用架构师(Application Architect):可以在存储中建立不同应用部署中存储资源之间的关联。这种架构知识允许存储管理员有效设计复杂结构。
云操作员
- 通常仅消费存储,不维护存储。他们的工作涉及管理云资源(如 OpenStack 基础设施)。
金融组织中的角色
- 在对安全性和专用基础设施要求较高的金融等组织,存储管理员、云操作员和基础架构架构师决心为所有服务提供高安全性保证。这些用户标识不单纯局限于云操作员的容器或裸机,而包括了服务生态系统中的所有角色。
小组织或大学等实施中
- 技术支持人员会承担多个角色,例如存储管理员、基础架构架构师、云操作员等。
Ceph 介绍
Ceph 简介
Ceph 是一款自主研发的、去中心化的、支持千级客户端和几百PB存储的分布式存储系统。
Ceph 技术优势
- RADOS(Reliable, Autonomic, Distributed Object Store)系统:所有数据以对象形式存储在池内。
- 去中心化:Ceph 不依赖中心服务器,客户端直接与 MON 服务器交互计算数据存储位置。
- 自修复与管理:Ceph 能自动扩展存储、数据再平衡、数据恢复、存储空间管理。
- 大存储容量:支持高达 PB 级别的存储容量和大量应用服务接入。
Ceph 使用场景
- 适用场景包括:云存储、对象存储、大规模数据存储、备份/归档、虚拟化、容器存储、灾难恢复、多媒体存储等。
- Ceph 能线性扩展,支持多种应用模式。
Ceph 历史
| 时期 | Ceph 版本 | 首次发布 | 稳定版本 | 信息说明 |
|---|---|---|---|---|
| 2003年 | Ceph RC1 | 2003年 | 无 | 初始的 Ceph 项目 |
| 2006年 | Ceph 0.47 | 2006年 | 暂未支持 | 项目完成部分原型 |
| 2007年 | Ceph 0.72 | 2007年 | 无 | 项目的初步成熟 |
| 2012年 | Ceph 0.94 | 2012年 | 无 | Ceph 转变为 valid 生产级项目 |
| 2014年 | Ceph 10.2 | 2014年 | 无 | Ceph 来到红帽,成为 Ceph Storage |
| 2016年 | 16.2.0 | 2016年 | Pacific | 也即今日 Ceph 的基本分布架构协调 和 Btrfs |
| 2017年 | 16.2.15 | 2017年 | Pacific | 首次集成 Recos 下的 PG 和配额 |
| 2024年 | 17.2.0 | 2024年 | Quincy | 现代RADOS思路浸入多种工作负载场景中,包括:KVM虚拟机、开箱存储集成到OpenStack etc. |
Ceph 集群部署
Ceph 集群安装介绍
官方推荐部署方式
- Cephadm(容器化部署):支持 Octopus 及之后的版本,使用单一节点初始化,支持增量部署。
- Rook(基于 Kubernetes 的部署):适合使用 K8s 作为部署基础平台。
- ceph-ansible:经典逐一部署,适合使用 shell 的初级部署。
- ceph-deploy:已弃用。
- DeepSea(Salt 执行):由用户執行 Salt 的任务编排来进行部署。
- 手动部署:通常适合实验或开发,但推荐使用 Cephadm。
其他部署方式
- 依赖有关操作系统/网络能够协助维护和轻微维护节点的组件。
服务端口描述
| 服务类型 | 默认端口 | 备注 |
|---|---|---|
| MON | 6789, 3300 | 用于 MON 内部通信 |
| OSD | 6800-7300 | 每个 OSD 节点对应四个端口 |
| MDS | 6800-7300 | 用于 MDS 客户端访问 |
| MGR | 8443 | 使用 SSL 的 Web UI 页 |
| RESTful API | 8003 | 集群管理 Web 页面访问 |
Ceph 管理配置、权限与认证
集群配置概述
Ceph 配置选项具有唯一名称,由下划线连接的小写字符串表示。
配置来源
- 编译中默认值:最开始的配置项。
- 集中配置数据库(MON 管理):存储集群的统一配置信息。
- 本地配置文件(位于 /etc/ceph 目录):指定系统配置参数。
- 环境变量:方便一次配置多节点和多服务。
- 命令行参数:self-contained 的配置。
值得注意的是:较新的配置覆盖了旧的配置。
配置管理
配置文件路径
- 默认配置文件路径 :
/etc/ceph/ceph.conf - 日志路径 :
/var/log/ceph/目录 - 密钥目录 :
/etc/ceph/与~/.ceph/是 Ceph 的加密凭据路径。
模块配置变更管理
- 使用
ceph config set命令临时更改配置项。 - 使用
ceph config rm命令将配置项恢复为默认。 - 使用
ceph config get获取配置数据值。 - 使用
ceph config log查看更改日志等。
示例配置
ini
[global]
fsid = 2faf683a-7cbf-11f0-b5ba-000c29e0ad0e
mon_host = [v2:192.168.108.11:3300/0,v1:192.168.108.11:6789/0]
CRUSH 映射与 OSD 分布
使用 CRUSH 及分配图如下
- 每个对象 被分配到
Placement Group(PG)。 - PG映射到多个授权 OSD(可并行访问)。
- CRUSH 树结构允许分布数据无序,但提供带失效区域的快速数据回收。
如何获取 and 解析 PG map
ceph pg dump命令展现了 PG 配置详情。- 可通过
ceph osd crush info查看 CRUSH 规则。
集群状态监管与管理
监控器(MON)与强一致性
- MON 采用 Paxos 算法 来协调集群的划分。
- 用于读取和写入操作前,客户端需要联系 MON,获取当前集群区域信息。
- 初始节点数需为奇数,以便实现符合集群共识的仲裁算法。
集群监控命令
ceph status、ceph --status:列出集群状态。ceph mon stat:检查 MON 状态和仲裁信息。ceph quorum_status -f json-pretty:查看详细仲裁状态。
Ceph 池管理
Ceph 池和使用方法
Ceph 数据存储通过池实现,支持:
- 无限大小的 pool。
- 强一致性:确保数据的始终高可用。
- 容量规划问题:容量决定了 pool 的 PG 数量和分布。
- 功能(Jobs) :单个 pool 的功能由池应用程序定义,例如
rbd、rgw、cephfs。
池创建与管理
创建一个 RBD Pool
bash
ceph osd pool create images_pool 32 32 replicated crush-rule-name
创建一个纠删码池
bash
ceph osd pool create pool_era 32 32 erasure erasure-code-profile crush-rule-name
Ceph 分布式存储 使用详细指南
多节点搭建
集群部署
- 通常,Ceph 集群应部署至少3个 MON 节点以保证高可用性。
安装准备
bash
dnf install -y ceph-common
如果使用 ssh 密钥免密访问,则对比 cephadm bootstrap 与 ceph orch apply:
示例:部署 cephadm 安装
bash
cephadm bootstrap --mon-ip 192.168.108.11 --allow-fqdn-hostname \
--initial-dashboard-user admin --initial-dashboard-password laogao@123 \
--dashboard-password-noupdate
cephadm shell
常见问题处理
创建池遇到无法识别的依赖
可采用 ceph orch apply 或 ceph orch daemon.
配置键名拒绝访问
bash
ceph config set mon mon_allow_pool_delete true
禁用某池
bash
ceph config set mon mon_allow_pool_delete false
配置成功关键点
配置 Ceph 网络
- 公共网络 (public_network)与 集群网络(cluster_network)应在配置目标中同时定义,确保不再依赖主网络。
确认 MON 地址对应
在运维中,建议在配置文件中或直接在命令中指定 MON 的地址和端口。详情见后续内容。
禁用某些功能(如快照)仅适用于特定池
bash
ceph fs snapshot mirror enable/disable <fsname>
存储监控工具与配置
通过 Grafana 监控
- 需要使用
ceph的额外监控模块运行。 - 安装流程:需要通过
cephadm或ceph实现部署。
安装 Grafana 部署建议
bash
cephadm shell
ceph dashboard module enable grafana
配置算法(如 CRUSH)
Ceph 使用 CRUSH 算法进行对象存取,建议设置如下选项:
CRUSH Map 配置
bash
ceph osd crush add osd.0 host=ceph1
ceph osd crush add osd.1 host=ceph2
ceph osd crush add osd.2 host=ceph3
设置标志(即重量)
设置属性以在 pool 中启用、停用不同功能。
Ceph 块存储管理(RBD)
部署 RBD 镜像
- 每个 Ceph 块设备需与 pool 关联。
- 实际应将 RBD 镜像挂在到挂载点,对于 Linux 节点,需获得
rbd的权限。
配置 cache 等参数
ceph config set client rbd_cache true: 开启 RBD cache。ceph config set client rbd_cache_policy writethrough:加强写入缓存的稳定性。
实例化 RBD 最终即池
详细命令
bash
ceph fs volume create <fsname> --placement "3 ceph1 ceph2 ceph3"
比如创建名为 webapp 的 CephFS 存储系统,并将其部署在 ceph1.laogao.cloud、ceph2.laogao.cloud 与 ceph3.laogao.cloud。
协议与配置(CephX)
CephX 认证和授权
- 需要
ceph与cephx协议实现。 ceph auth get、ceph auth list、ceph auth add命令用于管理用户、密钥与联盟安全性。
配置 CephX 的数据镜像
bash
ceph auth add client.shibuya mon 'allow *' osd 'allow *' mds 'allow *'
密钥管理
- 访问 Ceph 的关键密钥必须受到保护,如
ceph.client.admin.keyring。
Ceph 对象网关(RGW)
RGW 部署
- 要部署 RGW,必须定义 realm 、zonegroup 、zone。
自动化的 RGW 部署
- 推荐使用网关服务
cephadm安装:
bash
cephadm shell
ceph dashboard module enable rgw
访问权限控制
自定义 RGW 用户权限
bash
ceph auth get client.app1
ceph auth get client.app2
ceph auth get client.app3
ceph auth get client.app4
元数据保护
- 通常开启
allow r、allow rw权限大池是有意义的。
Ceph 服务认证
操作指导
- 每个集群都有一个
client.admin用户。 - 如果希望剪裁访问权限,建议创建多个用户并授权它们不同的功能与数据池访问权限。
实例化 RGW 配置审核
- 要确保
ceph的 RGW 配置访问正确。 - 可通过工具 region 查看系统现状。
创建 RGW 用户
bash
ceph auth create client.operator1
RGW 配置快照、清除 dist
names 我们需要配置"storage"属性
- 通过
--storage=storage选项调配途和设备。
放弃索引操作
管理代码测试配额池
- 配额可以在
ceph df中获取。 - 用户可能需特定位置的 RGW 服务 Pick 快照区域 to flush data。
计算 RBD 灾难恢复与复杂化情况
- 回滚。
总结
Ceph 是一个强大的分布式存储系统,适用于多种场景包括大文件存储、容量高、高性能、数据安全管理等。其通过 CRUSH、池校验、log replayer、snap、权限管理、-scale 来确保数据的安全性、可用性和扩展性。在运维管理过程中,掌握安装配置、服务管理、网络配置、访问控制和监控工具是关键。需要熟悉o