欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)

程序员文章站 2022-05-09 21:24:29
...

一、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架构

Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)

  • 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分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)
ceph在对象存储的基础上提供了更加高级的思想。当对象数量达到了百万级以上,原生的对象存储在索引对象时消耗的性能非常大。ceph因此引入了placement group (pg) 的概念。一个PG就是一组对象的集合。
Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)

四、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-******
ssh-copy-id aaa@qq.com
ssh-copy-id aaa@qq.com
ssh-copy-id aaa@qq.com

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分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)

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

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

Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)
2、将扩容节点的mon服务加入到集群。

ceph-deploy mon add ceph03

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

Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)
下发配置给所有节点,进行覆盖原有配置

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

重启三个节点mon服务

systemctl restart ceph-mon.target

通过ceph -s 查看添加成功!
Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)
安装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

Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)
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
[aaa@qq.com ~]# cd /var/lib/ceph/osd/ceph-2
[aaa@qq.com ceph-2]# more fsid
57df2d3e-2f53-4143-9c3f-5e98d0ae619b

//重新添加osd进入集群
[aaa@qq.com ceph-2]# ceph osd create 57df2d3e-2f53-4143-9c3f-5e98d0ae619b

//重新添加认证权限
[aaa@qq.com 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=主机名
[aaa@qq.com ceph-2]# ceph osd crush add 2 0.99899 host=ceph03

//将osd加入集群
[aaa@qq.com ceph-2]# ceph osd in osd.2

//重启所有节点的osd服务
systemctl restart ceph-osd.target

通过ceph osd tree查看,ceph03的osd节点已经恢复了
Ceph分布式存储的搭建(增加mon节点、模拟osd节点故障恢复)

相关标签: 文件系统