文章目录
一、Ceph分布式存储
1.1、Ceph文件系统简述
1.2、Ceph的优点
二、Ceph架构和名称解释
2.1、Ceph架构
2.2、Ceph集群组件
三、Ceph的存储过程
四、Ceph搭建过程
4.1、环境准备
4.2、搭建集群前的配置
4.3、安装ceph集群
4.4、Ceph扩容操作
4.5、模拟故障osd恢复
一、Ceph分布式存储
1.1、Ceph文件系统简述
圣克鲁兹加利福尼亚大学的Sage Weil在2003年开发CEPH,CEPH是一个开源的项目,其可大规模扩展、高性能并且无单点故障的分布式存储系统。从一开始它就运行在通用的商用的硬件上,具有高度的可伸缩性,容量可扩展至EB级别,甚至更大。
ceph是一种开源存储软件。 底层实现了对象存储,并以此为基础对外提供对象存储接口、块存储接口、文件级存储接口。
1.2、Ceph的优点
1.CRUSH算法,CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。同时, CRUSH算法支持副本和EC两种数据冗余方式,还提供了四种不同类型的Bucket(Uniform, List, Tree, Straw),充分考虑了实际生产过程中硬件的迭代式部署方式,虽然实际生产中大多数情况下的都是只用了一种Straw。
2.统一存储架构
由于云计算的发展,RADOS出色而又简洁的接口,非常高效的支持分布式块存储RBD和分布式对象存储RADOS GateWay。由于RBD和RADOS GateWay的简单设计无需考虑,容灾备份、横向扩展、负载均衡等分布式架构的负载因素。所以受到社区的认可,并成为openstack的底层存储方式。
3.强大且丰富的功能
CEPH的功能,从分布式系统最基本的横向扩展、动态伸缩、冗余容灾、负载平衡等,到生产环境环境中非常实用的滚动升级、多存储池、延迟删除等几乎什么都能做。所以受到云计算等企业的青睐。但是也有CEPHfs虽然有快照、纠错码、跨存储池等功能,却因为一直收到忽视,无法用在生产环境中。
二、Ceph架构和名称解释
2.1、Ceph架构
RADOS:代表了CEPH集群中的硬件和软件的集合。
RGW、RBD、CEPH FS代表了三种客户端:RGW代表了对象存储的网关,即对象存储接口。RBD代表了块存储的接口。CEPH FS代表了文件系统存储的接口。用户只有通过这三种接口才能将数据存储在RADOS中。
2.2、Ceph集群组件
1.OSD:OSD对象存储进程,每块硬盘拥有一个osd进程,管理数据的副本、恢复和负载均衡等,并且向mon组件提供底层监控信息。
2.CEPH-mgr:用于收集ceph集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。mgr组件实现高可用至少需要2个作为主备。
3.MDS:在存储时存储数据的元信息,用于文件系统存储。对象存储和块存储不需要此组件。
4.MON:负责监控集群中自身和其他组件的健康信息。并且负责集群的验证,即用户需要在mon组件上进行身份验证。为了确保组件的高可用需要至少开启3个mon组件。
三、Ceph的存储过程
CEPH集群在存储数据时,都是进行扁平化处理,Object作为集群最小的存储单位。
ceph在对象存储的基础上提供了更加高级的思想。当对象数量达到了百万级以上,原生的对象存储在索引对象时消耗的性能非常大。ceph因此引入了placement group (pg) 的概念。一个PG就是一组对象的集合。
四、Ceph搭建过程
4.1、环境准备
1.准备三台centos7虚拟机。
2.每台虚拟机安装两块网卡,一块仅主机模式,一块nat模式。
3.准备两块硬盘,一块系统盘,另一块作为ceph使用大小1024G。
配置IP地址
主机名 VM1网段 NAT网段
ceph01 192.168.10.101 192.168.100.101
ceph02 192.168.10.102 192.168.100.102
ceph03 192.168.10.103 192.168.100.103
4.2、搭建集群前的配置
每个节点都要操作,步骤一样
1、每个节点的修改主机名,和hosts文件
hostnamectl set-hostname ceph01
hostnamectl set-hostname ceph02
hostnamectl set-hostname ceph03
vi /etc/hosts
192.168.10.101 ceph01
192.168.10.102 ceph02
192.168.10.103 ceph03
1
2
3
4
5
6
7
8
2、关闭UseDNS,用CRT连接可以快一点
vi /etc/ssh/sshd_config
115/UseDNS no
1
2
3、关闭防火墙和核心防护
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
SELINUX =disabled
1
2
3
4
5
4、三个节点创建免交互
ssh-keygen
ssh-copy-id root@ceph01
ssh-copy-id root@ceph02
ssh-copy-id root@ceph03
1
2
3
4
5、配置YUM源
cd /etc/yum.repos.d/
mkdir backup
mv C* backup
//安装wget命令,方便下载新的yum源。
yum install wget -y
//用wget命令下载新的yum源。
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
//配置ceph源
vi /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
//更新源
yum update -y
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
4.3、安装ceph集群
1.首先安装好相应的工具
//ceph01节点
yum install ceph-deploy ceph python-setuptools -y
//ceph02、ceph03节点
yum install ceph python-setuptools -y
//每个节点都创建目录
mkdir /etc/ceph
1
2
3
4
5
6
7
8
2、在ceph01创建mon服务,并初始化监控和秘钥
cd /etc/ceph
ceph-deploy new ceph01 ceph02
1
2
ceph-deploy mon create-initial
1
3、在ceph01创建osd服务
ceph-deploy osd create --data /dev/sdb ceph01
ceph-deploy osd create --data /dev/sdb ceph02
ceph -s ##查看状态有2个osd
1
2
3
4、下发admin秘钥到所有节点之中,并增加执行权限
//在ceph01下发
ceph-deploy admin ceph01 ceph02
//ceph01、ceph02、ceph03节点添加
chmod +x /etc/ceph/ceph.client.admin.keyring
1
2
3
4
5
4.4、Ceph扩容操作
1、首先将osd加入到集群之中
ceph-deploy osd create --data /dev/sdb ceph03
1
2、将扩容节点的mon服务加入到集群。
ceph-deploy mon add ceph03
//手动修改ceph01的配置文件
vi /etc/ceph/ceph.conf
1
2
3
4
下发配置给所有节点,进行覆盖原有配置
ceph-deploy --overwrite-conf config push ceph01 ceph02 ceph03
1
重启三个节点mon服务
systemctl restart ceph-mon.target
1
通过ceph -s 查看添加成功!
安装mgr服务之后,集群健康状态
ceph-deploy mgr create ceph01 ceph02 ceph03
1
4.5、模拟故障osd恢复
1、首先模拟故障,将一个osd从集群中移除
移除osd,删除osd,删除osd认证
ceph osd out osd.2
ceph osd crush remove osd.2
ceph auth del osd.2
#重启所有节点osd服务,osd.2就down掉了
systemctl restart ceph-osd.target
1
2
3
4
5
6
7
2、恢复osd到集群中
//在ceph03节点,查看ceph位置信息
df -hT
显示位置信息:
tmpfs tmpfs 910M 52K 910M 1% /var/lib/ceph/osd/ceph-2
//查看/var/lib/ceph/osd/ceph-2的fsid
[root@ceph03 ~]# cd /var/lib/ceph/osd/ceph-2
[root@ceph03 ceph-2]# more fsid
57df2d3e-2f53-4143-9c3f-5e98d0ae619b
//重新添加osd进入集群
[root@ceph03 ceph-2]# ceph osd create 57df2d3e-2f53-4143-9c3f-5e98d0ae619b
//重新添加认证权限
[root@ceph03 ceph-2]# ceph auth add osd.2 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-2/keyring
//设置ceph03的权重,ceph osd crush add osdID号 权重 host=主机名
[root@ceph03 ceph-2]# ceph osd crush add 2 0.99899 host=ceph03
//将osd加入集群
[root@ceph03 ceph-2]# ceph osd in osd.2
//重启所有节点的osd服务
systemctl restart ceph-osd.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
通过ceph osd tree查看,ceph03的osd节点已经恢复了
————————————————
版权声明:本文为CSDN博主「爱美的小菇凉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_28361541/article/details/105295133