Ceph集群搭建及其运用(块存储、ceph文件系统)

一、ceph简介

  • ceph被称作面向未来的存储,
  • 可以实现的存储方式:
    • 块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”
    • 文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹
    • 对象存储:像百度云盘一样,需要使用单独的客户端
  • ceph的构成

  • Ceph OSD 守护进程: Ceph OSD 用于存储数据。此外,Ceph OSD 利用 Ceph 节点的 CPU、内存和网络来执行数据复制、纠删代码、重新平衡、恢复、监控和报告功能。存储节点有几块硬盘用于存储,该节点就会有几个osd进程。
  • Ceph Mon监控器: Ceph Mon维护 Ceph 存储集群映射的主副本和 Ceph 存储群集的当前状态。监控器需要高度一致性,确保对Ceph 存储集群状态达成一致。维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。
  • MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据。
  • RGW:对象存储网关。主要为访问ceph的软件提供API接口。

二、环境准备

        创建4台虚拟机,配置好ip及yum,关闭selinux,firewalld,node[1..3]分别配置2块20G的硬盘

主机名    IP地址
node1    192.168.4.11/24
node2    192.168.4.12/24
node3    192.168.4.13/24
client1    192.168.4.10/24

 三、ceph集群搭建步骤

一、ceph为我们提供了一个ceph-deploy工具,可以在某一节点上统一操作全部节点
将Node1作为部署节点,将来的操作都在node1上进行,node1配置免密登录及所有主机配置域名解析:

[root@node1 ~]# ssh-keygen    # 生成密钥对
[root@node1 ~]# for i in {10..13}
> do
> ssh-copy-id 192.168.4.$i
> done


# 在所有的主机上配置名称解析。注意,解析的名字必须是该机器的主机名
[root@node1 ~]# vim /etc/hosts   # 增加4行
... ...
192.168.4.10    client1
192.168.4.11    node1
192.168.4.12    node2
192.168.4.13    node3
[root@node1 ~]# for i in 10 12 13
> do
> scp /etc/hosts 192.168.4.$i:/etc/
> done

二、配置ceph集群所需安装包

# 在3个节点上安装软件包
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
> done

安装结束后,最好再在三台虚拟机上再次 yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw确保已经安装,防止后续报错

三、配置client1为ntp服务器、node1-3成为client1的NTP客户端

(1)client1搭建ntp服务器:

root@client1 ~]# yum install -y chrony
[root@client1 ~]# vim /etc/chrony.conf
 29 allow 192.168.4.0/24    # 授权192.168.4.0/24可以时钟同步
 33 local stratum 10   # 即使没有从一个源同步时钟,也为其他主机提供时间
[root@client1 ~]# systemctl restart chronyd

(2)node1-3成为客户端

[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y chrony
> done
[root@node1 ~]# vim /etc/chrony.conf  # 只改第7行
  7 server 192.168.4.10 iburst   # 替换gateway
[root@node1 ~]# for i in node{2..3}
> do
> scp /etc/chrony.conf $i:/etc/
> done
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i systemctl restart chronyd
> done                                                                              验证时间是否同步  client1前面有^*表示同步成功
[root@node1 ~]# chronyc sources -v

四、在node1上安装ceph-deploy部署工具,同时创建ceph工作目录ceph-deploy

 yum install -y ceph-deploy

[root@node1 ~]# yum install -y ceph-deploy

[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster

五、创建一个新的集群,包含(node1-node3),并修改配置文件

[root@node1 ceph-cluster]# ceph-deploy new node{1..3}
[root@node1 ceph-cluster]# ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
[root@node1 ceph-cluster]# tree .
.
├── ceph.conf               # 集群配置文件
├── ceph-deploy-ceph.log    # 日志文件
└── ceph.mon.keyring        # 共享密钥

修改配置文件,开启块存储快照功能,此步非常之重要!!!

root@node1 ceph-cluster]# vim ceph.conf   # 尾部追加一行如下
rbd_default_features = 1

六、初始化monitor及查看集群状态(三台机器已成为1个ceph)

[node1 ceph-cluster]# ceph-deploy mon create-initial查看集群状态ceph -s
health HEALTH_ERR   # 因为还没有硬盘

常见错误:装包不全、虚拟机内存不够,如果安装过程中出现keyring...这种报错,可执行命令 ceph-deploy gatherkeys node{1..3},执行该命令后,所有ceph相关安装包必须重新安装!

七、创建OSD(分区表及分区)

(1)初始化各主机硬盘(做成gpt分区表)

# 初始化各主机的硬盘。vmware应该是sdb和sdc,硬盘根据实际情况名称,可lsblk命令查看
[root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdb node1:vdc
[root@node1 ceph-cluster]# ceph-deploy disk zap node2:vdb node2:vdc
[root@node1 ceph-cluster]# ceph-deploy disk zap node3:vdb node3:vdc

(2)创建存储空间(分区)

ceph会硬盘分为两个分区,一个分区大小为5GB,用于保存ceph的内部资源;另一个分区是剩余全部空间
[root@node1 ceph-cluster]# ceph-deploy osd create node1:vd{b,c}
[root@node1 ceph-cluster]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  20G  0 disk
├─vdb1 253:17   0  15G  0 part /var/lib/ceph/osd/ceph-0
└─vdb2 253:18   0   5G  0 part
vdc    253:32   0  20G  0 disk
├─vdc1 253:33   0  15G  0 part /var/lib/ceph/osd/ceph-1
└─vdc2 253:34   0   5G  0 part
# 将会出现2个osd进程,因为有两块硬盘用于ceph
[root@node1 ceph-cluster]# systemctl status ceph-osd*

# 继续初始化其他节点的OSD
[root@node1 ceph-cluster]# ceph-deploy osd create node2:vd{b,c}
[root@node1 ceph-cluster]# ceph-deploy osd create node3:vd{b,c}

(3)查看集群状态 ceph -s
health HEALTH_OK ,一切正常

行文至此,一个ceph集群已搭建完毕,接下来浅谈其运用

四、ceph集群运用

前文已经提到ceph可以实现的存储方式:
–块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”
–文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹
–对象存储:像百度云盘一样,需要使用单独的客户端

(一)ceph-块存储

1.1块存储介绍:

  块存储,就是可以提供像硬盘一样的设备。使用块存储的节点,第一次连接块设备,需要对块设备进行分区、格式化,然后挂载使用。ceph提供存储时,需要使用存储池。为了给客户端提供存储资源,需要创建名为存储池的容器。存储池类似于逻辑卷管理中的卷组。卷组中包含很多硬盘和分区;存储池中包含各节点上的硬盘。

1.2快存储使用

    存储池查看ceph osd lspools ,默认有一个名为rbd的存储池,其编号为0,可通过ceph df,查看存储池大小。此时虽然有90G,但是一个数据有3个副本。所以可用为30G,保存的副本数量可通过ceph osd pool get rbd size查看,通过ceph osd pool set rbd size  4进行副本数量修改

正课:

1.2.1在默认存储池中,创建一个名为demo-image大小为10G的镜像,提供给客户端使用

[root@node1 ceph-cluster]# rbd create demo-image --size 10G
# 查看默认存储池中的镜像
[root@node1 ceph-cluster]# rbd list
demo-image
# 查看demo-image的详细信息
[root@node1 ceph-cluster]# rbd info demo-image
rbd image 'demo-image':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.1035238e1f29
    format: 2
    features: layering
    flags:

1.2.2客户端使用块存储,以下操作均在客户端client,除了(2)

思路:

•怎么用?装软件
•ceph集群在哪?通过配置文件说明集群地址
•权限。keyring文件

(1)安装ceph客户端软件yum install -y ceph-common

(2)将配置文件和密钥keyring文件拷贝给客户端(指定ceph地址)

[root@node1 ceph-cluster]# scp /etc/ceph/ceph.conf 192.168.4.10:/etc/ceph/
[root@node1 ceph-cluster]# scp /etc/ceph/ceph.client.admin.keyring 192.168.4.10:/etc/ceph/

(3)客户端查看镜像rbd list,并进行映射到本地

rbd map demo-image;将demo-image镜像映射;rbd showmapped 查看映射;

(4)客户端挂载格式化使用

root@client1 ~]# mkfs.xfs /dev/rbd0
[root@client1 ~]# mount /dev/rbd0 /mnt/
[root@client1 ~]# df -h /mnt/

(二)ceph-文件系统

2.1ceph文件系统介绍

文件系统:相当于是组织数据存储的方式#就是共享文件夹
•格式化时,就是在为存储创建文件系统。
•Linux对ceph有很好的支持,可以把ceph文件系统直接挂载到本地。
•要想实现文件系统的数据存储方式,需要有MDS组件
•安装并启用mds

2.2实现

(1)在node3节点上安装MDS ,ssh node3 yum install -y ceph-mds

(2)node1配置让node3有MDS服务。可以部署多个,防止单点故障,如node2

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

注:MDS(元数据)介绍

元数据就是描述数据的属性。如属主、属组、权限等。
•ceph文件系统中,数据和元数据是分开存储的
•新建存储池
–归置组PG:存储池包含PG。PG是一个容器,用于存储数据。
–为了管理方便,将数量众多的数据放到不同的PG中管理,而不是直接把所有的数据扁平化存放。
–通常一个存储池中创建100个PG。

(3)新建一个名为data1的存储池,目的是存储数据,有100个PG:ceph osd pool create data1 100

(4)新建一个名为metadata1的存储池,目的是存储元数据ceph osd pool create metadata1 100

(5)创建名为myfs1的cephfs,数据保存到data1中,元数据保存到metadata1中:ceph fs new myfs1 metadata1 data1#先写就先存元数据

(6)客户端使用cephfs

挂载文件系统需要密码。查看密码

cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCC

客户端挂载使用,三个存储ip任选其一:

# -t 指定文件系统类型。-o是选项,提供用户名和密码
# cephfs的端口号默认是6789
[root@client1 ~]# mkdir /mydata
[root@client1 ~]# mount -t ceph -o name=admin,secret=AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCCrnrdPQ== 192.168.4.13:6789:/ /mydata
[root@client1 ~]# df -h /mydata
文件系统             容量  已用  可用 已用% 挂载点
192.168.4.13:6789:/   90G  520M   90G    1% /mydata

你可能感兴趣的:(自动化运维,linux,运维,服务器,自动化)