ceph分布式存储

Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。

机器规划

节点名称

外网IP

内网IP

磁盘容量

ceph-node-1-171

192.168.10.171

172.16.1.171

10G 挂载到opt下

ceph-node-2-172

192.168.10.172

172.16.1.172

10G

ceph-node-3-173

192.168.10.173

172.16.1.173

10G

 

 

 

 

 

 

 

 

 

系统环境

[root@ceph-node-1-170 ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
[root@ceph-node-1-170 ~]# uname -a
Linux ceph-node-1-170 3.10.0-1127.18.2.el7.x86_64 #1 SMP Sun Jul 26 15:27:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@ceph-node-1-170 ~]#

基础优化

1、时间同步,生产环境建议搭建时间服务器
echo "#time sync by fage at 2019-09-09" >>/var/spool/cron/root
echo "*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1" >>/var/spool/cron/root
systemctl restart crond.service 2、关闭防火墙和selinux systemctl stop firewalld && systemctl disable firewalld && setenforce 0 && sed -i s#SELINUX=enforcing#SELINUX=disable#g /etc/selinux/config 3、更改主机名 hostname node-1 echo "node-1" >/etc/hostname hostname node-2 echo "node-2" >/etc/hostname hostname node-3 echo "node-3" >/etc/hostname 4、更改hosts文件 cat >/etc/hosts <

安装ceph

1、配置Ceph源

cat << EOF > /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
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-nautilus/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-nautilus/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[x86_64]
name=x86_64
baseurl= https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0
EOF
#复制到其他机器上
scp -r /etc/yum.repos.d/* [email protected]:/etc/yum.repos.d/
scp -r /etc/yum.repos.d/* [email protected]:/etc/yum.repos.d/

刷新缓存

yum makecache

2、在管理节点上安装ceph-deploy控制器

yum install -y python-setuptools ceph-deploy

ceph分布式存储_第1张图片

3、初始化集群

创建工作目录

mkdir /opt/ceph-deploy  && cd /opt/ceph-deploy

创建新的集群  集群外部网络地址      集群内部网络地址  将node-1部署为moniter

ceph-deploy new --public-network 192.168.10.0/24 --cluster-network 172.16.1.0/24 node-1

ceph分布式存储_第2张图片

ceph分布式存储_第3张图片

4、安装依赖包 (所有节点都需要安装)

yum install -y ceph ceph-mon ceph-mgr ceph-radogw ceph-mds

初始化mon 

ceph-deploy mon create-initial

ceph分布式存储_第4张图片

[root@node-1 ceph-deploy]# ll
总用量 44
-rw------- 1 root root   113 9月  10 00:15 ceph.bootstrap-mds.keyring   秘钥文件
-rw------- 1 root root   113 9月  10 00:15 ceph.bootstrap-mgr.keyring
-rw------- 1 root root   113 9月  10 00:15 ceph.bootstrap-osd.keyring
-rw------- 1 root root   113 9月  10 00:15 ceph.bootstrap-rgw.keyring
-rw------- 1 root root   151 9月  10 00:15 ceph.client.admin.keyring
-rw-r--r-- 1 root root   263 9月   9 23:27 ceph.conf
-rw-r--r-- 1 root root 15543 9月  10 00:15 ceph-deploy-ceph.log
-rw------- 1 root root    73 9月   9 23:27 ceph.mon.keyring
[root@node-1 ceph-deploy]#

5、下发认证文件

cd /opt/ceph-deploy  &&  ceph-deploy admin node-1 node-2 node-3 && ceph -s

ceph分布式存储_第5张图片

ceph分布式存储_第6张图片

6、部署监控manager daemon 

将node-1节点作为管理节点

ceph-deploy mgr create node-1  &&  ceph -s

ceph分布式存储_第7张图片

ceph分布式存储_第8张图片

7、添加磁盘到集群

lsblk   查看磁盘

ceph-deploy osd create node-1 --data /dev/sdb1  && ceph -s

ceph分布式存储_第9张图片

ceph分布式存储_第10张图片

7.1、将其他节点的磁盘也加入到集群

需要在加入到节点查看磁盘名称

ceph-deploy osd create node-2 --data /dev/sdb1
ceph-deploy osd create node-3 --data /dev/sdb1
ceph -s   #查看集群所有的空间
ceph osd tree   # 查看osd当前状态

ceph分布式存储_第11张图片

 

部署moniter 高可用集群

部署moniter集群基本是奇数数量3、5、7个的数量,会自动仲裁选举管理节点

1、将其他节点加入到moniter集群

ceph-deploy mon add node-2 --address 192.168.10.172
ceph-deploy mon add node-3 --address 192.168.10.173

2、加入到节点后可以查看到节点在仲裁的数量

ceph quorum_status --format json-pretty

ceph分布式存储_第12张图片

查看monter状态

ceph -s   #查看节点数量
ceph mon stat    #查看状态
ceph mon dump     # 更详细的状态

ceph分布式存储_第13张图片

ceph分布式存储_第14张图片

3、部署高可用监控集群

直接将节点加入到集群

ceph-deploy mgr create node-2 node-3

ceph分布式存储_第15张图片

RBD块设备

公有云上可称为裸设备,可以进行格式化、分区等操作,但是不建议分区

可进行扩容和进行快照

可以随着使用的空间进行慢慢扩容,最大一个块设备可以支持到16EB,支持切片,可快照,可快速克隆,支持云解决方案,支持灾难恢复

ceph快存储的使用

pools资源池

创建资源池,包含有64个pgp 

ceph osd pool create ceph-demo 64 64      #创建资源池
ceph osd lspools                          #查看资源池
ceph osd pool get ceph-demo pg_num        #查看资源池中的pgp数量
ceph osd pool get ceph-demo size          #查看副本数,分片存放的集群数量

ceph分布式存储_第16张图片

查看更多类型字段可以使用帮助进行查看

ceph osd pool get -h|grep size

调度算法

ceph osd pool get ceph-demo crush_rule

可以根据自己的需求进行调整副本数量

ceph osd pool get ceph-demo size 2
ceph osd pool get ceph-demo size

可以根据自己的需求进行调整pg数量,注意也需要调整pgp

ceph osd pool set ceph-demo pg_num 128
ceph osd pool set ceph-demo pgp_num 128
ceph osd pool get ceph-demo pg_num
ceph osd pool get ceph-demo pgp_num
ceph -s

ceph分布式存储_第17张图片

RBD块存储创建

创建设备

rbd create -p ceph-demo --image rbd-demo.img --size 10G  #方法一
rbd create ceph-demo/rbd-demo-1.img --size 10G          #方法二
rbd -p ceph-demo ls

查看创建的块的详细信息

rbd info ceph-demo/rbd-demo.img

ceph分布式存储_第18张图片

删除已经创建的块设备

rbd rm -p ceph-demo --image rbd-demo-1.img
rbd -p ceph-demo ls

RBD块设备的使用挂载

挂载前需要将创建时候的默认特性去除掉,不然会报错

查看特性

rbd -p ceph-demo info rbd-demo.img

ceph分布式存储_第19张图片

去除特性

rbd feature disable ceph-demo/rbd-demo.img deep-flatten
rbd feature disable ceph-demo/rbd-demo.img fast-diff
rbd feature disable ceph-demo/rbd-demo.img object-map
rbd feature disable ceph-demo/rbd-demo.img exclusive-lock

查看去除特性的结果

rbd -p ceph-demo info rbd-demo.img

ceph分布式存储_第20张图片

挂载设备并查看设备挂载的名称

rbd map ceph-demo/rbd-demo.img

rbd device list

挂载完成后就可以进行分区格式化这些操作 

fdisk -l|grep /dev/rbd0
mkfs.ext4 /dev/rbd0
mkdir /mnt/rbd-demo
mount /dev/rbd0 /mnt/rbd-demo

ceph分布式存储_第21张图片

挂载完成后就可以正常的读写操作了 

RBD设备扩容

查看设备名称及容量大小后进行扩容

rbd -p ceph-demo ls                             #查看资源池中设备名称
rbd -p ceph-demo info --image rbd-demo-1.img    #资源池的块设备查看容量大小
rbd resize ceph-demo/rbd-demo-1.img --size 20G  #扩容为20G

设备扩容后需要在磁盘分区中也进行扩容才会在系统显示扩容后的容量

需要注意,resize2fs 只对ext2/3/4文件系统有效,对xfs文件系统无效

rbd resize ceph-demo/rbd-demo-1.img --size 20G

ceph分布式存储_第22张图片

RBD数据写入流程

ceph分布式存储_第23张图片

每个数据写入都会被切割成集群数量的分数进行存储,保证数据的高可用性

一个对象会切割成多个objects,每个都是4M大小

rados -p ceph-demo ls
rados -p ceph-demo ls|grep rbd_data.125
rados -p ceph-demo stat rbd_data.125ae45119d8.0000000000000500

ceph分布式存储_第24张图片

objects会落在不同的pg上

验证objects落在不同的pg上

for i in `ceph osd map ceph-demo rbd_data.125ae45119d8`;do ceph osd map ceph-demo ${i};done

ceph分布式存储_第25张图片

测试写入数据,实时监控写入增长情况

rados -p ceph-demo ls |grep rbd_data.134a3db15f91 | wc -l
cd /data/ && dd if=/dev/zero of=test.img bs=1M count=1024

由97增长到354个

watch -n 1 'rados -p ceph-demo ls | grep rbd_data.134a3db15f91 | wc -l'

代表会自动去生成容量文件,但是不能超出限定的块设备容量大小

ceph警告排查

ceph -s                     # 列出告警

ceph health detail     # 查看告警信息详细内容

 ceph分布式存储_第26张图片

ceph osd pool application enable ceph-demo rbd
ceph osd pool application get ceph-demo

ceph分布式存储_第27张图片

如果出现其他的告警

ceph crash ls
ID                                                       ENTITY         NEW
2020-09-10-17:00:17.247005Z_cbe7d9c6-6e8-4d43-8e75-3c55aebfbe27 mgr.node-1 *
2020-09-10-17:05:17.880659Z_7c57908d-192-8864-8e75-ef95f5gdbbvd mgr.node-1 *

查看某个时间的详情  

ceph crash info 2020-09-10-17:00:17.247005Z_cbe7d9c6-6e8-4d43-8e75-3c55aebfbe27

systemctl status ceph-mgr@node-1

删除误报的告警进行打包

ceph crash archive 2020-09-10-17:00:17.247005Z_cbe7d9c6-6e8-4d43-8e75-3c55aebfbe27
ceph crash archive 2020-09-10-17:05:17.880659Z_7c57908d-192-8864-8e75-ef95f5gdbbvd

ceph -s  && ceph health detail    #就看到会正常了

ceph分布式存储_第28张图片

 

你可能感兴趣的:(ceph分布式存储)