Ceph分布式存储的搭建(增加mon节点、模拟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

2、关闭UseDNS,用CRT连接可以快一点

vi /etc/ssh/sshd_config
115/UseDNS no    

3、关闭防火墙和核心防护

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
SELINUX =disabled

4、三个节点创建免交互

ssh-keygen
ssh-copy-id root@ceph01
ssh-copy-id root@ceph02
ssh-copy-id root@ceph03

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

4.3、安装ceph集群

1.首先安装好相应的工具

//ceph01节点
yum install ceph-deploy ceph python-setuptools -y

//ceph02、ceph03节点
yum install ceph python-setuptools -y

//每个节点都创建目录
mkdir /etc/ceph

2、在ceph01创建mon服务,并初始化监控和秘钥

cd /etc/ceph
ceph-deploy new ceph01 ceph02 

在这里插入图片描述

ceph-deploy mon create-initial

3、在ceph01创建osd服务

ceph-deploy osd create --data /dev/sdb ceph01
ceph-deploy osd create --data /dev/sdb ceph02
ceph -s   ##查看状态有2个osd

在这里插入图片描述
4、下发admin秘钥到所有节点之中,并增加执行权限

//在ceph01下发
ceph-deploy admin ceph01 ceph02

//ceph01、ceph02、ceph03节点添加
chmod +x /etc/ceph/ceph.client.admin.keyring

4.4、Ceph扩容操作

1、首先将osd加入到集群之中

ceph-deploy osd create --data /dev/sdb ceph03

在这里插入图片描述
2、将扩容节点的mon服务加入到集群。

ceph-deploy mon add ceph03

//手动修改ceph01的配置文件
vi /etc/ceph/ceph.conf

在这里插入图片描述
下发配置给所有节点,进行覆盖原有配置

ceph-deploy --overwrite-conf config push ceph01 ceph02 ceph03

重启三个节点mon服务

systemctl restart ceph-mon.target

通过ceph -s 查看添加成功!
在这里插入图片描述
安装mgr服务之后,集群健康状态

ceph-deploy mgr create ceph01 ceph02 ceph03

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

在这里插入图片描述
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

通过ceph osd tree查看,ceph03的osd节点已经恢复了
在这里插入图片描述

原创文章 112 获赞 44 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_28361541/article/details/105295133