1.1分布式集群介绍

ceph是分布式存储系统

分布式是相对集中式而言。

集中式存储在计算机发展史上持续了很长时间,在数据急剧膨胀的时代背景下,集中式存储显然已经无法满足日益增长的存储需求

分布式存储的最大优点是规模,通过节点之间的分布式协议和算法,大量的节点组成集群,共同协作完成一项存储任务,同时利用特定的策略保证数据的可靠性和完整性,这种集群模式可以针对需求进行规模的增加和缩减,在实际生产应用中具有重要意义。

存储方式优点缺点
集中式存储久经考验,成熟稳定,运维难度较低,管理方便单点故障,扩展性差,性能瓶颈明显
与现有业务匹配度高
低延迟,低成本
分布式存储高可用,高可靠,易于跨地域灾备设计系统复杂,学习成本高,有木桶效应
规模大,扩展性强,调度灵活
应用类型丰富,可支持云原生

分布式存储的出现使得传统的计算机体系结构发生了变化,传统意义上存储通常指的是一系列的存储介质,比如磁盘、磁盘阵列、网络磁盘等,其担任的角色往往只是系统的附属组成部份,分布式存储除了提供存储功能,还将存储本身抽象为服务,提供如对象存储、文件存储、块存储的访问接口,使得存储服务真正成为一个重要的基础设施。

Ceph的主要组件及总体架构

ceph作为分布式存储系统,由以下几个重要的组件组成:
在这里插入图片描述

Monitors: 
monitor是集群部署的时候,所部署的第一个服务,我们初始化集群,实际上就是初始化monitor,以及集群的其他key,作为集群的管理者,负责维护集群的所有运行图map,包括monitor map,osd map,crush map,mds map,pg map,mgr map,这些map对集群的正常运行起着至关重要的作用。

法定人数:多个monitor之间将通过选举的方式产生一个主monitor,通常是ip地址最小的那个monitor会成为主,其余的monitor作为备,当主monitor失效后,剩余的备重新选举产生新主,继续维持集群工作。monitor之间的选举通过特定算法进行,为了保证选举能够确实地产生一个主,集群monitor的数量一般是奇数,在生产实践中,OSD规模在3000个OSD以内的集群,monitor的数量一般是3个或者5个。

Managers: 
即Ceph Manager daemon (ceph-mgr),负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph mgr服务还托管基于Python的模块,用于管理和导出Ceph集群信息,提供基于Web的Ceph仪表板和REST API。通常每一个monitor服务,我们都会对象的去部署一个MGR服务,从图中我们也可以看到,monitor跟MGR非常的类似。
mgr最早设计出来是为了分担monitor的部份任务,随着集群复杂度的增加,mgr独立承担的事情越来越多,mgr服务最常用的就是数据导出和pg管理,数据导出是指mgr负责将集群的相关指标以特定形式提供给外部的监控系统采集数据,以达到监控集群的目的;pg管理指的是集群pg状态、存储池状态、pg分布调整等内容。

Ceph OSDs: 
即Object Storage Daemon (Ceph OSD, ceph-osd),是集群实际存储数据的组件
集群的存储能力通常指OSD的总容量,一个OSD服务对应的往往是一个物理硬盘,可以是一块大容量(如16TiB)的机械磁盘,也可以是一块高速的SSD硬盘,若干OSD会被编成组,并基于组创建存储池进行管理。

Ceph MDSs: 
即Ceph Metadata Server (MDS, ceph-mds),当集群使用分布式文件存储系统cephfs时,需要创建mds,它负责文件系统的元数据管理,cephfs提供了类似NFS的POSIX文件系统接口。

在一个ceph集群中,至少需要部署一个monitor,一个mgr,3个以上的osd

在这里插入图片描述

ceph的架构图上图所示

不管数据是通过哪个协议进入集群,最终都会落到rados中,而rados层操作的就是存储池pool,在该形式上,看到的实际上就是对象存在于pool中,而pool借助PG这个逻辑结构对数据和磁盘进行映射,产生确定的映射规则,实现数据的落盘
在这里插入图片描述

ceph实际存放数据,使用的方式是元数据与数据的分离,这样做的好处是可以针对不同的需求进行硬件层面的定制,比方说,针对数据部分,通常使用hdd磁盘来存放,因为hdd磁盘虽然性能差一些,但是单位容量成本比ssd低很多,而元数据部分因为其数量大,单个元数据体积小,对存储介质的IOPS有很高的要求,因此更适合存放在高速的ssd磁盘中

在这里插入图片描述

Ceph集群的map

ceph对集群的状态感知和管理,很大程度是使用多种集群map来实现的,具体来说

1.The Monitor Map: 
monitor之间使用monitor map来保存各个实例的关键数据,通常情况下我们不需要改动它
当我们给集群增加、删除monitor时,集群会自动修改monitor map,使得新加入或者删除的monitor可以继续正常工作
另外,当我们修改集群ip的时候,需要手工修改monitor map的相关内容,使得monitor之间可以使用新的ip地址
ceph mon dump可以查看当前集群的monitor map

2.The OSD Map: 
osd map包含的信息非常丰富,它是集群很多重要功能的载体,monitor感知到集群发生变化后,如某个osd服务down了,则会修改osdmap并分发给集群的其他组件,从而使集群其他成员感知到集群的变化。
有一点值得注意,只有monitor能够修改osdmap,其他组件无条件信任osdmap的内容,组件的很多行为都依赖osdmap进行,这也就意味着,当osdmap异常时(如其内容出错),集群会受到影响,尽管概率很低,但生产实践上确实有可能遇到。
ceph osd dump可以查看当前集群的osd map

3.The PG Map: 
PGmap详细记录了集群所有pg的信息,包括pg的状态、映射规则,时间戳等等。
pgmap对pg状态机的转变影响很大,通常情况下我们使用pgmap来查询pg的相关信息,无法也务必要对其进行修改
ceph pg dump可以查看当前集群的pg map

4.The CRUSH Map: 
crushmap详细定义了存储设备列表、故障域层级(例如设备、主机、机架、行、机房)以及存储数据时遍历层级的规则,这些规则对集群的资源架构和存储池的分布、运行有非常关键的作用。
ceph osd getcrushmap -o crushmap
crushtool -d crushmap -o txtcrushmap
可以查看当前集群的crushmap

5.The MDS Map: 
mds map记录了文件存储系统的详细信息以及mds的ip/port相关信息
ceph fs dump可以查看当前集群的mds map

集群map在实际写入流程中的作用例子:

在这里插入图片描述

ceph版本

ceph开源后,从A版本0.48开始,经过十几年的发展,目前最新的版本已经迭代到了R版本的18.2.0,发展非常迅猛,其中12.2 Luminous开始,整个ceph的改变非常大,最重要的是默认引擎从原来的filestore改为了bluestore,全新架构,性能大幅提高,而且EC也开始推荐应用,可以说焕然一新

版本号代号类别
0.48ArgonautLTS
0.56BobtailLTS
0.61CuttlefishStable
0.67DumplingLTS
0.72EmperorStable
0.80FireflyLTS
0.87GiantStable
0.94HammerLTS
9.2InfernalisStable
10.2JewelLTS
11.2KrakenStable
12.2LuminousLTS
13.2MimicStable
14.2NautilusLTS
15.2OctopusStable
16.2PacificLTS
17.2QuincyStable
18.2ReefLTS

松鼠哥建议,应谨慎使用高版本及容器化部署

1.组件耦合导致的排查链过长

容器引入的组件使得集群复杂度有所增加,在规模化管理的集群中,我们建议尽可能地对组件解耦,然而将ceph的组件放入容器中运行,必然会加大集群的运维难度,设想一个场景,当某个osd进入down状态时,我们首先要排查一遍容器的网络问题、防火墙问题、其他硬件问题等,确保不是osd自身问题,才开始对该osd进一步排查,这显著上延长了排查链,对运维人员的经验和技术栈要求更高,因而,容器化部署虽然方便(实际上也未必方便),但并不是当前生产环境的推荐方案,尤其是数百个节点成千上万个磁盘组成的大规模集群,使用容器化的运维管理难度可想而知。

2.过高的版本如果出问题,获得支持比较困难

如果使用17甚至18版本的ceph,由于结构变化大且版本新,未经过生产大规模的部署应用,一旦发现问题,业内同行未用过该版本,没有相关解决方案,那么解决问题只能看代码,或者求助社区,解决难度就比较大了。

基于上述原因,我们在版本的选择上建议:

  • 1、学习、使用12.x、14.x的最新版本,这些都是大稳定版本,12.x版本虽老一点,但是稳定性较好,14.x版本较新,组件功能也多很多
  • 2、11.x及之前的版本因为功能、性能上的原因,已经不建议进行学习、使用,属于被淘汰的一类
  • 3、而最新的17.x和18.x及后续版本,运行运维都有较大难度,目前不太适合生产使用
  • 4、熟练使用12、14、版本的ceph,后续管理、运维更高版本的集群可以快速上手

在团队有相当研发能力且有需求的情况下,使用较高版本代码进行二次开发不失为一个好的选择,具体使用哪些版本进行开发改进,视场景业务需求而定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的松鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值