一、概述

Ceph是当时非常盛行的开源散布式存储体系,具有高扩展性、高性能、高牢靠性等优点,同时供给块存储服务(rbd)、方针存储服务(rgw)以及文件体系存储服务(cephfs),Ceph在存储的时分充分运用存储节点的核算能力,在存储每一个数据时都会经过核算得出该数据的位置,尽量的散布均衡。现在也是OpenStack的干流后端存储。

特点:

  • 高性能
    • 摒弃了传统的集中式存储元数据寻址的方案,选用CRUSH算法,数据散布均衡,并行度高。
    • 考虑了容灾域的阻隔,能够完成各类负载的副本放置规则,例如跨机房、机架感知等。
    • 能够支撑上千个存储节点的规划,支撑TB到PB级的数据。
  • 高可用性
    • 副本数能够灵活控制。
    • 支撑毛病域分隔,数据强一致性。
    • 多种毛病场景主动进行修正自愈。
    • 没有单点毛病,主动办理。
  • 高可扩展性
    • 去中心化。
    • 扩展灵活。
    • 跟着节点增加而线性增加。
  • 特性丰富
    • 支撑三种存储接口:块存储、文件存储、方针存储。
    • 支撑自定义接口,支撑多种语言驱动。

GitHub地址:github.com/ceph/ceph 官方文档:docs.ceph.com/en/latest/s…

二、Ceph 架构

支撑三种接口:

  • Object:有原生的API,而且也兼容Swift和S3的API。

  • Block:支撑精简装备、快照、克隆。

  • File:Posix接口,支撑快照。

分布式存储系统 Ceph 介绍与环境部署

  • RADOS——全称Reliable Autonomic Distributed Object Store,即牢靠的、主动化的、散布式方针存储体系。RADOS是Ceph集群的精华,用户完成数据分配、Failover等集群操作。
  • Librados——Rados供给库,由于RADOS是协议很难直接访问,因而上层的RBD、RGW和CephFS都是经过librados访问的,现在供给PHP、Ruby、Java、Python、C和C++支撑。
  • MDS——存储Ceph文件体系的元数据。

三、Ceph中心组件介绍

分布式存储系统 Ceph 介绍与环境部署

  • OSD——OSD是担任物理存储的进程,一般装备成和磁盘一一对应,一块磁盘发动一个OSD进程。首要功用是存储数据、复制数据、平衡数据、康复数据,以及与其它OSD间进行心跳检查,担任呼应客户端恳求回来详细数据的进程等。

OSD 是Ceph集群中存储实践用户数据的专一组件,一般,一个OSD看护进程绑定到集群中的一个物理磁盘。因而,一般来说,Ceph集群中物理磁盘的总数与在每个物理磁盘上存储用户数据的OSD看护进程的总数相同。

  • PG——ceph中引进了PG(placement group)的概念,PG是一个虚拟的概念罢了,并不对应什么实体。ceph先将object映射成PG,然后从PG映射成OSD。

分布式存储系统 Ceph 介绍与环境部署

  • Pool——Pool是存储方针的逻辑分区,它规则了数据冗余的类型和对应的副本散布策略,支撑两种类型:副本(replicated)和 纠删码( Erasure Code)。

Pool、PG和OSD的联系:

一个Pool里有许多PG;
一个PG里包括一堆方针,一个方针只能属于一个PG;
PG有主从之分,一个PG散布在不同的OSD上(针对三副本类型);
  • Monitor监控——一个Ceph集群需求多个Monitor组成的小集群,它们经过Paxos同步数据,用来保存OSD的元数据。担任监控整个Ceph集群运转的Map视图(如OSD Map、Monitor Map、PG Map和CRUSH Map),保护集群的健康状况,保护展示集群状况的各种图表,办理集群客户端认证与授权。
  • MDS——MDS全称Ceph Metadata Server,是CephFS服务依靠的元数据服务。担任保存文件体系的元数据,办理目录结构。方针存储和块设备存储不需求元数据服务; 假如不运用CephFS能够不装置。
  • Mgr——ceph 官方开发了 ceph-mgr,首要方针完成 ceph 集群的办理,为外界供给统一的进口。例如cephmetrics、zabbix、calamari、prometheus。

Ceph manager看护进程(Ceph -mgr)是在Kraken版别中引进的,它与monitor看护进程一起运转,为外部监督和办理体系供给额定的监督和接口。

  • RGW——RGW全称RADOS gateway,是Ceph对外供给的方针存储服务,接口与S3和Swift兼容。
  • CephFS——ceph文件体系供给了一个符合posix规范的文件体系,它运用Ceph存储集群在文件体系上存储用户数据。与RBD(块存储)和RGW(方针存储)一样,CephFS服务也作为librados的本机接口完成。

四、Ceph 三种存储类型

1)块存储服务(RBD)

块是一个字节序列(一般为 512)。 基于块的存储接口是一种成熟且常见的数据存储方法 介质包括硬盘、固态硬盘、CD、软盘,乃至磁带。 块设备接口的无处不在非常适合交互 具有包括 Ceph 在内的海量数据存储。Ceph 数据块设备可精简装备、可调整巨细,并按条带方法存储数据在多个 OSD。

分布式存储系统 Ceph 介绍与环境部署

优点:

  • 经过Raid与LVM等手段,对数据供给了保护;
  • 多块廉价的硬盘组合起来,提高容量;
  • 多块磁盘组合出来的逻辑盘,提升读写功率;

缺陷:

  • 选用SAN架构组网时,光纤交换机,造价成本高;
  • 主机之间无法同享数据;

运用场景:

  • docker容器、虚拟机磁盘存储分配;
  • 日志存储;
  • 文件存储;

总结: 一个Linux内核级的块设备,允许用户像任何其他Linux块设备一样访问Ceph。

2)文件体系存储服务(CephFS)

Ceph 文件体系(CephFS),是建立在 Ceph 散布式方针存储的顶部, CephFS供给了最先进的、多用途、高度可用且高性能的文件存储在各种场景运用,包括同享home目录、FTP和NFS 同享存储等等。

分布式存储系统 Ceph 介绍与环境部署
Ceph有了块存储,为什么还需求文件体系接口呢?

首要是由于运用场景的不同,Ceph的块设备具有优异的读写性能,但不能多处挂载同时读写,现在首要用在OpenStack上作为虚拟磁盘,而Ceph的文件体系接口读写性能较块设备接口差,但具有优异的 同享性。

优点:

  • 造价低,随便一台机器就能够了。
  • 便利文件同享。

缺陷:

  • 读写速率低。
  • 传输速率慢。

运用场景:

  • 日志存储。
  • 有目录结构的文件存储。

3)方针存储服务(RGW)

Ceph 方针网关 是构建在 librados.它在运用程序和 Ceph 之间供给了一个 RESTful 网关。 存储集群。 Ceph 方针存储 支撑两种接口:

  • S3 兼容: 经过接口供给方针存储功用 与 Amazon S3 RESTful API 的大部分子集兼容。
  • 快速兼容: 经过接口供给方针存储功用 与 OpenStack Swift API 的一大块子集兼容。

分布式存储系统 Ceph 介绍与环境部署

优点:

  • 具有块存储的读写高速。
  • 具有文件存储的同享等特性。

运用场景:

  • 图片存储。
  • 视频存储。

五、Ceph版别发行生命周期

Ceph从Nautilus版别(14.2.0)开端,每年都会有一个新的安稳版发行,预计是每年的3月份发布,每年的新版别都会起一个新的称号(例如,“Mimic”)和一个主版别号(例如,13 代表 Mimic,由于“M”是字母表的第 13 个字母)。

版别号的格式为x.y.z,x表明发布周期(例如,13 代表 Mimic,17代表Quincy),y表明发布版别类型,即

  • x.0.z – y等于0,表明开发版别
  • x.1.z – y等于1,表明发布候选版别(用于测试集群)
  • x.2.z – y等于2,表明安稳/错误修正版别(针对用户)

Octopus版别后运用cephadm来布置ceph集群,假如运用cephadm布置,在后期新的版别晋级时,能够做到完全主动化,并能够经过ceph -W cephadm检查晋级进度,晋级完成后,无法降级,晋级时请不要跨版别晋级,例如:当时运用Octopus晋级到Quincy,要先把Octopus晋级到Pacific,然后在晋级至Quincy,这是最稳妥的方法。

安稳版别的生命周期在第一个发布月份后,大约2年时刻将中止该版别的更新保护,详细版别发布时刻见下表。

分布式存储系统 Ceph 介绍与环境部署

六、Ceph 集群布置

Ceph的布置东西:

  • ceph-deploy:官方的布置东西,不再活跃保护ceph-deploy。它不支撑RHEL8,CentOS 8或更新的操作体系。
  • ceph-ansible:红帽的布置东西
  • ceph-chef:运用chef进行主动布置Ceph的东西
  • puppet-ceph:puppet的ceph模块
  • cephadm——cephadm 仅支援 Octopus 及更新版别(引荐)。

1)集群布置规划

IP hostname 人物 磁盘 操作体系
192.168.182.130 local-168-182-130 monitor,mgr,rgw,mds,osd 2*20G centos7
192.168.182.131 local-168-182-131 monitor,mgr,rgw,mds,osd 2*20G centos7
192.168.182.132 local-168-182-132 monitor,mgr,rgw,mds,osd 2*20G centos7
  • monitor:Ceph监督办理节点,承担Ceph集群重要的办理任务,一般需求3或5个节点。
  • mgr: Ceph 集群办理节点(manager),为外界供给统一的进口。
  • rgw: Ceph方针网关,是一种服务,使客户端能够运用规范方针存储API来访问Ceph集群。
  • mds:Ceph元数据服务器,MetaData Server,首要保存的文件体系服务的元数据,运用文件存储时才需求该组件。
  • osd:Ceph存储节点Object Storage Daemon,实践担任数据存储的节点。

2)前期准备

1、封闭filewalld服务

systemctl stop firewalld.service
systemctl disable firewalld.service

2、封闭并禁用SELinux

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0

3、装备hosts

192.168.182.130 local-168-182-130
192.168.182.131 local-168-182-131
192.168.182.132 local-168-182-132

4、ssh免密装备

ssh-keygen
# ...一路Enter
ssh-copy-id root@local-168-182-130  //会有一次暗码输入
ssh-copy-id root@local-168-182-131
ssh-copy-id root@local-168-182-132

4、装备时刻同步

yum install -y chrony
systemctl enable --now chronyd

3)增加磁盘

假如增加完磁盘,看不到,能够履行以下指令:

# 从头扫描SCSI总线增加设备
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

分布式存储系统 Ceph 介绍与环境部署

4)装置docker :(一切节点操作,包括新增)

# centos7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 装置yum-config-manager装备东西
yum -y install yum-utils
# 设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 装置docker-ce版别
yum install -y docker-ce
#发动docker服务并开机自启
systemctl enable --now docker
# 检查版别号
docker --version
# 检查版别详细信息
docker version
# Docker镜像源设置
# 修改文件 /etc/docker/daemon.json,没有这个文件就创立
# 增加以下内容后,重启docker服务:
cat >/etc/docker/daemon.json<<EOF
{
   "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
systemctl restart docker

5)装置cephadm

下载cephadm脚本: (只在主节点操作)

mkdir -p /opt/ceph/my-cluster ; cd /opt/ceph/my-cluster
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm  -o cephadm
chmod +x cephadm
# 或许:
#curl https://raw.githubusercontent.com/ceph/ceph/v15.2.1/src/cephadm/cephadm -o cephadm
#chmod +x cephadm 
#//**//下载犯错:装备/etc/hosts 文件--—> 199.232.28.133 raw.githubusercontent.com
# 装置python3:(一切节点履行)
yum install python3 -y
# 装备ceph存储库  :(或指定版别)
./cephadm add-repo --release octopus
#或
#./cephadm add-repo --version 15.2.1
# 开端装置ceph-common,ceph东西
./cephadm install ceph-common ceph
# 装置cephadm东西
./cephadm install
which cephadm
which ceph

6)初始化 ceph 集群

当时节点装置 mon、 mgr 人物,布置 prometheus、 grafana、 alertmanager、 node-exporter等服务。

#先装置一个节点,其它节点经过后边的指令增加到集群中即可
#您需求知道用于集群的第一个监督器看护程序的IP地址。
#假如有多个网络和接口,要保证选择任何可供访问Ceph群集的主机访问的网络和接口。
cephadm bootstrap --mon-ip 192.168.182.130
##### 指令特点:
#在本地主机上为新集群创立监督和办理器看护程序。
#为Ceph集群生成一个新的SSH密钥,并将其增加到root用户的/root/.ssh/authorized_keys文件中。
#将与新集群进行通信所需的最小装备文件编写为/etc/ceph/ceph.conf。
#将client.admin办理密钥的副本写入/etc/ceph/ceph.client.admin.keyring。
#将公用密钥的副本写入 /etc/ceph/ceph.pub。
# 检查布置的服务
docker ps 
#=======输出信息=======
Ceph Dashboard is now available at:
             URL: https://local-168-182-130:8443/
            User: admin
        Password: 0ard2l57ji
You can access the Ceph CLI with:
        sudo /usr/sbin/cephadm shell --fsid d1e9b986-89b8-11ed-bec2-000c29ca76a9 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
Please consider enabling telemetry to help improve Ceph:
        ceph telemetry on
For more information see:
        https://docs.ceph.com/docs/master/mgr/telemetry/

分布式存储系统 Ceph 介绍与环境部署

依据提示可知,有个web地址:https://ip:8443/,这儿的截图是布置完之后的截图。

分布式存储系统 Ceph 介绍与环境部署

经过ceph指令检查集群状况

ceph -s

分布式存储系统 Ceph 介绍与环境部署

7)增加新节点

在新主机的根用户authorized_keys文件中装置群集的公共SSH密钥 :

ssh-copy-id -f -i /etc/ceph/ceph.pub root@local-168-182-131
ssh-copy-id -f -i /etc/ceph/ceph.pub root@local-168-182-132

分布式存储系统 Ceph 介绍与环境部署
装备新节点

ceph orch host add local-168-182-131
ceph orch host add local-168-182-132
#第一次布置新节点时直接用上边的指令即可:
#可是之后的节点新增有或许上述指令犯错:
ceph orch host add local-168-182-131 192.168.182.133  #后边跟上对应的IP
# 检查节点
ceph orch host ls

分布式存储系统 Ceph 介绍与环境部署

8)布置监督器(monitor)

# ceph orch apply mon *<number-of-monitors>*
# 保证在此列表中包括第一台(引导)主机。
ceph orch apply mon local-168-182-130,local-168-182-131,local-168-182-132

9)布置 osd

存储设备清单能够显示为:

ceph orch device ls

分布式存储系统 Ceph 介绍与环境部署

可用存储设备的条件:

  • 设备有必要没有分区。
  • 设备不得具有任何LVM状况。
  • 不得装置设备。
  • 该设备不得包括文件体系。
  • 该设备不得包括Ceph BlueStore OSD。
  • 设备有必要大于5 GB。

创立osd的方法:

# 【第一种方法】告知Ceph运用任何可用和未运用的存储设备:
ceph orch apply osd --all-available-devices
# 【第二种方法】或许运用下面指令指定运用的磁盘(引荐运用这种方法吧)
#1. ceph orch daemon add osd *<host>*:*<device-path>*
#例如:
#从特定主机上的特定设备创立OSD:
ceph orch daemon add osd local-168-182-130:/dev/sdb
ceph orch daemon add osd local-168-182-130:/dev/sdc
ceph orch daemon add osd local-168-182-131:/dev/sdb
ceph orch daemon add osd local-168-182-131:/dev/sdc
ceph orch daemon add osd local-168-182-132:/dev/sdb
ceph orch daemon add osd local-168-182-132:/dev/sdc

删去OSD节点:(安全)

#1.中止osd进程
ceph osd stop x  //(x 能够经过ceph osd ls 检查)
#中止osd的进程,这个是告诉集群这个osd进程不在了,不供给服务了,由于自身没权重,就不会影响到全体的散布,也就没有迁移
#2.将节点状况标记为out
ceph osd out osd.x
#中止到osd的进程,这个是告诉集群这个osd不再映射数据了,不供给服务了,由于自身没权重,就不会影响到全体的散布,也就没有迁移
#3. 从crush中移除节点
ceph osd crush remove osd.x
这个是从crush中删去,
#4. 删去节点
ceph osd rm osd.x
这个是从集群里边删去这个节点的记录ls
#5. 删去节点认证(不删去编号会占住)
ceph auth del osd.x
这个是从认证当中去删去这个节点的信息

10)布置mds(cephFS元数据看护程序)

# ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
ceph orch apply mds myfs --placement="3 local-168-182-130 local-168-182-131 local-168-182-132"

11)布置RGW

# 为特定范畴和区域布置一组radosgw看护程序:
# ceph orch apply rgw *<realm-name>* *<zone-name>* --placement="*<num-daemons>* [*<host1>* ...]"
ceph orch apply rgw myorg us-east-1 --placement="3 local-168-182-130 local-168-182-131 local-168-182-132"
###说明:
#myorg : 范畴名  (realm-name)
#us-east-1: 区域名 (zone-name)myrgw
#Cephadm将等待运转正常的群集,并在布置rgw看护程序之前主动创立所供给的范畴和区域(realm-name和zone-name不存在的状况)

检查集群状况

ceph -s

分布式存储系统 Ceph 介绍与环境部署

12)增加专用的ceph-mgr节点

# ceph-mgr节点默认会选择一主一备
# 增加新节点
ceph orch host add local-168-182-131 192.168.182.133
# 布置ceph-mgr
ceph orch apply mgr local-168-182-130,local-168-182-131,local-168-182-132
# ceph orch apply mgr local-168-182-130,local-168-182-131,local-168-182-132,local-168-182-133

分布式存储系统 Ceph 介绍与环境部署

散布式存储体系 Ceph 介绍与环境布置就先到这了,怎样运用,会放到下篇文章详细介绍,小伙伴有任何疑问欢迎给我留言,后续会持续更新【云原生+大数据】相关的文章,也能够重视我的公众号【大数据与云原生技能共享】

分布式存储系统 Ceph 介绍与环境部署