ceph集群架构阐述

ceph集群架构阐述

首先,ceph集群也是分为客户端和服务端的,是一种高效的分布式存储系统,我们将其拆分为这两个部分来进行分析。

我大致的将服务端分为API类型、逻辑层、OSD层三个层面进行分析;将客户端按三种API类型挂载、接入、管理方式进行说明;

ceph集群的服务端

API类型

  • ceph集群对外是支持多种API接口类型的
    • 有支持各种编程语言的librados,其中为了方便管理官方将其分为了rgw对象存储和rbd块设备存储
    • 还支持高可用的分布式文件系统cephFS

逻辑层

主要决定了数据的存储方式,真正的数据是存储在了对象存储设备OSD上

主要有以下几个概念:

  • 存储池(pool):可以有多个存储池,每个存储池都是相互独立的,用于数据的管理与存储。主要有副本池和纠删码池两种类型
  • 归置组(PG):存储池中可以有多个PG,PG是用来管理对象的工具
  • 对象(object):PG中包含多个对象,是集群中管理数据的最小单位,每个对象都是独立的个体,默认存储大小为4M

对象存储(OSD)层

逻辑层和OSD之间的关系

一个存储池内的PG(每个PG内容是不一样的,因此实现分布式存储),会通过CRUSH算法,决定一个PG到OSD的映射关系,确保相同的PG不会存储在同一个OSD上,从而实现每个PG都是高可用的。而这种映射关系,是通过ceph集群中mon组件来进行维护的。

  • 其中:
    • 映射关系是可以自定义规则写入指定的OSD的
    • 在ceph集群中,一个存储池的默认副本数量为3,所以每个PG会默认存3分在不同的OSD上,因此也建议最少使用3节点集群。

组件说明

ceph集群中一个存储池的PG数量是支持扩容和缩容的,其本质上就是磁盘间的、OSD间的数据迁移,因此肯定是要有专门的组件来维护PG数量的变动

  • **mgr:**每一个OSD都会有一个专门的进程来监控OSD中内所有PG的对象的状态变化,而mgr组件会收集这些信息,使mgr起到监控的作用。

  • **mon:**两个不同的OSD之间的通信,以及外部用户访问都是需要认证的,而mon组件就提供了这个认证功能;另外如上一大节所述,mon组件还用来维护了集群状态的映射。

当我们要使用cephFS文件系统时,就必须要安装mds这个组件

  • **mds:**主要负责管理文件系统的元数据

当我们要使用对象存储的时候,就必须要安装rgw这个组件

  • **rgw:**主要提供对象存储服务,并通过https或http协议与客户端进行交互。它提供了s3和swift兼容的端口,可以使ceph与各种云平台和应用集成。

ceph集群的客户端

RBD设备

挂载

  • 客户端需要安装ceph-common通用包环境,来管理从服务端拷贝过来的集群认证文件(秘钥环文件和配置文件);
  • 同时通用包提供了访问ceph集群的所需工具和库,并且支持了认证机制;
  • 挂载时要先进行映射,再对设备进行格式化,最后进行挂载。

调整容量大小

  • 服务端使用resize调整大小之后,客户端需要进行热更新
    • resize2fs用来更新2fs文件系统
    • xfs_growfs用来更新xfs文件系统

cephFS

  • 基于ceph内核模块挂载
    • 管理节点创建用户并导出秘钥环文件或key文件到客户端指定用户
    • 客户端可以基于key或者秘钥环文件进行挂载
  • 基于用户空间fuse方式挂载
    • 客户端需要下载ceph-fuse程序包,并从服务端拷贝认证文件
    • 创建挂载目录,使用ceph-fuse进行挂载

RGW对象存储

  • 通过s3进行管理
  • 通过swift进行管理
相关推荐
无尽星海max1 小时前
M芯片,能运行普通应用程序的原架构虚拟机
windows·架构
2301_783856001 小时前
反思微服务:模块化 Jar 包方案能否取而代之?
微服务·架构·jar
晓风残月淡2 小时前
Kubernetes详细教程(一):入门、架构及基本概念
容器·架构·kubernetes
郭涤生5 小时前
微服务系统记录
笔记·分布式·微服务·架构
Aska_Lv8 小时前
生产问题讨论---4C8G的机器,各项系统指标,什么范围算是正常
后端·面试·架构
萧鼎8 小时前
下一代AI App架构:前端生成,后端消失
前端·人工智能·架构
Kale又菜又爱玩8 小时前
深入探索Redisson:用法全解析及在微服务中的关键应用
redis·微服务·架构
小小工匠10 小时前
架构思维:熔断机制深度解析
架构·熔断机制
道友老李11 小时前
【微服务架构】SpringCloud Alibaba(九):分布式事务Seata使用和源码分析(多数据源、接入微服务应用、XA模式设计思路)
spring cloud·微服务·架构