Ceph 引入了一个新的 RBD 协议,也就是 Ceph 块设备(Ceph Block Device)。RBD 为客户端提供了可靠、分布式、高性能的块存储。RBD 块呈带状分布在多个 Ceph 对象之上,而这些对象本身又分布在整个 Ceph 存储集群中,因此能够保证数据的可靠性以及性能。RBD 已经被 Linux 内核支持,换句话说,RBD 驱动程序在过去的几年里已经很好地跟 Linux 内核集成。几乎所有的 Linux 操作系统发行版都支持 RBD。除了可靠性和性能之外,RBD 也支持其他的企业级特性,例如完整和增量式快照,精简的配置,写时复制(copy-on-write)式克隆,以及其他特性。RBD 还支持全内存式缓存,这可以大大提高它的性能。
Ceph 块设备完全支持云平台,例如 OpenStack、CloudStack 等。在这些云平台中它已经被证明是成功的,并且具有丰富的特性。
需用户自己准备 ceph 环境,可参考 官方安装文档
测试环境限制,我们使用 Ubuntu 单节点安装 ceph 集群,安装 ceph 的 jewel 版本,多节点 ceph 集群以及其他版本请参考官方教程。
- ceph 更新源
由于 ceph 在安装过程中,使用默认源速度较慢,这里使用阿里云的源
- 安装部署程序
官方推荐使用 执行程序进行 ceph 集群的安装。
- 创建文件夹,记录 ceph 配置文件
所有的操作均在该文件夹中,该文件夹会记录 ceph 在创建时的配置文件以及 admin 账户的秘钥。
- 安装监控节点
安装监控节点到 node1
node1 是主机名,必须能够解析到 node1 主机对应的 IP
由于使用单节点安装,需要修改配置文件,设置默认数据池大小为 1
- 安装 ceph 服务
- 部署监控节点
- 准备 ceph 存储路径并准备 osd 服务
将 用作 ceph 的数据共享目录
- 激活 osd 服务
如果出现权限问题可尝试进行赋权后重新激活
- 确认 ceph 集群状态
结果显示 说明集群部署正常。出现异常可以执行 确定 ceph 中的异常信息。
如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
用下列命令可以连 Ceph 安装包一起清除:
如果执行了 purge ,你必须重新安装 Ceph 。
使用 ceph 官方 csi 项目 ceph-csi安装 ceph 驱动。
- 下载项目
- 创建 rbac 账户
- 准备配置文件
配置文件内容制定了 csi 驱动要使用的 ceph 集群,记录在 ConfigMap 中。测试例子如下,
clusterID 为 ceph 集群的 id,通过可以看到 cluster 信息 monitors 为 ceph 服务的监控服务地址,对应着 monmap 中的节点信息
- 创建 ConfigMap
- 创建驱动服务
- 确定服务启动
根据文档安装,最后会有这样的 pod 实例正常运行
使用官方 demo 测试驱动是否正常,官方项目中 目录下给出了测试用例,使用 nginx 镜像挂载 ceph 存储。
确定 nginx 容器是否正常启动
如果没有启动成功可以通过,观察 provisioner 组件的日志,确定问题。
请注意替换 pod 的名字。 -c 指定 provisoner 实例中的容器,provisoner 实例中会启动 csi-provisioner 实例负责提供存储
上面使用官方 demo 时创建了 storageClass 对象,此时 Rainbond 平台会监控 storageClass 的创建,并将其记录到数据库中,用户可以通过 Rainbond 控制台选择 storageClass 对应的存储类型用在有状态组件上。
须通过重启组件或者更新组件来触发存储的生效
存储是否生效可以通过组件是否可以正常启动来判断,组件正常启动则说明组件已经正常挂载了存储,也可以到 ceph 集群中确定存储的情况,确定是否存在对应大小的存储,其状态是否是使用中的状态。
云盘是阿里云为云服务器 ECS 提供的数据块级别的块存储产品,具有低时延、高性能、持久性、高可靠等特点。
云盘采用分布式三副本机制,为 ECS 实例提供 99.% 的数据可靠性保证。支持在可用区内自动复制您的数据,防止意外硬件故障导致的数据不可用,保护您的业务免于组件故障的威胁。就像硬盘一样,您可以对挂载到 ECS 实例上的云盘做分区、格式化、创建文件系统等操作,并对数据进行持久化存储。
更多云盘介绍可到 阿里云官方文档进行了解。
阿里云盘驱动的原理是通过阿里云盘 SDK 的方式远程创建出来一个云盘实例,供 kubernetes 使用。 阿里云盘根据 kubernetes 的存储规范,实现了一套阿里云 CSI 插件,可以通过 CSI 插件实现 kubernetes 对阿里云盘存储的生命周期管理。云盘 CSI 插件支持动态创建云盘数据卷、挂载数据卷。云盘是一种块存储类型,只能同时被一个负载使用(ReadWriteOnce)。
使用项目 alibaba-cloud-csi-driver
创建 k8s 账户
确定账户创建成功
观察到 账户说明创建成功
- 修改 中的环境变量 , 两个参数,替换成阿里云平台账户的 信息,
- DaemonSet 的 apiVersion 不能使用版本 ,经测试可以使用 。
阿里云平台账户的 信息到阿里云平台的 管理页面进行申请。这里不再赘述。
确定是否创建成功
观察到 的 Ready 为 1 说明该组件成功创建。
- 修改 中的环境变量 , 两个参数,替换成阿里云平台账户的 accesskey 信息。
- 在 kubernetes 1.16 版本中 StatefulSet 的 apiVersion 不能使用 ,经测试可以使用
需要在 spec 下添加 selector 的信息
确定 csi-provisioner 是否创建成功,Ready 为 1 说明成功
检查 csi-plugin 的状态
更多驱动安装的请参考 官方教程
项目中已经定义好了 storageClass,需根据用户的实例所在区域进行修改方可使用
一块云盘只能挂载到同一地域、同一可用区的一台 ECS 实例
测试所用 ecs 在呼和浩特区,所以我们将 文件里面的 修改成了 ,把 修改成了 。
Rainbond 会检测到 StorageClass 并同步到数据库中,供 Rainbond 控制台用做存储类型选择使用;用户可以到 Rainbond 控制台创建 有状态存储 选择刚创建的阿里云盘测试安装情况。
正确创建存储驱动并创建 storageClass 之后,用户可以在 Rainbond 控制台创建 有状态组件 使用阿里云盘存储,此时添加存储类型时,可以看到阿里云盘 storageClass 对应的新增存储类型供用户使用。
阿里云盘最小存储限制为 20G,在添加存储时设定存储大小最小为 20G。
存储添加后须通过重启组件或者更新组件来触发存储的生效
存储是否生效可以通过组件是否可以正常启动来判断,组件正常启动则说明组件已经正常挂载了存储,也可以到阿里云盘管理页面确定存储的情况,确定是否存在对应大小的存储,其状态是否是使用中的状态。
到此这篇ceph存储架构(cephrbd存储)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/kjbd-jg/13841.html