虚拟化容器,大数据,DBA,中间件,监控。

Ceph 初认与简介

21 12月
作者:admin|分类:应用管理

1、为什么要用Ceph


Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs)Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。目前也是OpenStack的主流后端存储,随着OpenStack在云计算领域的广泛使用,ceph也变得更加炙手可热。国内目前使用ceph搭建分布式存储系统较为成功的企业有x-sky,深圳元核云,上海UCloud等三家企业。

Ceph设计思想:集群可靠性、集群可扩展性、数据安全性、接口统一性、充分发挥存储设备自身的计算能力、去除中心化。

 

2、Ceph架构介绍


(https://yeepay-static-qa.s3.cn-north-1.amazonaws.com.cn/640.png)

 Ceph使用RADOS提供对象存储,通过librados封装库提供多种存储方式的文件和对象转换。外层通过RGW(Object,有原生的API,而且也兼容Swift和S3的API,适合单客户端使用)、RBD(Block,支持精简配置、快照、克隆,适合多客户端有目录结构)、CephFS(File,Posix接口,支持快照,社会和更新变动少的数据,没有目录结构不能直接打开)将数据写入存储。

- 高性能  

a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高  

b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等  

c. 能够支持上千个存储节点的规模,支持TB到PB级的数据  

- 高可扩展性  

a. 去中心化  

b. 扩展灵活  

c. 随着节点增加而线性增长  

- 特性丰富  

a. 支持三种存储接口:块存储、文件存储、对象存储  

b. 支持自定义接口,支持多种语言驱动  

 

 3、Ceph核心概念


RADOS

RADOS : 可靠的自主分布式对象存储(RADOS)是Ceph存储集群的基础。RADOS对象存储负责存储这些对象,而不管它们的数据类型如何。RADOS层确保数据始终保持一致。 为此,它执行数据复制、故障检测和恢复,以及跨集群节点的数据迁移和再平衡。

全称Reliable Autonomic Distributed Object Store,即可靠的、自动化的、分布式对象存储系统。RADOS是Ceph集群的精华,用户实现数据分配、Failover等集群操作。

Librados

Librados : librados库是一种访问RADOS的方便方法,支持PHPRubyJavaPythonC 和c++编程语言。它为 Ceph存储集群(RADOS)提供了本机接口,并为其他服务提供了基础,如RBD、RGWCephFS,这些服务构建 在librados之上。librados还支持从应用程序直接访问

RADOS ,没有 HTTP 开销 Rados提供库,因为RADOS是协议很难直接访问, 因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。

Crush

Crush算法是Ceph的两大创新之一,通过Crush算法的寻址操作,Ceph得以摒弃了传统的集中式存储元数据寻址方案。而Crush算法在一致性哈希基础上很好的考虑了容灾域的隔离,使得Ceph能够实现各类负载的副本放置规则,例如跨机房、机架感知等。同时,Crush算法有相当强大的扩展性,理论上可以支持数千个存储节点,这为Ceph在大规模云环境中的应用提供了先天的便利。

Pool

Pool是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略,支持两种类型:副本(replicated)和 纠删码( Erasure Code);

PG

PG( placement group)是一个放置策略组,它是对象的集合,该集合里的所有对象都具有相同的放置策略,简单点说就是相同PG内的对象都会放到相同的硬盘上,PG是 ceph的逻辑概念,服务端数据均衡和恢复的最小粒度就是PG,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据;

Object

简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写快,利于共享的出来呢。于是就有了对象存储。最底层的存储单元,包含元数据和原始数据。

 

4、Ceph核心组件


OSD

Ceph对象存储设备(OSD) : 一旦应用程序向Ceph集群发出写操作,数据就以对象的形式存储在OSD中。 这是Ceph集群中存储实际用户数据的惟一组件,通常,一个OSD守护进程绑定到集群中的一个物理磁盘。因此,通常来说,Ceph集群中物理磁盘的总数与在每个物理磁盘上存储用户数据的OSD守护进程的总数相同。

OSD是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端请求返回具体数据的进程等

ceph-deploy osd create --data /dev/sdb cephnode01
ceph-deploy osd create --data /dev/sdb cephnode02
ceph-deploy osd create --data /dev/sdb cephnode03


[root@cephnode01 ~]# ps -ef | grep osd
ceph         819       1  0 08:26 ?        00:00:28 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
[root@cephnode02 ~]# ps -ef | grep osd
ceph        1027       1  0 06:15 ?        00:01:12 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
[root@cephnode03 ~]# ps -ef | grep osd
ceph       16341       1  0 05:36 ?        00:01:22 /usr/bin/ceph-osd -f --cluster ceph --id 2 --setuser ceph --setgroup ceph

Pool、PG和OSD的关系:

  • 一个Pool里有很多PG
  • 一个PG里包含一堆对象,一个对象只能属于一个PG   
  • PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型) 

Monitor

Ceph monitors(MON) :Ceph监视器通过跟踪保存集群状态的映射来跟踪整个集群的健康状况 ,它们为每个组件维护单独的信息映射,其中包括OSD映射,MON映射,PG映射和CRUSH映射。所有群集节点都报告监视节点并共享有关其状态的每个更改的信息。监视器不存储实际数据,这是OSD的工作。

一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。负责坚实整个Ceph集群运行的Map视图(如OSD Map、Monitor Map、PG Map和CRUSH Map),维护集群的健康状态,维护展示集群状态的各种图表,管理集群客户端认证与授权(为客户端接入集群提供接口);

[root@cephnode01 my-cluster]# ps -ef | grep ceph | grep -v grep
root       11230       1  0 15:26 ?        00:00:00 /usr/bin/python2.7 /usr/bin/ceph-crash
ceph       11995       1  0 15:32 ?        00:00:06 /usr/bin/ceph-mon -f --cluster ceph --id cephnode01 --setuser ceph --setgroup ceph

[root@cephnode02 ~]# ps -ef | grep ceph | grep -v grep
root        2647       1  0 15:29 ?        00:00:00 /usr/bin/python2.7 /usr/bin/ceph-crash
ceph        3420       1  0 15:32 ?        00:00:04 /usr/bin/ceph-mon -f --cluster ceph --id cephnode02 --setuser ceph --setgroup ceph

 [root@cephnode03 ~]# ps -ef | grep ceph | grep -v grep
root       15497       1  0 15:28 ?        00:00:00 /usr/bin/python2.7 /usr/bin/ceph-crash
ceph       15657       1  0 15:32 ?        00:00:04 /usr/bin/ceph-mon -f --cluster ceph --id cephnode03 --setuser ceph --setgroup ceph

MDS

Ceph metadata server (MDS) : MDS跟踪文件层次结构,仅为Ceph FS文件系统存储元数据,Ceph块设备和RADOS网关不需要元数据, 因此,他们不需要Ceph MDS守护进程。MDS不直接向客户端提供数据,从而从系统中删除单点故障。

MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块设备存储不需要元数据服务

[root@cephnode01 my-cluster]# ps -ef | grep ceph | grep -v grep
ceph       12735       1  0 15:43 ?        00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephnode01 --setuser ceph --setgroup ceph

[root@cephnode02 ~]# ps -ef | grep ceph | grep -v grep
ceph        3750       1  0 15:43 ?        00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephnode02 --setuser ceph --setgroup ceph
  
[root@cephnode03 ~]# ps -ef | grep ceph | grep -v grep
ceph       15979       1  0 15:43 ?        00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephnode03 --setuser ceph --setgroup ceph

Mgr

ceph 官方开发了 ceph-mgr,主要目标实现 ceph 集群的管理,为外界提供统一的入口。例如cephmetrics、zabbix、calamari、promethus

RGW

RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。

 Admin

Ceph常用管理接口通常都是命令行工具,如rados、ceph、rbd等命令,另外Ceph还有可以有一个专用的管理节点,在此节点上面部署专用的管理工具来实现近乎集群的一些管理工作,如集群部署,集群组件管理等。

浏览571 评论0
返回
目录
返回
首页
Ceph RDB 块存储 在 Kubernetes 上安装 Gitlab CI Runner Gitlab CI 基本概念以及 Runner 的安装