Ceph 分布式存储

文章目录

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 配置选项具有唯一名称,由下划线连接的小写字符串表示。

配置来源
  1. 编译中默认值:最开始的配置项。
  2. 集中配置数据库(MON 管理):存储集群的统一配置信息。
  3. 本地配置文件(位于 /etc/ceph 目录):指定系统配置参数。
  4. 环境变量:方便一次配置多节点和多服务。
  5. 命令行参数: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 statusceph --status:列出集群状态。
  • ceph mon stat:检查 MON 状态和仲裁信息。
  • ceph quorum_status -f json-pretty:查看详细仲裁状态。

Ceph 池管理

Ceph 池和使用方法

Ceph 数据存储通过池实现,支持:

  • 无限大小的 pool。
  • 强一致性:确保数据的始终高可用。
  • 容量规划问题:容量决定了 pool 的 PG 数量和分布。
  • 功能(Jobs) :单个 pool 的功能由池应用程序定义,例如 rbdrgwcephfs

池创建与管理

创建一个 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 bootstrapceph 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 applyceph 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 的额外监控模块运行。
  • 安装流程:需要通过 cephadmceph 实现部署。

安装 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.cloudceph2.laogao.cloudceph3.laogao.cloud


协议与配置(CephX)

CephX 认证和授权

  • 需要 cephcephx 协议实现。
  • ceph auth getceph auth listceph auth add 命令用于管理用户、密钥与联盟安全性。

配置 CephX 的数据镜像

bash 复制代码
ceph auth add client.shibuya mon 'allow *' osd 'allow *' mds 'allow *'

密钥管理

  • 访问 Ceph 的关键密钥必须受到保护,如 ceph.client.admin.keyring

Ceph 对象网关(RGW)

RGW 部署

  • 要部署 RGW,必须定义 realmzonegroupzone
自动化的 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 rallow 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

相关推荐
武子康2 小时前
Java-211 Spring Boot 2.4.1 整合 RabbitMQ 实战:DirectExchange + @RabbitListener 全流程
java·spring boot·分布式·消息队列·rabbitmq·rocketmq·java-rabbitmq
Wang's Blog2 小时前
Kafka: 生产者(Producer)核心机制
分布式·kafka
与遨游于天地2 小时前
日志系统 Kafka 积压处理有效方案
经验分享·分布式·kafka
tap.AI12 小时前
(三)Stable Diffusion 3.5 与 ComfyUI
分布式·stable diffusion
云和数据.ChenGuang16 小时前
Logstash配置文件的**语法解析错误**
运维·数据库·分布式·rabbitmq·jenkins
秋饼17 小时前
【三大锁王争霸赛:Java锁、数据库锁、分布式锁谁是卷王?】
java·数据库·分布式
回家路上绕了弯18 小时前
深度解析分布式事务3PC:解决2PC痛点的进阶方案
分布式·后端
Boilermaker199219 小时前
[Redis] 分布式缓存与分布式锁
redis·分布式·缓存