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

CEPH的搭建与注意事项

程序员文章站 2024-03-24 16:53:58
...

一、ceph实验前提准备

1.1、Ceph组件

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

产品特色
每个组件皆可扩展:集群管理节点可以扩展,集群存储节点可以扩展
可以到达EB及存储
基于软件实现,可以使用现有设备
默认三副本,自动复制,平衡数据
CEPH的搭建与注意事项
其中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 集群

[aaa@qq.com ~]# yum -y install ceph-deploy        #一定要在有 ssh **的主机上安装 
[aaa@qq.com ~]# mkdir  ceph-cluster    #但凡执行 ceph-deploy 脚本,必须在该目录下,否则会出错 
[aaa@qq.com ~]# cd ceph-cluster/ 
[aaa@qq.com 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 集群

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

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

2.3、 部署 OSD 集群

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

[aaa@qq.com ~]# cd ceph-cluster/    #必须的操作 
[aaa@qq.com 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 服务共享这些磁盘

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

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

2.4、不同类型共享存储

2.4.1、块共享实验

服务端

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

客户端访问共享

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

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

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

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

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

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

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

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

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

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

[aaa@qq.com ~]# umount  /data/ 
[aaa@qq.com ~]# rbd  showmapped 
[aaa@qq.com ~]# rbd  unmap  jacob 
[aaa@qq.com ~]# rbd  unmap  /dev/rbd1 

2.4.2、文件系统共享实验

CEPH的搭建与注意事项
写数据时,数据会被写到 block 中(4M 的 a.mp4,占用多个 block)【 block 中存数据】 Inode 中存储元数据(metadata)【元数据是数据的数据、描述数据的数据,比如一个文件, 有文件名,时间,权限,大小… …文件数据的地址】

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

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

客户端 mount 访问

[aaa@qq.com ~]# mkdir  /cephfs 查看 cat /etc/ceph/ceph.client.admin.keyring 找用户名和密码 
[aaa@qq.com ~]# 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)

[aaa@qq.com ~]# cd ceph-cluster/ 
[aaa@qq.com ceph-cluster]# ceph-deploy  rgw  create  node3

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

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

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

相关标签: ceph