XSKY推出SDS-Formation编排工具,实现部署XSKY SDS集群自动化

2020年09月 · XSKY

XSKY软件定义存储(SDS)产品中提供了多样的资源和配置选项,用于创建及定义各样存储资源,一般首先创建OSD、存储池及缓存分区等基础资源,然后根据不同需求使用基础资源来创建存储资源。

虽然XSKY SDS产品提供了完善的管理界面及多种编程语言版本的SDK进行资源管理操作,但集群初始化和资源创建的过程中还经常碰到以下问题:

微信图片_20200930155732.jpg

1、在集群规模较大时耗时长;

2、多样的选择人工操作比较容易出错,某个基础资源配置一旦出错则不得不将所有创建好的资源也都删除了重新操作;

3、一些用户会使用XSKY SDS SDK创建资源,但是使用SDK创建资源需要一定的研发投入,同时在对接多个SDS版本时还需要考虑版本间兼容问题。

为此,我们推出了SDS-Formation编排工具,从以下几个方面来解决上述问题:

自动化

SDS-Formation提供了一种通用语言来描述和预配置SDS产品的所有存储资源。用户可以通过编辑JSON格式的预配置资源编排文件,设置集群的配置参数,从而安装指定的模板,有序创建和更新存储集群中的相关资源,整个过程无需人工干涉;同时,由于免去了人工操作的成本,在大集群部署的情况下资源创建效率提升90%以上,而由于人为原因造成的出错几率也大大降低。

兼容性

对于使用管理接口或SDK初始化集群、创建存储资源的用户,SDS-Formation作为中间层来向SDS集群发送资源创建请求,用户使用时无需关心存储集群的版本、服务器架构,只需要维护一份Formation资源编排文件即可。

微信图片_20200930155738.png

可复用性

如果我们需要创建多个集群,且这些集群资源结构类似,只不过某些资源属性配置不同,此时如果还需要再重新写一遍Formation JSON文件指定各个资源创建规则,则显得有些多余。SDS-Formation支持将资源的属性值声明为变量,变量的值声明写在JSON文件开头,这样我们就可以复用已有资源编排文件,只修改变量部分的值来创建不同配置的集群。

01

整体框架

微信图片_20200930155742.png

SDS-Formation的工作框架示例如上图,在逻辑上SDS-Formation独立于存储集群(当然它也可以在集群内部运行),它的运行流程为:

读取输入的JSON并解析需要创建的资源信息 -> 连接SDS管理服务创建资源 -> 从SDS管理服务获取资源创建结果信息。

其中,输入的Formation的JSON文件中按照指定结构声明了集群及要创建资源的信息,SDS-Formation在解析输入JSON文件后自身作为SDS控制器的客户端按照指定流程创建资源,SDS-Formation与集群通信仅仅通过SDS管理面的HTTP服务完成。

02

Q&A

Q:

为什么使用JSON格式作为资源编排描述文件?

A:

JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,大部分的编程语言都有相应的库支持对其进行解析和生成,选取JSON作为资源编排描述文件格式其实是在人与机器间找到了一个平衡点,保证了在日常测试及小规模资源编排场景,可以人工编写调试而不会有太大难度;在大规模部署及自动化场景则可以通过简单的逻辑,由第三方程序生成而不需要投入过多精力关注程序编码逻辑与资源编排文件的转换。

Q:

安全性怎么样,会不会出现通过SDS-Formation将集群已有资源破坏掉的情况?

A:

SDS-Formation与SDS集群的交互仅通过管理面RESTful接口完成,所以SDS-Formation不仅可以在集群内运行,也可以在集群外部通过防火墙策略仅开放管理面RESTful接口访问,运行时不需要额外的集群节点访问权限,运维操作复杂度及风险都比较低,同时SDS-Formation仅可进行创建资源、读取资源元数据的操作,不会出现通过其删除资源的情况。

Q:

安装起来方便吗?

A:

SDS-Formation默认集成在SDS安装包中,在存储集群安装完成后就可在存储集群的节点上运行,同时我们也有单独发布版本,会及时发布一些先于版本发布周期的新功能,用户可以在SDS-Formation的仓库自行下载;SDS-Formation仅有一个单独的binary,使用时只要将binary复制到本地即可,不需要安装额外的依赖包,使用方便同时也可以很容易的集成到用户自己的服务中。

Q:

如果在SDS-Formation运行中出现网络故障导致运行了一半停止了怎么办?

A:

SDS-Formation会在与SDS控制器通信出错或资源编排文件资源声明错误时停止运行,由于是基于无状态的HTTP协议通信的,所以SDS-Formation本身添加了可重入功能,每创建一个资源都会在本地记录下来,在重启后,会接着最后创建的位置开始运行而无需重新执行所有资源创建操作;除此之外,用户在编写Formation资源编排文件时可能会出现某个参数设置错误导致失败的情况,此时依赖于可重入功能,在修正错误后再启动SDS-Formation,它重新运行时会接着上次中断的地方开始运行,这一点在调试资源编排文件时很实用。

微信图片_20200930160031.png

Q:

如果SDS-Formation是按照编排文件中声明的资源一个一个执行的,那我要创建10个除了名称不一样,其它配置都一样的资源岂不是要把同样的内容写10遍?

A:

如果要创建多个同类资源需要写大量重复的资源配置信息就会很冗余,因此SDS-Formation增加了模板资源功能,可以将同一类资源声明为资源模板,然后通过给模板传递不同参数来创建同一类资源,比如我需要创建5个存储桶,可以声明如下内容:

微信图片_20200930160055.png

然后使用如下资源声明即可创建5个桶,桶名为bucket1至bucket5:

微信图片_20200930160134.png

模板资源大大减少了资源编排描述文件的冗余程度和编辑成本。

03

案例实践

1、XSCALER一体机SDS-Formation实践

XSCALER一体机是XSKY洞察用户从传统存储向软件定义存储(SDS)转型过程中的痛点,将长期积累的部署和运维的最佳实践,以融合存储一体机为载体,帮助用户提升性能、降低成本、缩短业务上线时间的系列产品。

XSKY的SDS一体机产品首先要求的就是开箱即用,最大程度减少用户的操作成本,所以XSKY一体机在基础配置信息确认后,会生成SDS-Formation的资源编排文件并自动运行,创建用户需要的基础资源(管理面用户、存储池等),XSCALER一体机产品系列通过使用SDS-Formation工具将基础资源的创建自动化,增强了产品开箱即用特性的体验。

2、某云厂商SDS-Formation实践

XSKY的某云厂商合作伙伴需要向他们的客户按照一定规格提供SDS存储集群,由于集群的部署和存储资源的创建都需要自动化完成,所以合作伙伴需要在自己对应XSKY SDS SDK还是使用SDS-Formation来完成资源创建之间做选择;

最终合作伙伴选择了使用SDS-Formation作为资源创建的手段,通过在自己的服务中动态生成资源编排文件,在集群中调用该编排文件实现资源自动创建交付,通过集成SDS-Formation的方案,合作伙伴获得了如下便利:

– 生成资源编排文件逻辑相对简单,省去了对接XSKY SDK的研发成本;

– 多版本部署不需要根据集群版本来加载不同版本的XSKY SDK,一套逻辑可以对应部署多个版本的XSKY SDS集群;

– 部署XCBS云后端存储、XEOS对象存储等不同产品不需要分别做对接,只需要生成不同资源配置的编排文件,面向资源而不是面向产品,降低了合作伙伴自身系统的复杂度。

3、某客户测试环境SDS-Formation实践

XSKY某客户的测试环境部署了3套XSKY存储集群,在测试期间,客户每5天会清空一次集群数据来释放存储资源进行下一轮测试,之后客户再重新安装XSKY SDS, 并通过人工操作来创建与之前相同配置的存储资源:

– 这一过程每次清理重建资源耗时都在6小时以上;

– 在人工创建资源时,因为参数配置错误而导致资源规格与之前不一致时,导致重新测试。

客户在采用SDS-Formation编排工具后,获得以下收益:

– 测试环境资源的重新创建耗时从之前的6小时左右缩短为1小时左右;

– 在启动SDS-Formation后不再需要人工介入,资源创建过程完全自动化;

– 资源编排文件在第一次部署输出后,后续清理重建资源使用同一编排文件即可,无需额外修改,不再出现因配置错误而需要重新测试的情况。

04

项目仓库

项目仓库:https://github.com/xsky-storage/sds-formation

SDS-Formation每个季度末会发布新的版本,用户可以通过SDS-Formation仓库获取最新版SDS-Formation;除此,XSKY的客户在使用SDS-Formation遇到问题时可以在SDS-Formation仓库提issue,我们会通过GitHub issue来进行解答,同时客户有关于SDS-Formation的功能需求也可以通过提issue来反馈。