❝
的失灵一旦导致业务统计数据遗失,那将会是一场大灾难等级的交通事故。
❞
1. 云原生植物时代的储存优先选择之路
前段时间几年,我的工作内容始终紧紧围绕着顾客 Kubernetes 软件产业的建设。如何为顾客的 Kubernetes 软件产业优先选择这款稳定可靠、操控性表现出众的储存软件控制系统,这样的难题始终所苦着我。
储存卷能在 Pod 飘移到其它结点后重新装载而此最基础的机能性明确要求,让我一已经开始就把注意力放到了共享资源文件控制系统而此储存类别上。最已经开始选择了 Nfs,到后来又投入了 Glusterfs 的抱著,直到前段时间已经开始努力积极探索其它更快的云原生植物储存软件控制系统,而此路走过也让我对各式各样储存有了一定的了解。它们各自有着自己的特点:
Nfs:Nfs 是一类新贵的如前所述网络共享资源文件的储存软件控制系统。它的缺点是简单高效率。它的缺点也比较明显,伺服器端ECC,统计数据没有拷贝监督机制。在某些对安全性明确要求相对较低的情景下,Nfs依然是首要条件之选。Glusterfs:这是一类开放源码的分布式共享资源储存软件控制系统。相对于 Nfs 而言,Gfs 透过多复本拷贝集提升了统计数据的安全性,加进 Brick 的监督机制也让储存软件产业的扩充无须受制于两台伺服器。Gfs 曾一度是信雄在生产环境下的必选,透过将拷贝因子增设为 3 ,保障了统计数据的安全性的同时,又能够避免网络通讯下的统计数据脑裂的难题。充斥 Gfs 一起行进了很久之后,他们也发现了它在稀疏小文件随机存取情景下的操控性软肋。而且单个的共享资源文件控制系统类别的储存,也慢慢无须满足他们的使用情景需要。他们在寻找更最合适的储存而此道道马路上始终没有停止积极探索。这两年云原生植物概念新宠,街道社区中涌现出来各式各样云原生植物领域工程项目,其中也鲜有储存相关的工程项目。最已经开始,他们将注意力放到 Ceph 身上,它最吸引他们的是能提供高效率能的块设备类别储存。然而被其复杂的布署方式、较低的网络管理准入门槛曾一度扫地出门。而 CNCF 大学毕业工程项目 Rook 的出现,终于挖开了碰触 Ceph 的最后一道道准入门槛。
Rook 工程项目提供了一类云原生植物储存编排工具,为各式各样类别的储存提供平台级、框架级的支持,统管了储存软件的安装、网络管理。Rook 在 2018 年发布的 0.9 版本中,正式将 Ceph Operator 作为稳定支持的特性,迄今已经数年。使用 Rook 布署和管理生产等级的 Ceph 软件产业还是非常稳健的。
相对于 Gfs ,Rook-Ceph 提供了操控性极高的块设备类别储存,这相当于为 Pod 装载了一块硬盘,应对稀疏小文件随机存取情景并非难事。Rook-Ceph 除了能够提供块设备类别储存之外,也能如前所述 Cephfs 提供分布式控制系统共享资源储存,以及如前所述 S3 协议的对象储存。多种储存类别统一管理,并提供了可视化管理界面,对于网络管理人员非常友好。
作为 CNCF 大学毕业工程项目,Rook-Ceph 对云原生植物情景的支持毋庸置疑。布署完成的 Rook-Ceph 软件产业提供了 CSI 插件,以 StorageClass 的形式面向 Kubernetes 供应统计数据卷,对于兼容 CSI 规范的各类云原生植物 PaaS 平台也非常友好。
2. Rainbond与Rook的对接
在 Rainbond V5.7.0-release 版本中,添加了对 Kubernetes CSI 容器储存接口的支持。信雄如前所述而此新特性也已经开始针对 Rook-Ceph 进行了适配。
Rainbond 在安装布署阶段,就会引用 Cephfs 来布署默认为所有服务组件提供的共享资源储存。而对于有状态的服务组件而言,加进持久化储存时,能优先选择当前软件产业中所有可用的 StorageClass,透过优先选择rook-ceph-block即可申请块设备进行装载,全程图形化界面操作,十分方便。
如何布署 Rook-Ceph 并对接到 Rainbond 之中,请参考文档 Rook-Ceph 对接方案[1] 。
3. 使用体验
这个章节,我会以直观的方式,描述在 Rainbond 对接了 Rook-Ceph 储存之后的各式各样使用体验。
3.1 使用共享资源储存
Rainbond 在安装阶段透过指定参数来对接 Cephfs 作为软件产业共享资源储存。在使用 Helm 安装 Rainbond 的过程中,关键的对接参数如下:
—set Cluster.RWX.enable=true \ —setCluster.RWX.config.storageClassName=rook-cephfs \ —set Cluster.RWO.enable=true \ —set Cluster.RWO.storageClassName=rook-cephfs对于任意一个布署在 Rainbond 平台上的服务组件而言,仅需要在装载持久化储存时,优先选择默认的共享资源储存,即相当于将统计数据持久化的保存进了 Cephfs 文件控制系统中。
软件产业中使用组件英文名能过滤查询所生成的 PV 资源:
$ kubectl get pv |grep mysqlcephfs pvc-faa3e796-44cd-4aa0-b9c9-62fa0fbc8417 500Gi RWX Retain Bound guox-system/manual7-volume-mysqlcephfs-0 rainbondsssc 2m7s3.2 装载块设备
除了默认的共享资源储存之外,其它所有软件产业中的 StorageClass 都面向有状态服务开放。手动优先选择rook-ceph-block 即可创建块设备类别储存,并装载给 Pod 使用。当服务组件拥有多个实例时,每个 Pod 都会生成一个块设备装载使用。
查询所生成的 PV 资源:
$ kubectl get pv | grep mysql6-0 pvc-5172cb7a-cf5b-4770-afff-153c981ab09b 50Gi RWODelete Bound guox-system/manual6-app-a710316d-mysql6-0 rook-ceph-block 5h15m3.3 开启dashboard
Rook-Ceph 默认布署时安装了可视化操作界面 Ceph-dashboard。在这里能监控整个储存软件产业,也能如前所述图形化界面操作更改各式各样储存类别的配置。
修改 Ceph 软件产业配置,禁用 dashboard 内置 ssl:
$ kubectl -n rook-ceph edit cephcluster -n rook-ceph rook-ceph # 修改 ssl 为 false spec: dashboard: enabled: true ssl: false # 重启 operator 使配置生效 $ kubectl delete po -l app=rook-ceph-operator -n rook-ceph $ kubectl -n rook-ceph get service rook-ceph-mgr-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rook-ceph-mgr-dashboard ClusterIP 10.43.210.36 <none> 7000/TCP 118m访问到仪表板后,默认用户为admin
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath=”{[data][password]}” | base64 –decode && echo3.4 使用对象储存
请参考文档 Rook-Ceph 布署对接[2],能在 Rook-Ceph 中布署对象储存。只需要将对象储存的 service ClusterIP 透过第三方服务代理,他们就能得到一个能被同个控制台纳管的多个软件产业同时访问的对象储存地址。Rainbond 能如前所述而此特性,实现云端备份迁移功能。
$ kubectl -n rook-ceph get service rook-ceph-rgw-my-store NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rook-ceph-rgw-my-store ClusterIP 10.43.12.100 <none> 80/TCP 3h40m透过在企业增设中填写好事先在 Ceph-dashboard 中创建的对象储存 bucket、access-key、secret-key,即可对接好对象储存。
4. 操控性对比测试
他们利用 sysbench 工具,对使用了不同类别储存的 Mysql 进行了操控性测试,除统计数据目录装载了不同类别的储存,其它实验条件均一致。参与测试的储存类别包括 Glusterfs、Cephfs、Ceph-RBD 三种。
采集的统计数据为 sysbench 测试返回的每秒事务数(TPS)以及每秒请求数(QPS):
储存类别 Mysql 内存 QPS TPSGlusterfs 1G 4600.22 230.01Cephfs 1G 18095.08 904.74 Ceph-RBD 1G 24852.58 1242.62
测试结果显而易见,Ceph 块设备操控性最高,Cephfs 相对 Glusterfs 也有较明显的操控性优势。
5. 写在最后
适配 Kubernetes CSI 容器储存接口是 Rainbond v5.7.0-release 版本的一大特性,这个特性让他们能轻松对接 Rook-Ceph 而此优秀的储存软件控制系统。透过对 Rook-Ceph 的使用体验的描述以及最后的操控性测试对比,不得不说,Rook-Ceph 即将成为他们在云原生植物储存领域积极探索的一个主攻方向。
参考资料
[1]
Rook-Ceph 对接方案: https://www.rainbond.com/docs/ops-guide/storage/ceph-rbd
[2]
Rook-Ceph 对接方案: https://www.rainbond.com/docs/ops-guide/storage/ceph-rbd