今天和大家分享的话题是如何利用青云资源编排服务快速创建批量资源组合、规划和构建系统,同时谈谈资源编排如何帮助我们复制一整套IT环境,以及如何实现跨区做相同架构资源的拷贝。
资源编排到底是什么呢?
大家知道云服务本质上是做 IT 架构软件化和 IT 平台智能化的工作。
传统方式我们构建一个系统,不管是做医疗、教育还是金融、媒体等等,最上层需要部署自身的业务代码;
中间层是业务依赖的专业软件、平台中间件、服务组件等;
下层是部署的硬件系统,包括计算节点、存储资源、网络,然后安装操作系统等等。
中下两层是运维层面的内容,用传统的IT 架构方式,企业可能需要很多工程师,包括在现场做苦活、累活、脏活的现场运维、开发工程师。
因为有些操作需要去啃硬件的使用手册、了解主板芯片接口、路由器指令等等。
云服务提供的智能化是把每一层都用软件的方式实现,以标准化接口的方式提供,这样很多苦活、累活都不用做了。
软件的灵活调度特性能够在 IaaS 层解决硬件的容错问题, PaaS 层的标准组件能够省却 DevOps 搭建中间件需要考虑和维护的集群化、动态控制节点规模、备份、容灾等问题。
很多人都已经在使用云计算服务了,还有很多人没有选择上云。
他们的区别在于你是否相信,云服务提供的 IaaS/PaaS 服务能够满足企业的要求,它是否具有稳定性、安全性、弹性以及足够的性能等等。
下面我们来说资源编排。
资源编排在哪一层呢?我们一般说的编排,包括资源编排、服务编排,后者是业务层面、应用层面的编排,以前者为基础。
资源编排是在 IaaS 层之上的构建层,称为 Resource Orchestration。它是在 IaaS 平台之上构建系统,并且对这个系统进行生命周期管理。
资源编排需要具备抽象建模能力:每类云资源有不同的设备,如主机、路由器、负载均衡器、大数据等组件,你需要对它进行抽象建模——需要哪些资源,并且资源之间的拓扑关系是怎样的;
然后你能够对它的生命周期进行管理,如何从无到有进行创建,之后资源之间要能够更新、增加、减少,如何操作。
具体来说资源编排具备的能力有几点:
一是能否对现有资源做抽象、能够按照我们定义好的模板规范建模;
二是基于模板把资源实例化出来,成为一整套具有独立性的资源,并能对资源的属性、原数据进行增删、查改、回收等操作。
资源编排能做什么?
概念是抽象的,我们看看具体能做什么事情。
青云QingCloud 的云服务是想构建一个生态圈的概念,我们底层有 IaaS 、 Technical PaaS 。
线下交流时有人问,能否在青云平台上面提供 Hadoop 服务让他们的用户去使用?当然可以,你可以利用现有的 IaaS 和 PaaS 的 API 接口来做。
要完成这个任务,通过传统方式来做,需要对整个 Hadoop 集群所依赖的资源,比如路由器、私有网络、主机、镜像、硬盘、公网 IP 等等,有一个拓扑概念和配置规划,然后决定先后顺序,调用 API 来完成这个搭建任务。
使用资源编排来做的话,只需给这个任务的配置做一个描述、生成模板,即可一次性地创建出来。
这对我们合作伙伴或是在这青云QingCloud 上提供服务的独立开发者来说是非常方便的。
只要将提供服务所需要的资源组合配置为模板,调用一次 API 即可生成资源。
如果不是作为应用提供者,我们列举一些使用场景。
第一种场景是利用云平台做资源申请审批管理。
我们有些传统客户,他的主账号是作为资源审批者,是管理部门;子账号作为资源申请和使用者,是业务部门。
每次需要资源时,业务部门要先向管理部门申请。申请的时候以业务为单位,按业务类型和规模来申请。
比如要做内部开发系统、WEB 系统等等。每种业务系统其实是有类似的资源配置和组合的,只是规模大小有所不同。
这种场景,管理者可以先预定几套资源编排配置模板,或者写一个实时生成业务模板的逻辑,接收规模、配置等作为参数。这样不论是需要主机、数据库、 Hadoop,需要资源组网、VPN 登录,这些分散的资源可以组合整理出来,一次性生成。
第二种场景是多套环境的复制。
比如说开发初期只有一个小的开发环境,上线后要做测试、部署 Staging 环境以及线上环境。
每套环境对小规模系统来说,重建一套比较简单。如果资源很多规模很大的话怎么办?运维工程师要做很复杂的工作,会很累。
资源编排有抽象能力的话,可以把现有的资源、拓扑关系和背景全部抽取出来,利用这套模板快速生成资源,原本需要大半天的时间,现在只需要十几分钟就可以搞定了。
第三种场景,没有在云上使用任何资源,但你想规划现在的 IT 系统。
这种场景通常知道大概要上线的服务需要多少台主机资源、数据库资源,但并不知道他们之间应该如何通过网络连接、如何挂载附加资源,不知道它的价格是多少,不知道横向扩展时如何核算成本。
你可以使用资源编排功能,先架构系统,看看它能否满足你的要求,包括物理性能和配置,再看看价格预算是否在你接受的范围内。
第四种场景,跨区的备份和部署。
如果大家在使用我们资源的时候可能会碰到一种情况:我们有不同区域的机房,实体资源都在具体机房里。
如果在广东 1 区有了一套系统,想要在两地部署,北京 2 区复制一份这样的结构,相同资源组合必须在北京 2 区生成并连接、组合起来。
利用资源编排的话,广东 1 区的资源可以提取成全局唯一的抽象模板,然后我们在新区域应用这个模板即可。
尝试过资源编排的同学,可能觉得它就只是资源配置,其实里面的事情还是挺复杂的。资源之间的关系、约束能否真正实例化、能否管理,这有很多工作。
首先我们会有抽象化的过程:有哪些资源,他们的关系如何,如何定义他们的约束;其次把它具体化形成一个个实体,包括路由器、数据库、缓存等等,把这些实体所具备的配置、关联,比如硬盘、网络等等,作为它的属性建模;最后把拓扑结构实例化出来,真正形成资源。
开放的 API
我们每次发布服务都会提供相应的 API,把 API 直接暴露出来提供给用户。
因为在云上使用服务的用户,有的偏技术一些,利用云平台要做很多事情,包括我们的合作伙伴在上面构建系统,需要用 API 做编程,用软件形成快速部署;
另一种是终端用户,通过控制台,更喜欢用图形化的操作方式。
资源编排 API 主要分为三类,一是 TopologyTemplate 相关 API,完成拓扑模板的维护,即增删查改,还有配置、定义等等;
二是 Topology 实例化,把资源真正的批量创建出来;
三是检查配置是否合法,能否满足配额,能否建立起资源。
资源编排怎么用呢?
说了这么多,资源编排怎么用呢?在控制台上,资源编排可以使用图形化的操作来创建模板。
我们在建立模板时提供了 4 种方法:以系统推荐模板作为样本创建、从当前的资源抽取拓扑结构创建、从无到有手动创建,以及将已经创建的模板作为样本创建。
如果您对青云平台还不太熟悉,或者对业务的资源需求不太了解,可以先从系统推荐的模板开始创建。
这里系统推荐了几种常见业务所需要的青云平台资源配置以及资源间的关系。
比如简单的 Linux 主机集群、公网负载均衡器的入口集群、数据库和缓存的集群、大数据集群等等。
点击不同的模板,可以预览它的拓扑关系,并查看每一种资源的基本配置,还可以查看到这个组合的资源价格。这里的推荐模板是我们初始提供的,根据用户的反馈和实际使用情况,我们会给出更多常见和入门的配置。
如果希望抽取当前的资源的属性作为配置,并进一步复制出资源,可以从当前资源抽取模板。
抽取的对象是用户名下的实体资源,如主机、路由器 / VPC、负载均衡器、共享存储、数据库和大数据平台等。
硬盘、公网 IP、防火墙这些附属资源不能单独选择,而是作为实体资源的关联资源提取出来。
提取之后,可以继续对该模板进行编辑,不影响被提取的资源。
资源编排的模板是跨区域共享的,用户可以从某个区域的资源抽取一份模板,并将其在其他区域应用生成编排,就实现了跨区域复制资源结构。
若模板依赖的资源,例如自有映像在新区域不存在,可以先迁移映像。
在熟悉资源编排功能之后,手动创建模板是最常用的创建方式。
在这里可以根据构想的资源组合,从无到有生成资源以及资源之间的关系。
资源的组合遵循实际依赖关系,如私有网络必须挂载在路由器 / VPC 内,硬盘必须挂载在主机或 Virtual SAN / VNAS 下,公网 IP 只能绑定到主机、路由器 / VPC 或负载均衡器等。
对创建好的模板可以修改基本属性,以及删除操作。还可以基于该模板继续创建新模板。
在模板列表右键,或详情页左侧信息区右上角操作列表,可以找到该按钮。点击该按钮,会进入模板编辑页面,并将模板的配置导入当前编辑的模板中。
模板编辑界面分为3个区域:选择区、绘图区、配置区,分别提供了资源选取、拓扑编辑、配置编辑的功能。
资源支持几乎所有的 IaaS/PaaS 资源和组件,用拖动的方式可以拖拽到绘图区。
绘图区现实当前模板的拓扑结构,可以添加、删除、复制资源、缩放拖拽绘布、刷新、清空、查看价格等;
配置区可以看到选中资源的配置,并对它进行修改。模板资源之间的关系如端口转发、负载均衡器后端等,通过提取配置,可以直接显示在图中。
创建好的模板,在编排模板列表中可以看到。
可以查看模板的结构,基于模板新建,或者应用模板生成具有相同配置的一整套资源。
应用模板之后,系统开始按依赖关系创建资源。创建的过程,可以控制台右上角的实时任务中看到。
如果资源较多,或者有层次和依赖关系,可能需要数分钟或更多的时间,请耐心等待。
创建资源时如果配额不足、余额不足或其他原因导致的失败,整个创建过程回滚,阶段性创建的资源也会回收。
以上是我们对资源编排的定义、作用、接口和控制台功能做的介绍。
开始提到的服务编排的功能,后续我们会基于资源编排去提供。
另外,编排出的资源,对于用户可以是一个业务视图,这些视图会提供新的展示方式和更丰富的图形化交互,以便不同的用户方便管理自己的资源和业务。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。