CEPH的搭建与注意事项

一、ceph实验前提准备

1.1、Ceph组件

1.OSDs 存储设备
2.Monitors 集群监控软件
3.RadosGateway(RGW) 对象存储网关
4.MDSs 存放文件系统的元数据(对象存储和 块存储不需要该组件)
5.Client ceph客户端

产品特色
每个组件皆可扩展:集群管理节点可以扩展,集群存储节点可以扩展
可以到达EB及存储
基于软件实现,可以使用现有设备
默认三副本,自动复制,平衡数据
在这里插入图片描述
其中MDSs是不怎么消耗资源的

共享存储的常见类型:
1)块存储(iSCSI、ceph) 客户端多了一个磁盘(同一时间只能供一个客户 端使用)
2)文件系统(NFS、ceph) 客户端直接 mount
3)对象存储(ceph)

1.2、搭建ceph的前提条件

1.配置 YUM 源(ceph 光盘)
2.SSH 密钥(免密码登陆)
3.修改 hosts 解析
4.NTP 时间同步
5.node1、node2、node3 每台虚拟机添加 2 块磁盘(20G)

二、ceph实验搭建

2.1、部署 Ceph 集群

[root@node1 ~]# yum -y install ceph-deploy        #一定要在有 ssh 密钥的主机上安装 
[root@node1 ~]# mkdir  ceph-cluster    #但凡执行 ceph-deploy 脚本,必须在该目录下,否则会出错 
[root@node1 ~]# cd ceph-cluster/ 
[root@node1 ceph-cluster]# for i in node1 node2 node3  
do     
ssh  $i  "yum -y install  ceph-mon  ceph-osd  ceph-mds  ceph-radosgw"  
done 
关闭所有节点的防火墙和 SELinux 

2.2、部署 MON 集群

[root@node1 ceph-cluster]# ceph-deploy  new  node1  node2  node3 #测试所有 node 节点状态,创建了 ceph 的配置文件 ceph.conf(在当前目录下)
[root@node1 ceph-cluster]# ls ceph.conf [root@node1 ceph-cluster]# ls  /etc/ceph/ #/etc/ceph 是启动 ceph 需要读取配置文件的地方 
[root@node1 ceph-cluster]# ceph-deploy  mon  create-initial #把当前目录下的 ceph 配置文件远程拷贝到目标主机(node1,node2,node3)放到/etc/ceph 目录,并且启动 ceph-mon 服务(服务名称为 ceph-mon@主机名) 
[root@node1 ceph-cluster]# systemctl status ceph-mon@node1.service 确认服务是否启动(建议用tab键) 
[root@node1 ceph-cluster]# ceph -s 

注意mon有过半原则,需要最少3个做mon才有备份的作用

2.3、 部署 OSD 集群

每台虚拟机都添加了 2 块磁盘(/dev/sdb、/dev/sdc)
sdb 用来做缓存盘,sdc 做数据盘
1)把所有的磁盘初始化(仅在 node1 操作)

[root@node1 ~]# cd ceph-cluster/    #必须的操作 
[root@node1 ceph-cluster]# ceph-deploy  disk  zap   node1:sdb  node1:sdc node2:sdb  node2:sdc node3:sdb  node3:sdc  #可以分开写

注意:如果只有一块盘,就直接zap整块盘,启动osd时不要指定缓存盘,只提供数据盘,不能对分区做zap;当zap整块盘时,它会自动把盘分区,一部分做缓存,一部分做数据盘,但因为实际是一个磁盘,对性能不会有帮助。
另外OSD有3副本的原则,需要最少3个OSD时运行的,整个cpeh才是好的

2)启动 OSD 服务共享这些磁盘

[root@node1 ceph-cluster]# ceph-deploy  osd  create  node1:sdc:/dev/sdb node2:sdc:/dev/sdb  node3:sdc:/dev/sdb  #可以分开来写
[root@node1 ceph-cluster]# systemctl status ceph-osd@0.service  #确认服务是否启动(建议用tab键) 
[root@node1 ceph-cluster]# ceph  osd  tree  

远程 node1 启动 osd 服务把/dev/sdc 共享给用户,/dev/sdb 作为缓存盘(允许一次性启动多 台主机的服务)并且把 sdc 挂载到了/var/lib/ceph/xxx 目录 ,可以用df来查看

2.4、不同类型共享存储

2.4.1、块共享实验

服务端

[root@node1 ~]# ceph osd lspools   #查看共享池 
[root@node1 ~]# rbd create jacob --image-feature layering --size 5G #创建共享镜像,名称为 jacob,开启功能:支持 cow,共享大小为 5G 
[root@node1 ~]# rbd list     #列出所有共享镜像 jacob 
[root@node1 ~]# rbd   info  jacob   #查看某个镜像的详细信息 
[root@node1 ~]# rbd resize --size 10G jacob  #扩容容量 [root@node1 ~]# rbd resize --size 5G jacob --allow-shrink  #缩减容量 

客户端访问共享

[root@client ~]# yum -y install ceph-common [root@client ~]# scp  node1:/etc/ceph/ceph.conf  /etc/ceph/ #拷贝配置文件,配置文件中记录的有 ceph 集群服务器的 IP 信息 
[root@client ~]# scp  node1:/etc/ceph/ceph.client.admin.keyring  /etc/ceph/ #拷贝访问 ceph 集群的密钥文件,有了密钥才有权限访问集群 
[root@client ~]# lsblk 
[root@client ~]# rbd map jacob 
/dev/rbd0 
[root@client ~]# rbd map test 
/dev/rbd1 
[root@client ~]# lsblk 

客户端进行快照还原数据的实验:
1)客户端格式化、挂载、写数据

[root@client ~]# mkfs.xfs /dev/rbd0 
[root@client ~]# mkdir /data 
[root@client ~]# mount /dev/rbd0 /data/ 
[root@client ~]# echo "abc hello world" > /data/test.txt 

2)回到 node 集群(给 jacob 共享盘创建快照)

[root@node1 ~]# rbd snap ls jacob    #默认该镜像盘没有快照 
[root@node1 ~]# rbd  snap  create  jacob  --snap  jacob-snap1   #给 jacob 镜像盘创建快照,快照名称为 jacob-snap1 到 client 模拟数据被误操作删除(ceph 不支持在线还原快照) 

3)客户端删除数据/data/test.txt ,并取消挂载
4)到 node 集群还原快照

[root@node1 ~]# rbd snap rollback jacob  --snap  jacob-snap1 客户端再次挂载访问共享 
[root@client ~]# mount /dev/rbd0   /data/ [root@client ~]# cat /data/test.txt

使用快照克隆一个新的镜像盘 image
1)创建一个新的共享 ,保护快照(防止快照被删除)

 [root@node1 ~]# rbd snap protect jacob  --snap  jacob-snap1 
 [root@node1 ~]# rbd  clone  jacob  --snap jacob-snap1  jacob-clone  \ --image-feature layering  #使用现有 jacob 镜像盘的 jacob-snap1 这个快照,克隆一个新的共享镜像盘,名称为 jacobclone 
[root@node1 ~]# rbd ls  
[root@node1 ~]# rbd  info  jacob-clone [root@node1 ~]# rbd  flatten  jacob-clone [root@node1 ~]# rbd  info  jacob-clone #克隆镜像很多数据都来自于快照链 #如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!!
[root@node1 ~]# rbd snap  unprotect  jacob  --snap  jacob-snap1   #取消快照保护 [root@node1 ~]# rbd snap  rm   jacob  --snap  jacob-snap1   #删除快照

2)客户端取消对 ceph 共享盘的挂载实验

[root@client ~]# umount  /data/ 
[root@client ~]# rbd  showmapped 
[root@client ~]# rbd  unmap  jacob 
[root@client ~]# rbd  unmap  /dev/rbd1 

2.4.2、文件系统共享实验

在这里插入图片描述
写数据时,数据会被写到 block 中(4M 的 a.mp4,占用多个 block)【 block 中存数据】 Inode 中存储元数据(metadata)【元数据是数据的数据、描述数据的数据,比如一个文件, 有文件名,时间,权限,大小… …文件数据的地址】

服务端
(使用 node3 做 ceph-mds 服务,操作指令在 node1 执行)

[root@node1 ~]# cd  ceph-cluster/ [root@node1 ceph-cluster]# ceph-deploy mds create node3 
[root@node1 ~]# ceph  osd  pool  create  cephfs_data  128 #创建一个新的共享池,名称为 cephfs_data 
[root@node1 ~]# ceph  osd  pool  create  cephfs_metadata  128 #创建一个新的共享池,名称为 cephfs_metadata 
cephfs_metadata 做 inode,cephfs_data 做 block 
[root@node1 ~]# ceph  osd  lspools          #查看共享池 
[root@node1 ~]# ceph  fs  new  myfs1  cephfs_metadata  cephfs_data #创建一个文件系统,这个文件系统由 inode 和 block 组成 cephfs_metadata 做 inode,存元数据 cephfs_data 做 block,存数据 文件系统的名称是 myfs1 
[root@node1 ~]# ceph  fs  ls                  #查看文件系统 

客户端 mount 访问

[root@client ~]# mkdir  /cephfs 查看 cat /etc/ceph/ceph.client.admin.keyring 找用户名和密码 
[root@client ~]# mount  -t  ceph  192.168.4.11:6789:/   /cephfs  \ -o  name=admin,secret=密码 

#客户端 mount 访问共享,-t 访问的服务类型是 ceph,(nfs,cifs),服务 IP 是 192.168.4.11,端 口是 6789,ceph 仅支持一个文件系统共享,只能写访问/,把共享挂载到/cephfs 目录, name 指定用户名,secret 指定密码(因为 ceph 集群需要验证用户和密码才能访问)

2.4.3、Ceph 对象存储的实验

对象存储:基于 kv 的存储,通过 API 接口访问,对象存储中所有的数据都被认为是一个对 象。基于对象的存储就是对象存储。
运维:部署集群,维护集群,故障排错
开发:写程序,基于程序中的指令连接 ceph 服务器,上传下载数据
百度云盘就属于对象存储(不能直接 mount,不是在客户端多一个磁盘)
百度云盘,客户端访问需要下载他的客户端软件(网页也是软件)

登陆 node1 使用 ceph-deploy 远程启动 RGW 服务(radosgw)

[root@node1 ~]# cd ceph-cluster/ 
[root@node1 ceph-cluster]# ceph-deploy  rgw  create  node3

可以修改配置文件,修改服务的端口(非必须的操作)【在 node3 操作】

[root@node3 ~]# vim /etc/ceph/ceph.conf 手动加入下面三行 [client.rgw.node3] host = node3 rgw_frontends = "civetweb port=8000" 
[root@node3 ~]# systemctl  restart  ceph-radosgw@rgw.node3.service  [root@node3 ~]# ss -ntulp |grep radosgw 

注意:当ceph.conf配置文件修改后,需要重新加载,需要启动ceph.target服务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值