CentOS 7部署 Ceph分布式存储架构

电脑杂谈  发布时间:2020-01-04 10:01:44  来源:网络整理

分布式存储 架构_架构及分布式缓存, 云存储技术的实践与思考_分布式存储架构

随着OpenStack日渐成为开源云计算的标准工具栈,Ceph也早已变成OpenStack的首选后端存储。Ceph是一种为优秀的性能、可靠性和能扩展性而设计的统一的、分布式文件系统。

ceph官方文档

ceph中文开源社区

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

ceph支持

1、对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。

2、文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。

3、块存储:即rbd。有kernel rbd和librbd两种使用方法。支持快照、克隆。相当于一块硬盘挂到本地分布式存储架构,用法跟功能和硬盘一样。比如在OpenStack项目里,Ceph的块设备储存可以对接OpenStack的后端存储

Ceph相比其他分布式存储有什么特点?

1、统一存储

虽然ceph底层是一个分布式文件系统,但鉴于在上层开发了支持对象跟块的接口。所以在开源内存硬件中,能够一统江湖。至于能不能千秋万代,就不知了。

2、高扩展性

扩容方便、容量大。能够管理上千台服务器、EB级的容量。

3、可靠性强

支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可信。存储节点可以自管理、自动恢复。无单点故障,容错性强。

4、高性能

因为是多个副本,因此在读写操作之后才能做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与传输设备(osd) 交互。

架构及分布式缓存, 云存储技术的实践与思考_分布式存储 架构_分布式存储架构

Ceph各组件介绍:

Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的用途是储存数据,处理数据的复制、恢复、回填、再均衡,并借助检查其它OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少必须2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本分布式存储架构,但你可以调整副本数)。

Monitors: Ceph Monitor维护着展现集群状态的各类图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着出现在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。

MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统内存元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。

xuegod67 10.10.10.67 admin,osd, mon 作为管控和监控节点

xuegod68 10.10.10.68 osd,mds

xuegod69 10.10.10.69 osd,mds

xuegod70 10.10.10.70 client

#xuegod67作管理. osd. mon节点; xuegod68和69作osd mds; xuegod70客户端

前三台服务器增加一块硬盘/dev/sdb实验, 创建目录并挂载到/var/local/osd{0,1,2}

[root@xuegod67 ~]# mkfs.xfs  /dev/sdb
[root@xuegod67 ~]# mkdir -p /var/local/osd0
[root@xuegod67 ~]# mount /dev/sdb  /var/local/osd0/
[root@xuegod68 ~]# mkfs.xfs  /dev/sdb
[root@xuegod68 ~]# mount /dev/sdb  /var/local/osd1/
[root@xuegod69 ~]# mkfs.xfs  /dev/sdb
[root@xuegod69 ~]# mount /dev/sdb  /var/local/osd2/

(规范系统主机名添加hosts文件实现集群主机名与主机名之间互相无法解析(host 文件添加主机名不要使用fqdn方式)可用hostnamectl set-hostname name设置

分别开启各节点的/etc/hosts文件,加入这四个节点ip与名称的对应关系

10.10.10.67 xuegod67

10.10.10.68 xuegod68

10.10.10.69 xuegod69

10.10.10.70 xuegod70

分布式存储 架构_架构及分布式缓存, 云存储技术的实践与思考_分布式存储架构

SSH免密码登录

在管理节点使用ssh-keygen 生成ssh keys 发布至各节点

[root@xuegod67 ~]# ssh-keygen #所有的输入选项都直接回车生成。
[root@xuegod67 ~]# ssh-copy-id xuegod67
[root@xuegod67 ~]# ssh-copy-id xuegod68
[root@xuegod67 ~]# ssh-copy-id xuegod69
[root@xuegod67 ~]# ssh-copy-id xuegod70

第一步:增加 yum配置文件(各个节点都必须降低yum源)

[root@xuegod67 ~]#vim /etc/yum.repos.d/ceph.repo
添加以下内容:(ceph国内163源)
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
第二步:更新软件源并安装ceph-deploy 管理工具
[root@xuegod67 ~]# yum clean all && yum list
[root@xuegod67 ~]# yum -y install ceph-deploy
[root@xuegod67 ~]# mkdir /etc/ceph && cd /etc/ceph
[root@xuegod67 ceph]#  ceph-deploy new xuegod67    #mon安装在xuegod67节点
[root@xuegod67 ceph]# ls                                #生成配置文件在当前目录下
ceph.conf  ceph.log  ceph.mon.keyring
Ceph配置文件、一个monitor密钥环和一个日志文件
[root@xuegod67 ceph]# vim ceph.conf 配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态,把下面这行加入到[global]段(可选配置)
[global]
fsid = 92f5581d-79d2-4c9f-a523-4965eedc846b
mon_initial_members = xuegod67
mon_host = 10.10.10.67
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2

(如果网络源安装失败,手工安装epel-release 然后安装yum –yinstall cep-release再yum –y install ceph ceph-radosgw)

错误参考:

[root@xuegod67 ceph]# ceph-deploy install xuegod67 xuegod68 xuegod69 xuegod70
安装ceph monitor
[root@xuegod67 ceph]# ceph-deploy mon create xuegod67
收集节点的keyring文件
[root@xuegod67 ceph]# ceph-deploy  gatherkeys xuegod67

添加osd节点 (所有osd节点执行)

我们实验准备时终于创建目录/var/local/osd{id}

#创建osd  
[root@xuegod67 ceph]# ceph-deploy osd prepare xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2
#激活osd  
[root@xuegod67 ceph]# ceph-deploy osd activate xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2
如果报错

解决:在各个节点上帮/var/local/osd1/和/var/local/osd2/添加权限

如下:

架构及分布式缓存, 云存储技术的实践与思考_分布式存储 架构_分布式存储架构

chmod 777 -R /var/local/osd1/

chmod 777 -R /var/local/osd2/*

查看状态:
[root@xuegod67 ceph]# ceph-deploy osd list xuegod67 xuegod68 xuegod69
(用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了)
[root@xuegod67 ceph]# ceph-deploy admin xuegod67 xuegod68 xuegod69
各节点修改ceph.client.admin.keyring权限:
[root@xuegod67 ceph]#chmod +r /etc/ceph/ceph.client.admin.keyring
[root@xuegod67 ceph]# ceph health 或 ceph -s
HEALTH_OK

[root@xuegod67 ceph]# ceph-deploy mds create xuegod68 xuegod69 #我们MDS安装2台

[root@xuegod67 ceph]# ceph mds stat #查看状态

[root@xuegod67 ceph]# ceph -s

以上基本上完成了ceph存储集群的构建。

[root@xuegod67 ceph]# ceph fs ls   #创建之前
No filesystems enabled
创建存储池
[root@xuegod67 ceph]# ceph osd pool create cephfs_data <pg_num>  
[root@xuegod67 ceph]# ceph osd pool create cephfs_metadata <pg_num>

其中:<pg_num> = 128 ,

关于创建存储池

确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:

*少于 5 个 OSD 时能把 pg_num 设置为 128

*OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512

分布式存储架构_架构及分布式缓存, 云存储技术的实践与思考_分布式存储 架构

*OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096

*OSD 数量多于 50 时,你得理解权衡方法、以及怎样自己计算 pg_num 取值

*自己计算 pg_num 取值时可通过 pgcalc 工具

随着 OSD 数量的降低,正确的 pg_num 取值变得非常重要,因为它明显地制约着集群的行为、以及错误时的数据持久性(即灾难性事件造成数据损坏的几率)。

创建好存储池后,你就可以用 fs new 命令创建文件系统了

[root@xuegod67 ceph]# ceph fs new <fs_name> cephfs_metadata cephfs_data  
其中:<fs_name> = cephfs  可自定义
[root@xuegod67 ceph]# ceph fs ls              #查看创建后的cephfs
[root@xuegod67 ceph]# ceph mds stat          #查看mds节点状态
e6: 1/1/1  up  {0=xuegod69=up:active}, 1  up:standby
active是活跃的,另1个是处于热备份的状态

有不同挂载方式

[root@xuegod70 ceph]# mkdir /opt #创建挂载点
存储密钥(如果没有在管理节点使用ceph-deploy拷贝ceph配置文件)
cat /etc/ceph/ceph.client.admin.keyring 
将key对应的值复制下来保存到文件:/etc/ceph/admin.secret中。
挂载
[root@xuegod70 ceph]# mount -t ceph 10.10.10.67:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret
取消挂载
[root@xuegod70 ceph]# umount /opt
安装ceph-fuse
[root@xuegod70 ceph]# yum install -y ceph-fuse
挂载
[root@xuegod70 ceph]# ceph-fuse -m 10.10.10.67:6789 /opt
取消挂载
[root@xuegod70 ceph]# fusermount -u /opt

ceph在开源社区还是非常热门的,但是更多的是应用于云计算的后端存储。所以大多数在制造环境中使用ceph的公司就会有专门的团队对ceph进行二次开发,ceph的运维难度也非常大。但是经过合理的改进以后,ceph的功耗和稳定性都是值得等待的。

关于其他:

清理机器上的ceph相关配置:

停止所有进程: stop ceph-all

卸载所有ceph程序:ceph-deploy uninstall [{ceph-node}]

删除ceph相关的安装包:ceph-deploy purge {ceph-node} [{ceph-data}]

删除ceph相关的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]

删除key:ceph-deploy forgetkeys

卸载ceph-deploy管理:yum -y remove ceph-deploy

可以参考内容:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-135773-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 牛阳
        牛阳

        记得当时是先警告美舰

      热点图片
      拼命载入中...