一、概述Ceph是一个非常流行的开源分布式存储系统。具有高扩展性、高性能、高可靠性等优点。它还提供块存储服务(rbd)、对象存储服务(rgw)和文件系统存储服务(cephfs),Ceph在存储时充分利用了存储节点的计算能力。在存储每条数据时,它会计算数据的位置,并尽量均衡分布。也是目前OpenStack的主流后端存储。特点:高性能摒弃了传统的集中式存储元数据寻址方案,采用CRUSH算法,数据分布均衡,并行度高。考虑到容灾域的隔离性,可以实现跨机房、机架感知等各种负载的副本放置规则,可以支持数千个存储节点的规模,支持TB到PB级别的数据。高可用副本数量可灵活控制。支持故障域分离和数据强一致性。各种故障场景自动修复自愈。无单点故障,自动管理。高度可扩展的去中心化。灵活扩展。它随着节点的数量线性增长。丰富的特性支持三种存储接口:块存储、文件存储和对象存储。支持自定义界面和多语言驱动程序。GitHub地址:https://github.com/ceph/ceph官方文档:https://docs.ceph.com/en/latest/start/intro/2、Ceph架构支持三种接口:Object:有原生API,并且还与Swift和S3API兼容。块:支持自动精简配置、快照和克隆。文件:Posix接口,支持快照。RADOS——全称ReliableAutonomicDistributedObjectStore,是一种可靠的、自动化的分布式对象存储系统。RADOS是Ceph集群的本质,用户可以实现数据分发、故障转移等集群操作。Librados——Rados提供库,因为RADOS是一个很难直接访问的协议,所以上层的RBD、RGW、CephFS都是通过librados访问的,目前提供对PHP、Ruby、Java、Python、C、和C++。MDS-存储Ceph文件系统的元数据。3.Ceph核心组件介绍OSD——OSD是负责物理存储的进程。一般配置为与磁盘一一对应,一个磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据、与其他OSD进行心跳检查,并负责响应客户端请求返回特定数据的过程。OSD是Ceph集群中唯一存储实际用户数据的组件。通常,OSD守护进程绑定到集群中的物理磁盘。因此,一般来说,Ceph集群中的物理磁盘总数与每个物理磁盘上存储用户数据的OSD守护进程的总数相同。PG——ceph引入了PG(归置组)的概念。PG是一个虚拟的概念,不对应任何实体。Ceph先把对象映射到PG,再从PG映射到OSD。Pool——Pool是存储对象的逻辑分区。它规定了数据冗余的类型和相应的副本分布策略。它支持两种类型:复制代码和纠删码。Pool、PG、OSD的关系:一个Pool中有多个PG;一个PG包含一堆对象,一个对象只能属于一个PG;PG分为master和slave,一个PG分布在不同的OSD上(针对三副本类型);Monitor监控——一个Ceph集群需要一个由多个Monitors组成的小集群,通过Paxos同步数据,保存OSD元数据。负责监控整个Ceph集群的Map视图(如OSDMap、MonitorMap、PGMap、CRUSHMap),维护集群的健康状态,维护显示集群状态的各种图表,管理集群客户端身份验证和授权。MDS——MDS的全称是CephMetadataServer,是CephFS服务所依赖的元数据服务。负责保存文件系统的元数据和管理目录结构。对象存储和块设备存储不需要元数据服务;如果不使用CephFS,则无法安装。Mgr——ceph官方开发的ceph-mgr,主要目标是实现对ceph集群的管理,对外提供统一入口。例如cephmetrics、zabbix、calamari、prometheus。Ceph管理器守护进程(ceph-mgr)在Kraken版本中被引入并与监控守护进程一起运行,以提供额外的监控和与外部监控和管理系统的接口。RGW——RGW的全称是RADOS网关,是Ceph提供的一种对象存储服务。该接口与S3和Swift兼容。CephFS-ceph文件系统提供了一个posix兼容的文件系统,它使用Ceph存储集群将用户数据存储在文件系统上。与RBD(块存储)和RGW(对象存储)一样,CephFS服务作为librados的本地接口实现。四、Ceph的三种存储类型1)块存储服务(RBD)块是一个字节序列(通常为512)。基于块的存储接口是在硬盘驱动器、固态驱动器、CD、软盘甚至磁带等介质上存储数据的一种成熟且通用的方式。块设备接口无处不在,非常适合与包括Ceph在内的海量数据存储进行交互。Ceph块设备是精简配置的、可调整大小的,并且跨多个OSD以条带形式存储数据。优点:使用Raid和LVM来保护数据;多个廉价硬盘组合起来增加容量;逻辑磁盘与多个磁盘结合,提高读写效率;缺点:采用SAN架构组网时,光纤Switch,成本高;主机之间不能共享数据;使用场景:docker容器、虚拟机磁盘存储分配;日志存储;文件存储;摘要:一个Linux内核级块设备,允许用户像访问Ceph的任何其他Linux块设备一样操作。2)文件系统存储服务(CephFS)Ceph文件系统(CephFS)建立在Ceph分布式对象存储之上。CephFS在各种场景下提供最先进、多用途、高可用和高性能的文件存储,包括共享主目录、FTP和NFS共享存储等。Ceph有块存储,为什么还需要文件系统接口?主要是因为应用场景不同,Ceph的块设备读写性能都非常出色,但是不能同时挂载在多个地方。目前在OpenStack上主要用作虚拟磁盘,而Ceph的文件系统接口读写性能相对较高。设备界面较差,但共享性极佳。优点:成本低,任何机器都可以。轻松的文件共享。缺点:读写速度低。传输速度很慢。使用场景:日志存储。具有目录结构的文件存储。3)对象存储服务(RGW)Ceph对象网关构建在librados之上。它在应用程序和Ceph之间提供了一个RESTful网关。存储集群。Ceph对象存储支持两种接口:S3兼容:通过与AmazonS3RESTfulAPI的大多数子集兼容的接口提供对象存储功能。Swift兼容性:通过与OpenStackSwiftAPI的大部分子集兼容的接口提供对象存储功能。优点:具有块存储的高速读写。它具有文件存储共享等功能。使用场景:图片存储。视频存储。五、Ceph版本发布生命周期Ceph从Nautilus版本(14.2.0)开始,每年都会有一个新的稳定版本发布,预计每年3月发布,每个新版本都会有一个新的名称(例如,“Mimic”)和主版本号(例如,Mimic为13,因为“M”是字母表中的第13个字母)。版本号的格式为x.y.z,x代表发布周期(比如13代表Mimic,17代表Quincy),y代表发布版本的类型,即x.0.z-y等于0,表示开发版本x.1.z-y等于1,表示releasecandidateversion(fortestcluster)x.2.z-y等于2,表示stable/bugfixversion(forusers)使用cephadm部署Octopus版本之后的ceph集群,如果使用cephadm部署,在后面升级新版本时,可以完全自动化,可以通过ceph-Wcephadm查看升级进度。升级完成后,无法降级。升级时请不要跨版本升级。例如,如果您目前正在使用八达通升级到昆西,您必须先将八达通升级到太平洋,然后再升级到昆西,这是最安全的方法。稳定版的生命周期在第一个发布月之后,该版本的更新和维护将在大约2年内停止。具体版本发布时间如下表所示。6、Ceph集群部署Ceph部署工具:ceph-deploy:官方部署工具,ceph-deploy不再主动维护。它不支持RHEL8、CentOS8或更新的操作系统。ceph-ansible:RedHat的部署工具ceph-chef:使用chef自动部署Ceph工具puppet-ceph:puppet的ceph模块cephadm——cephadm只支持Octopus及更新版本(推荐)。1)集群部署规划IPhostname角色磁盘操作系统192.168.182.130local-168-182-130monitor,mgr,rgw,mds,osd2*20Gcentos7192.168.182.131local-168-182-131monitor,mgr,rgw,mds,osd2*20Gcentos7192.168.182.132local-168-182-132monitor,mgr,rgw,mds,osd2*20Gcentos7monitor:Ceph监控管理节点,承担Ceph集群的重要管理任务。通常,需要3个或5个节点。mgr:Ceph集群管理节点(manager),对外提供统一入口。rgw:CephObjectGateway,是一种使客户端能够使用标准对象存储API访问Ceph集群的服务。mds:Ceph元数据服务器,MetaDataServer,主要保存文件系统服务的元数据,只有在使用文件存储时才需要这个组件。osd:Ceph存储节点ObjectStorageDaemon,实际负责数据存储的节点。2)前期准备关闭filewalld服务systemctlstopfirewalld.servicesystemctldisablefirewalld.service2,关闭并禁用SELinuxsed-i's/^SELINUX=enforcing$/SELINUX=disabled/'/etc/selinux/configsetenforce03,配置hosts192.168.182。130local-168-182-130192.168.182.131local-168-182-131192.168.182.132local-168-182-1324,ssh免密码配置ssh-keygen#...一路回车sh-copy-idroot@local-168-182-130//会有密码输入ssh-copy-idroot@local-168-182-131ssh-copy-idroot@local-168-182-1324,配置时间同步yuminstall-ychronysystemctlenable--nowchronyd3)添加磁盘如果添加后看不到磁盘,可以执行以下命令:#重新扫描SCSI总线添加设备echo"---">/sys/class/scsi_host/host0/scanecho"---">/sys/class/scsi_host/host1/scanecho"---">/sys/class/scsi_host/host2/scan4)安装docker:(所有节点操作,包括添加)#centos7wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo#安装yum-config-manager配置工具yum-yinstallyum-utils#设置yum源yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装文件ker-ce版本yuminstall-ydocker-ce#启动docker服务并启动systemctlenable--nowdocker#查看版本号docker--version#查看版本具体信息dockerversion#Docker镜像源设置#修改文件/etc/docker/daemon.json,createwithoutthisfile#添加如下内容后,重启docker服务:cat>/etc/docker/daemon.json<
