ceph分布式存储

目录

  1. 画图解析ceph架构。并简述块读写流程,ceph认证机制。
  2. 搭建ceph集群,并完成块存储,文件存储,对象存储的使用。通过结合prometheus和grapha监控,展示 ceph集群

画图解析ceph架构。并简述块读写流程,ceph认证机制。

ceph架构:

脑图

Pool:存储池、分区,存储池的大小取决于底层的存储空间。
PG(placement group):一个pool内部可以有多个PG存在,pool和PG都是抽象的逻辑概念,一个pool中有多少个PG可以通过公式计算。
OSD(Object Storage Daemon):每一块磁盘叫做osd,多个osd组成一个主机存储池要先创建才能往ceph保存数据,文件在向ceph保存之前要先进行一致性hash计算,计算后会把文件保存在某个对应的pG的,某个文件一定属于某个pool的PG,在通过PG保存在oSD上。
数据对象在写到主OSD之后再同步对从oSD以实现数据的高可用。

块读写流程:

注:存储文件过程:
第一步:把文件对象映射给PG第二步:把文件对象映射被OSD,第三步:通过osD写入到硬盘监视器mon维护OSD和PG的集群状态,

块读写流程

ceph认证机制:

Ceph使用cephx协议对客户端进行身份认证cephx用于对ceph保存的数据进行认证访问和授权,用于对访问ceph的请求进行认证和授权检测,与mon通信的请求都要经过ceph认证通过,但是也可以在mon节点关闭cephx认证,但是关闭认证之后任何访问都将被允许,因此无法保证数据的安全性,
49.6:授权流程:
每个mon 节点都可以对客户端进行身份认证并分发秘钥,因此多个mon节点就不存在单点故障和认证性能瓶颈
mon 节点会返回用于身份认证的数据结构,其中包含获取ceph服务时用到的session key,session key通过客户端秘钥进行加密,秘钥是在客户端提前配置好的,
/etc/ceph/ceph.client.admin.keyring客户端使用session key向mon 请求所需要的服务,mon向客户端提供一个tiket,用于向实际处理数据的OSD等服务验证客户端身份,MON和oSD共享同一个secret,因此osD会信任有MON发放的tiket tiket存在有效期
注意:
cephx身份验证功能仅限制在Ceph的各组件之间,不能扩展到其他非ceph组件ceph只负责认证授权,不能解决数据传输的加密问题

ceph认证机制

搭建ceph集群,并完成块存储,文件存储,对象存储的使用。通过结合prometheus和grapha监控,展示 ceph集群

搭建ceph集群

在这里插入图片描述
网址:ceph-salt:https://github.com/ceph/ceph-salt#python

在这里插入图片描述
部署过程,参阅官网流程:http://docs.ceph.org.cn/install/manual-deployment/

服务器准备:使用centos

http://docs.ceph.org.cn/start/hardware-recommendations/#硬件推荐
1.三台服务器作为ceph集群OSD存储服务器,每台服务器支持两个网络,public网络针对客户端访问,cluster网络用于集群管理及数据同步,每台三块或以上的磁盘(类似于k8s的node节点)

10.0.0.132 /192.168.7.101
10.0.0.133/192.168.7.102
10.0.0.134/192.168.7.103
三台存储服务器磁盘划分:
/dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf #100G
/dev/sdg /dev/sdh /dev/sdi #200G
配置:
作为数据存储
    2个万兆网卡(必)
    64G或以上内存
    SSD硬盘 2T 4T
    CPU 2* 2640 v4


2.三台服务器作为ceph集群Mon监视服务器,每台服务器可以和ceph 集群的cluster网络通信。
10.0.0.135/192.168.7.104
10.0.0.136/192.168.7.105
10.0.0.137/192.168.7.106
配置:
8C 16G 虚拟机 磁盘200G以上

3.两个ceph-mgr 管理服务器,可以和ceph集群的cluster网络通信。
10.0.0.138/192.168.7.107
10.0.0.139/192.168.7.108
两台ceph-mgr
    8C 16G 虚拟机 磁盘200G

4.一个服务器用于部署ceph集群即安装Ceph-deploy,也可以和ceph-mgr等复用。
10.0.0.140/192.168.7.109
ceph-deploy节点
8C 16G 虚拟机 100G
10.0.0.141/192.168.7.110
celient节点
    8C 16G 虚拟机 100G

部署方案

在这里插入图片描述

关闭防火墙、selinux、开启时间同步、配置ssh免密连接、

1.关闭防火墙
[root@ceph-node1 ~]# systemctl stop firewalld
[root@ceph-node1 ~]# systemctl disable firewalld
systemctl status firewalld
2.关闭selinux
一键修改selinux属性:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

[root@10 ~]# cat /etc/sysconfig/selinux 
SELINUX=disabled

3.设定时钟同步:
yum install -y ntpdate
ntpdate 0.asia.pool.ntp.org
4.	配置ssh认证
deploy上:切换到root
[ceph@ceph-deploy ~]$ whoami
ssh-keygen -t rsa -P ''

在这里插入图片描述

秘钥复制给本地

[root@ceph-deploy ~]# ssh-copy-id -i .ssh/id_rsa.pub root@ceph-deploy
换个身份再来一次
[ceph@ceph-deploy ~]$  ssh-copy-id -i .ssh/id_rsa.pub ceph @ceph-deploy

这里填本机密码

同步给所有节点:

[ceph@ceph-deploy ~]$ scp -rp .ssh/ ceph@ceph-node2:/home/ceph/
[ceph@ceph-deploy ~]$ scp -rp .ssh/ ceph@ceph-node1:/home/ceph/
[ceph@ceph-deploy ~]$ scp -rp .ssh/ ceph@ceph-node3:/home/ceph/
scp -rp .ssh/ ceph@ceph-mon1:/home/ceph/
scp -rp .ssh/ ceph@ceph-mon2:/home/ceph/
mon3
mgr1
mgr2
本机:
[ceph@ceph-deploy ~]$ scp -rp .ssh/ ceph@ceph-deploy:/home/ceph/
scp -rp .ssh/ ceph@ceph-client-6:/home/ceph/

在这里插入图片描述
成功,测试免密连接:

[ceph@ceph-deploy ~]$ ssh ceph-node1 'date'

在这里插入图片描述

部署ceph

镜像网址:https://mirrors.tuna.tsinghua.edu.cn/ ceph/
在这里插入图片描述
在这里插入图片描述

部署RADOS集群:

https:/mirrors.aliyun.com/ceph/ #阿里云镜像仓库
在这里插入图片描述

每个服务器安装epel和ceph镜像源
[root@ceph-node1 ~]# yum install epel-release -y

[root@ceph-node1 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.0/el7/noarch/ceph-release-1-1.el7.noarch.rpm


wget https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.0/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate

注意:

在这里插入图片描述

[root@ceph-node1 ~]# rpm -ivh ceph-release-1-1.el7.noarch.rpm
[root@ceph-node1 ~]# cat /etc/yum.repos.d/ceph.repo
[root@ceph-node1 ~]# ping download.ceph.com
158.69.68.124


在这里插入图片描述

其他服务器装ceph源:

在这里插入图片描述

修改epel源指向:

在这里插入图片描述
依据官方文档

在deploy节点创建ceph用户:
[root@ceph-deploy ~]# groupadd ceph -g 2020 && useradd -u 2020 -g 2020 ceph && echo "123456" | passwd --stdin ceph
所有的节点创建账号,并执行特权命令:
[root@ceph-node1 ~]# vim /etc/sudoers
root    ALL=(ALL)       ALL
ceph    ALL=(ALL)       NOPASSWD: ALL

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

可以每个终端执行一次命令:

在这里插入图片描述

配置免秘钥登录:
在ceph-deploy节点配置允许以非交互的方式登录到各ceph node/mon/mgr节点,即在ceph-deployment节点生成秘钥对,然后分发公钥到各被管理节点:
切换到ceph账号
[root@ceph-deploy ~]# su - ceph
ssh-keygen
然后一路回车
把秘钥都拷贝过去:
[ceph@ceph-deploy ~]$ ssh-copy-id ceph@10.0.0.132
ssh-copy-id ceph@10.0.0.133
ssh-copy-id ceph@10.0.0.134
ssh-copy-id ceph@10.0.0.135
ssh-copy-id ceph@10.0.0.136
ssh-copy-id ceph@10.0.0.137
ssh-copy-id ceph@10.0.0.138
ssh-copy-id ceph@10.0.0.139
ssh-copy-id ceph@10.0.0.141
修改计算机名:
[root@ceph-mon1 ~]# hostnamectl set-hostname ceph-mgr1
[root@ceph-mon1 ~]# reboot


配置主机名解析:
vim /etc/hosts
10.0.0.132 ceph-node1.yk.local ceph-node1
10.0.0.133 ceph-node2.yk.local ceph-node2
10.0.0.134 ceph-node3.yk.local ceph-node3
10.0.0.135 ceph-mon1.yk.local ceph-mon1
10.0.0.136 ceph-mon2.yk.local ceph-mon2
10.0.0.137 ceph-mon3.yk.local ceph-mon3
10.0.0.138 ceph-mgr1.yk.local ceph-mgr1
10.0.0.139 ceph-mgr2.yk.local ceph-mgr2
10.0.0.140 ceph-deploy.yk.local ceph-deploy
10.0.0.141 ceph-client-6.yk.local ceph-client-6
写法一:
cat << EOF >> /etc/hosts
10.0.0.132 ceph-node1.yk.local ceph-node1
10.0.0.133 ceph-node2.yk.local ceph-node2
10.0.0.134 ceph-node3.yk.local ceph-node3
10.0.0.135 ceph-mon1.yk.local ceph-mon1
10.0.0.136 ceph-mon2.yk.local ceph-mon2
10.0.0.137 ceph-mon3.yk.local ceph-mon3
10.0.0.138 ceph-mgr1.yk.local ceph-mgr1
10.0.0.139 ceph-mgr2.yk.local ceph-mgr2
10.0.0.140 ceph-deploy.yk.local ceph-deploy
10.0.0.141 ceph-client-6.yk.local ceph-client-6
EOF
写法二:直接覆盖掉了,不行,有兴趣的同学可以自己再行研究下
cat >/etc/hosts <<EOF
10.0.0.132 ceph-node1.yk.local ceph-node1
10.0.0.133 ceph-node2.yk.local ceph-node2
10.0.0.134 ceph-node3.yk.local ceph-node3
10.0.0.135 ceph-mon1.yk.local ceph-mon1
10.0.0.136 ceph-mon2.yk.local ceph-mon2
10.0.0.137 ceph-mon3.yk.local ceph-mon3
10.0.0.138 ceph-mgr1.yk.local ceph-mgr1
10.0.0.139 ceph-mgr2.yk.local ceph-mgr2
10.0.0.140 ceph-deploy.yk.local ceph-deploy
10.0.0.141 ceph-client-6.yk.local ceph-client-6
EOF
验证
[root@ceph-client-6 ~]# cat /etc/hosts

OK

安装ceph部署工具
yum install ceph-deploy python-setuptools python2-subprocess3 -y

在这里插入图片描述

双网卡设置(略)

最终效果:
在这里插入图片描述
Ping测试:
全部OK

初始化mon节点:

1.更换源
[root@ceph-node1 ~]# sudo vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
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
 
[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
 
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc


2.在管理节点初始化mon节点
[ceph@ceph-deploy ~]$ mkdir ceph-cluster#保存当前集群的初始化配置信息
[ceph@ceph-deploy ~]$ cd ceph-cluster/
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy new --cluster-network 192.168.0.0/24 --public-network 10.0.0.0/24 ceph-mon1.yk.local

验证OK
初始化信息查看:

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy new --cluster-network 192.168.0.0/16 --public-network 10.0.0.0/16 ceph-mon1.yk.local
Ls
vim ceph.conf

这是初始化信息,这里的信息也可以后期编辑
在这里插入图片描述

[global]
fsid = 08d02bd9-bb16-4b4d-8b56-09866903ea97
public_network = 10.0.0.0/16
cluster_network = 192.168.0.0/16
mon_initial_members = ceph-mon1
mon_host = 10.0.0.135
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true

在这里插入图片描述

初始化node节点

[root@ceph-deploy ~]# su - ceph

在这里插入图片描述

也可以手动在每个节点自行安装ceph-release、ceph-radosgw两个程序:

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy install ceph-node3

在这里插入图片描述
在这里插入图片描述

Node3安装成功,也都是最新版本
单独装就都OK了

把配置文件和admin秘钥拷贝ceph集群各个节点

以免得每次执行ceph命令时不得不明确指定mon节点地址和ceph.client.admin.keyring:
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-node1 ceph-node2 ceph-node3 ceph-mon1 ceph-mon2 ceph-mon3

在这里插入图片描述
OK,验证:
出于安全性考虑,如果不存在交互式管理,则秘钥文件无需拷贝

终端配置ceph用户读写权限

[root@ceph-node2 ceph]# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring
每一个节点运行:(我是6个)

配置manager节点

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mgr create ceph-mgr1
OK,验证:守护进程
[root@ceph-mgr1 ~]# ps -ef | grep mgr

在这里插入图片描述
在这里插入图片描述

管理节点安装远程管理工具

复制会话用root
[root@ceph-deploy ~]# yum install ceph-common -y

在这里插入图片描述

证书同步
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy admin ceph-deploy

在这里插入图片描述

添加读写权限
[root@ceph-deploy ~]# cd /etc/ceph/
[root@ceph-deploy ceph]# ls
ceph.client.admin.keyring  ceph.conf  rbdmap  tmpN1JSkn
[root@ceph-deploy ceph]#
[root@ceph-deploy ceph]# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring
回到ceph用户:
[ceph@ceph-deploy ceph-cluster]$ ceph -s

在这里插入图片描述
成功,OSD0个,我们还没有加入OSD,所以还没有存储节点

向RADOS集群添加OSD

列出并擦净磁盘
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy disk list ceph-node1
磁盘数量以及对应的存储策略:

虚拟机,没有分配硬盘,示例操作
在这里插入图片描述

擦除
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy disk zap ceph-node1 /dev/sda1

虚拟机镜像未能分配太多磁盘,无法擦除,这里就不做演示了

创建OSD

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy osd create --data  /dev/sda1 ceph-node1

在这里插入图片描述
验证:

[ceph@ceph-deploy ceph-cluster]$ ceph osd stst

在这里插入图片描述

设置OSD服务自启

systemctl enable ceph-osd@0 ceph-osd@1 ceph-osd@2 ceph-osd@3 ceph-osd@4

移除OSD

1.停用设备:ceph osd out
2.停止进程:sudo systemctl stop ceph-osd@0
3.移除设备:ceph osd purge {id} –yes-i-really-mean-it
 

上传和下载数据,添加存储类

必须要知道pg数量

创建pool

[ceph@ceph-deploy ceph-cluster]$ rados mkpool mypool 32 32

在这里插入图片描述

列出存储池:
 ceph osd pool ls

在这里插入图片描述
上传文件:(api接口)

rados put issue /etc/issue –pool=mypool
寻找所有图片,示例:
[ceph@ceph-deploy ceph-cluster]$ find /usr/share -iname "*.jpg"

在这里插入图片描述

[ceph@ceph-deploy ceph-cluster]$ rados put day.jpg /usr/share/backgrounds/day.jpg -p mypool
列出存储池中的文件:
[ceph@ceph-deploy ceph-cluster]$ rados ls -p mypool

在这里插入图片描述

查询文件路径:
[ceph@ceph-deploy ceph-cluster]$ ceph osd map mypool day.jpg

在这里插入图片描述

下载数据对象
[ceph@ceph-deploy ceph-cluster]$ sudo rados get msg1--pool=mypool/opt/day.jpg
删除数据对象:
Rados rm issue –pool=mypool
[ceph@ceph-deploy ceph-cluster]$ rados rm day.jpg -p mypool

ceph应用基础

在这里插入图片描述

ceph radosgw(RGW)对象存储

部署radosgw服务,ceph-mgr1服务器部署为RGW主机:


[ceph@ceph-deploy ceph-cluster]$ yum install ceph-radosgw
You need to be root to perform this command.
复制会话
[root@ceph-deploy ceph]# cd /home/ceph/ceph-cluster
[root@ceph-deploy ceph-cluster]# yum install ceph-radosgw

在这里插入图片描述

回到ceph用户

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy --overwrite-conf rgw create ceph-mgr1

在这里插入图片描述

成功,mgr1节点验证

[root@ceph-mgr1 ~]# ps -aux | grep radosgw

在这里插入图片描述
如果觉得对您有用,请点个赞哦♪(^∀^●) ↓↓↓

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值