ceph存储架构(cephrbd存储)

ceph存储架构(cephrbd存储)Ceph 引入了一个新的 RBD 协议 也就是 Ceph 块设备 Ceph Block Device RBD 为客户端提供了可靠 分布式 高性能的块存储 RBD 块呈带状分布在多个 Ceph 对象之上 而这些对象本身又分布在整个 Ceph 存储集群中 因此能够保证数据的可靠性以及性能 RBD 已经被 Linux 内核支持 换句话说 RBD 驱动程序在过去的几年里已经很好地跟 Linux

大家好,我是讯享网,很高兴认识大家。



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 账户

确定账户创建成功

观察到 账户说明创建成功

  1. 修改 中的环境变量 , 两个参数,替换成阿里云平台账户的 信息,
  2. DaemonSet 的 apiVersion 不能使用版本 ,经测试可以使用 。

阿里云平台账户的 信息到阿里云平台的 管理页面进行申请。这里不再赘述。

确定是否创建成功

观察到 的 Ready 为 1 说明该组件成功创建。

  1. 修改 中的环境变量 , 两个参数,替换成阿里云平台账户的 accesskey 信息。
  2. 在 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

存储添加后须通过重启组件或者更新组件来触发存储的生效

存储是否生效可以通过组件是否可以正常启动来判断,组件正常启动则说明组件已经正常挂载了存储,也可以到阿里云盘管理页面确定存储的情况,确定是否存在对应大小的存储,其状态是否是使用中的状态。

小讯
上一篇 2025-06-11 15:50
下一篇 2025-04-27 07:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/151879.html