将来的你
一定会感谢现在拼命努力的自己

基于Docker部署ceph分布式文件系统(Luminous版本)

摘 要

本文记录分享了ceph分布式文件系统的详尽部署过程,既是为了方便自己后续回溯,也希望能给初次接触ceph的同学提供些许参考。

最近在学习 K8S,其中会用到分布式文件存储系统,因此着手搭建测试了一把。为了简单方便,这里依然是基于 Docker 部署,极大地简化了部署配置的难度。基于Docker部署ceph分布式文件系统(Luminous版本)

一、环境准备

文中涉及的 IP 的角色属性清单:

名称 服务器 IP 角色 备注
Ceph Cluster 192.168.1.100 MON/OSD/RBD/MDS/MGR/RGW 系统版本:Centos7.2

硬件配置:

CPU:24 核

内存:64GB

硬盘:2TBx11 SATA

网卡:10G 全双工

192.168.1.101 MON/OSD/RBD/MDS/MGR/RGW
192.168.1.102 MON/OSD/RBD/MDS/MGR/RGW

在 3 台服务器进行如下初始化:

1、配置 hosts

2、建立信任关系

3、磁盘初始化

Ps:本文实验服务器环境有 11 块盘,实际部署时请根据服务器实际情况对下文代码进行调整。

①、格式化

ceph 推荐使用 XFS 格式,这里服务器有 11 块盘(/dev/sdb~/dev/sdl,不含系统盘),这里循环格式化(格式化之前注意有没有重要数据!):

②、磁盘挂载

为每块磁盘 创建一个挂载点文件夹(/data1~/data11):

在/etc/fstab 追加如下内容:

最后执行 mount -a 挂载,使用 df -h 查看挂载情况:

4、安装 docker

可自行搞定,也可以如下使用 yum 安装:

5、拉取 ceph 镜像

这里用到了 dockerhub 上最流行的 ceph/daemon 镜像:

6、创建目录

7、内核优化

8、其他配置

把容器内的 ceph 命令 alias 到本地,方便使用,其他 ceph 相关命令也可以参考添加:

三、部署 ceph

Ps:以下操作均在 192.168.1.100(ceph1)上进行。

1、编写脚本

vim /data/ceph/admin/start_mon.sh

Ps:Monitor 节点这里有个很关键的配置:MON_IP 和 CEPH_PUBLIC_NETWORK 要写全,比如本文有 3 台服务器,那么 MAN_IP 需要写上 3 个 IP,而且如果 IP 跨网段,那么 CEPH_PUBLIC_NETWORK 必须写上所有网段,否则就会像网上大部分已有教程一样,只指定一个 IP 和一个网段是无法启动的!

vim /data/ceph/admin/start_osd.sh

vim /data/ceph/admin/start_mds.sh

vim /data/ceph/admin/start_mgr.sh

vim /data/ceph/admin/start_rgw.sh

vim /data/ceph/admin/start_rdb.sh

2、启动 mon

①、在 192.168.1.100(ceph1)上运行 start_mon.sh,成功启动后会生成配置数据。接着 ceph 主配置文件,在追加如下内容:

②、拷贝所有数据(已包含脚本)到另外 2 台服务器:

③、通过远程 ssh,在 ceph2 和 ceph3 上依次启动 mon:

④、查看集群状态 ceph -s

如果能够看到 ceph2 和 ceph3 则表示集群创建成功,此时应该是 HEALTH_WARN 状态,因为还没有创建 osd。

2、启动 OSD

虽然 ceph/daemon 这个 docker 镜像支持一个镜像来启动多个 osd,映射到多块分区,但是为了方便管理,我们需要为每一块磁盘创建一个 osd。

在 3 台服务器上依次执行 start_osd.sh 脚本:

全部 osd 都启动后,稍等片刻后执行 ceph -s 查看状态,应该可以看到多了如下信息(总共 33 块盘,33 个 OSD 节点):

3、启动 MDS

4、创建文件系统

5、启动 MGR

MGR 是 ceph 自带的仪表盘监控,可以在一台服务器上单点启动也可以多点启动实现多活:

启动后,在 ceph1 节点上执行如下命令激活仪表盘:

启动成功后,通过浏览器访问 http://192.168.1.100:7000 即可看到如下仪表盘:基于Docker部署ceph分布式文件系统(Luminous版本)

Ps:如果这里使用多节点 mgr,可以在前面套一层 nginx 代理即可。关于更多 mgr 的配置可以参考的官方文档:http://docs.ceph.com/docs/master/mgr/dashboardhttps://ceph.com/planet/ceph-luminous-%E6%96%B0%E5%8A%9F%E8%83%BD%E4%B9%8B%E5%86%85%E7%BD%AEdashboard/

6、启动其他组件

①、启动 RGW

②、启动 RBD

7、最终状态

①、docker ps

②、ceph -s

③、ceph mon dump

四、cephfs 挂载

ceph 目前支持对象存储(RGW)、块存储 RDB 以及 CephFS 文件系统这 3 种功能。本文主要记录 ceph 部署,所以这里仅测试下 CephFS 的简单挂载,对其他 2 种感兴趣的同学可以自行测试。

1、网络策略

如果公司内部有网络策略限制(比如我这边),那么先要保证挂载的客户端到 OSD 端口是畅通的。其中,每一个 OSD 都会启动一个端口,从 6789 一次递增,即第一个 OSD 是 6789,第二个则是 6790。

2、安装 ceph-fuse

由于本文使用的最新版的 ceph,而公司内部 yum 源能支持的 ceph-fuse 版本太低,会导致挂载卡死不成功问题。所以这里推荐使用官方最新 rpm 包安装:

Ps:更多版本下载地址:http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/

3、查看 ceph id 和 key

这里图简单,就不再创建新用户,直接使用已有的 admin 用户,所以我们要在 ceph 节点上查看 admin 的密钥:

①、ID

上文中的 ceph -s 或 ceph mon dump 信息中都有 ceph 的 ID 信息,即:

843ea71c-786d-4c6e-b19d-9c20c47982e8

②、KEY

cat etc/ceph.client.admin.keyring

4、创建配置文件

根据上述拿到的 ID 和 KEY,如下创建配置文件:

5、启动挂载

6、测试读写速度

这里用 dd 简单测试下,数值仅供参考。

五、小结

本文分享了基于 Docker 快速拉起了一个 ceph 集群,并对 cephfs 文件系统做了简单的挂载测试。由于篇幅有限,文章未分享 ceph 的对象存储和块存储,也没有做针对性的优化和更专业的测试(因为我也是新手)。希望对初次接触 ceph,想快速入门的同学有所帮助!
赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@3yyy.top。文章观点不代表本站立场。本站原创内容未经允许不得转载:三叶运维 » 基于Docker部署ceph分布式文件系统(Luminous版本)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏