首页 > 服务配置 > linux工匠之ceph存储集群实验
2018
02-08

linux工匠之ceph存储集群实验

ceph存储集群实验

Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.

Ceph集群可以为我们提供对象存储块设备,如果要使用RESTful API,需要安装对象网关,支持S3和swift接口
对象存储,块设备和文件存储的结合,也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如S3、七牛、Swift
块设备简单理解,比如VMware虚拟机添加一块磁盘,实际上是在磁盘上创建了一个文件;Xen或KVM可以通过qemu-img创建一个qcow2或者img文件用于做虚拟机系统盘,或者是一个DVD光盘、磁盘阵列、硬盘,是映射给主机用
文件存储可以这么理解,比如Samba服务、NFS服务、FTP服务、GFS、HDFS,是用于做存储的服务,直接挂载就可以用,不用格式化

ceph存储结构:

Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。
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 等基本命令。

ceph官网:https://ceph.com

ceph官方文档:http://docs.ceph.org.cn

使用ceph前需要了解其结构和运行模式,因为ceph和其他软件设计思维还是不同的,下面按照官方思路实验

https://www.ibm.com/developerworks/cn/linux/l-ceph/

https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/

https://www.cac.cornell.edu/education/Ceph.pdf

上述为admin、node1、node2、node3 总共4个主机节点

集群主机初始化

4台主机都需要的操作步骤

下面只是ceph-deploy主机的操作步骤,3个node节点不需要操作,ceph-deploy 可理解为ansible或puppet,是ceph集群管理工具
admin节点

admin-node生成公钥,保证可以无密码登录3个node

创建集群

tips:
如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:

用下列命令可以连 Ceph 安装包一起清除:

如果执行了 purge ,你必须重新安装 Ceph

把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态

把ceph安装到各节点

下面是安装node1节点的日志,日志有删减

上面的步骤中有 yum clean all,因为yum安装rpm包超时出错了几次,于是乎手动yum安装所需的包,
安装完成后查看

配置初始 monitor

并收集所有密钥,我们放到node1这个节点主机

安装完之后就可以看到有ceph的进程运行

当前目录里应该会出现这些密钥环

如上,node1节点的monitor部署完毕,线上环境的话至少需要3个monitor

部署OSD节点

下面部署2个OSD节点
登录到 Ceph 节点、并给 OSD 守护进程创建一个目录

从管理节点执行 ceph-deploy 来准备 OSD

激活OSD

遇到错误,

需要修改存储的权限为ceph,如果是磁盘也需要修改权限。原因是官方文档ceph是一个拥有sudo权限的普通用户,而这里我们用的root

再次执行激活操作

ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring
用法:ceph-deploy admin {admin-node} {ceph-node}

新加了 OSD , Ceph集群就开始重均衡,把归置组迁移到新 OSD 。可以用下面的 ceph 命令观察此过程

检查集群状态

添加元数据服务器

至少需要一个元数据服务器才能使用 CephFS,当前生产环境下的 Ceph 只能运行一个元数据服务器

添加RGW配置

RGW 例程默认会监听 7480 端口,可以更改该节点 ceph.conf 内与 RGW 相关的配置,如下:

查看现在的monitor

服务安装完毕,查看一下开机启动的服务

测试集群

测试存取数据

删除本地的testfile,再获取这个文件

 

ceph块设备

在虚拟机上运行 ceph-client 节点,但是不能在与 Ceph 存储集群(除非它们也用 VM )相同的物理节点上执行下列步骤
新加一台主机,hostname为 ceph-client,我们在ceph-deploy主机部署安装,再在ceph-client主机操作

并在/etc/hosts 添加ip和hostname对应关系
先安装ceph,再ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client

在ceph-client主机操作,这里只是测试,所以创建128M的块:

layering: 支持分层
exclusive-lock: 支持独占锁
object-map: 支持对象映射(依赖 exclusive-lock)
fast-diff: 快速计算差异(依赖 object-map)
deep-flatten: 支持快照扁平化操作

到这里,data目录就是刚创建的ceph块设备

 

文件系统

查看状态

已创建了元数据服务器,但如果你没有创建存储池和文件系统,它是不会变为活动状态的

把 Ceph FS 挂载为内核驱动

把 Ceph FS 挂载为用户空间文件系统( FUSE )

用户空间文件系统

查看存储池

 

对象存储

hadoop有一个web页面,ceph的web页面链接默认为monitor IP的7480端口
http://192.168.22.75:7480/
使用 REST 接口,首先需要为S3接口创建一个初始 Ceph 对象网关用户。然后,为 Swift 接口创建一个子用户。然后你需要验证创建的用户是否能够访问网关
ceph的网关api和亚马逊S3的api兼容

新建一个 Swift 子用户。创建 Swift 用户包括两个步骤。第一步是创建用户。第二步是创建 secret key
为 S3 访问创建 RADOSGW 用户

新建秘钥

验证 S3 访问,运行一个 Python 测试脚本。S3 访问测试脚本将连接 radosgw, 新建一个新的 bucket 并列出所有的 buckets。 aws_access_key_id 和 aws_secret_access_key 的值来自于命令radosgw_admin 的返回值 access_key 和 secret_key

ceph S3接口

运行Python脚本

我们通过url访问hello.txt,返回访问拒绝Connection refused,是因为网关用的默认端口7480,而不是80

测试 SWIFT 访问
ceph swift接口测试

测试swift接口

ceph基础应用如上,下一篇介绍作为kubernetes的存储使用

最后编辑:
作者:bbotte
这个作者貌似有点懒,什么都没有留下。

linux工匠之ceph存储集群实验》有 2 条评论

  1. 趣头条 说:

    鸟儿叫,花儿笑,一年一季春来到!

  2. Hi to every body, it’s my first pay a visit of this web site; this
    blog includes remarkable and truly excellent stuff in support of readers.

留下一个回复

你的email不会被公开。