减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
在日常工作中,我们一定遇到过需要快速构建系统的工作情形:
- 作为资源管理人员,需要接收一定数量以及配置的资源申请,这些申请要求网络、存储设备按需到位;
- 作为开发人员,需要将一套开发环境,复制一份测试环境以及线上环境;
- 架构师规划一套系统,需要在云上进行搭建。
这些场景都展现着我们日常所遇的各种困难:
- 对各类云端资源需要进行广泛支持与管理:这其中需要包括常用基础IaaS 资源及 PaaS 服务,比如主机、路由器、负载均衡器等计算网络资源以及各种数据库、缓存、大数据、存储服务;
- 资源编排使用难度大:技术栈复杂而难用,实现复杂拓扑关系需要系统化知识与丰富经验;
- 大量机械重复的手动配置操作:不仅是各资源及其拓扑关系按配置进行手工部署,各资源间的拓扑关系更是令人头疼;
- 学习成本高:过往的资源管理依赖于通过命令行调用API 的方式,提升了操作难度和学习成本。
由此可见,自动化运维成了运维人员的业务刚需,各大云厂商也相继推出各自的资源编排服务(Resource Orchestration,以下简称 ROS)。ROS 的理念是“基础设施即代码”,一方面是用代码思维的版本管理来记录基础设施变化,另一方面通过代码实现自动化运维,简化编写代码复杂度,用户通过使用 Json / Yaml 格式模版描述多个云计算资源(如 ECS、RDS、SLB)的配置、依赖关系等,并自动完成所有云资源在多个不同地域以及多个账户中的部署和配置,就像乐高积木一般,运维人员轻松完成搭建。
经过多次调研后,我们发现针对于云服务器最多的场景是基于云服务器“此刻的状态”再创建 1-N 台云服务器,新创建的云服务器系统盘和数据盘都是“此刻的状态”。我们以一个网站服务为例,一般运维工程师会在系统盘或数据盘中安装一些应用,如:Tomcat、Jenkins、MySql、网站自身的数据/文件等等。如果需要再创建一台云服务器与目前已有云服务器的系统或数据状态保持一致,可以将系统盘做成自定义镜像,数据盘做成快照,然后再新购买云服务器时镜像选择该自定义镜像,数据盘的快照选择该快照,安全组的规则配置与原云服务器一致的规则,就可以创建一台基于原云服务器“此刻状态”的新云服务器。
如果只需创建这一台云服务器且不需要记录历史状态,上述方法是比较合适的。
但实际情况远远比这复杂得多,比如可能会频繁创建/释放云服务器;或者生成镜像的操作人员与购买云服务器的人员不是同一个人,一但购买选项没有选正确,新购的这台云服务器就不能投入业务中,按量计费的需要再释放,包年包月的需要等到到期释放或者做数据迁移,势必带来成本损失;想记录或跟踪云服务器的历史演变,如安全组配置变化、基础镜像等信息,也需要单独记录。
面对上述问题,运维人员使用 ROS 的模板作为交付物,将资源固定参数在模板资源中定义,将可变参数在模板参数中定义,方便运行时输入实际参数。这样在频繁创建云服务器时,只需要输入可变参数中的内容即可,如镜像 ID、快照 ID,或者克隆原云服务器,或者没有可变参数,将所有定义都在资源中描述,根据实际业务要求进行模板编写。模板也可以存放在 Github 中,可以像管理代码一样跟踪模板历史,也可以基于模板之上创建适合于企业内部的运维工具,实现自动化运维,以“基础设施即代码”的理念代替“重复劳动”。
我们可以看到 ROS 的强大特性:
- 可读、易编写的文本文件:运维人员可以直接编辑 JSON 格式文本,或使用 ROS 控制台提供的可视化编辑器编辑模板。通过 SVN、Git 等版本控制工具控制模板版本,以达到控制基础设施版本目的。也可通过 API、SDK 等方式将 ROS 的编排能力与自己的应用进行整合,实现基础设施即代码(Infrastructure as Code);
- 标准化的资源和应用交付方式:独立软件供应商(ISV)可以通过 ROS 模板交付包含云资源和应用的整体系统和解决方案。ISV 可以通过这种交付方式,整合阿里云的资源和 ISV 的软件系统,实现统一交付;
- 通过资源栈(Stack)统一管理一组云资源(一个资源栈即为一组阿里云资源):对于云资源创建、删除、克隆等操作,以资源栈为单位来完成。在 DevOps 实践中,可以使用 ROS 克隆开发环境、测试环境和线上环境,实现应用的整体迁移、扩容。
在了解 ROS 的强大后,我们就在日常使用过程中会创建各种数量的 ROS 模板。这也就造成了我们在日常的运维管理中,需要更便捷的工具对模板进行管理。为了更好的管理本地与云端的 ROS 模版,我们上线了 Alibaba Cloud Toolkit - Alibaba ROS Templates,通过一个资源配置文件(.ros.config.yml),协助用户对模板文件进行管理操作。
说明:.ros.config.yml 文件是 Alibaba ROS Templates 工具用于管理模板的源文件。
第一步:在 IntelliJ IDEA 中打开您的工程。
第二步:创建模板,有以下两种创建方式:
- 在 IntelliJ IDEA 中右键单击您的工程名称,选择 New > AlibabaCloud ROS YAML Template 或选择 New > AlibabaCloud ROS JSON Template。
注意:使用这种方式创建的模板不会被 Alibaba ROS Templates 工具管理。如需使用模板工具管理,则需要在 .ros.config.yml 文件中增加模板路径,并将模板移动至 JSON 和 YAML 文件夹下。
- 打开 IntelliJ IDEA 右边框 Alibaba ROS Templates 工具,单击 Create,输入模板的名称,选择模板的类型,创建本地模板。
第三步:在 Resources 参数中输入资源类型。
- AlibabaCloud ROS YAML Template 示例
- AlibabaCloud ROS JSON Template 示例
第四步:说明 Ctrl+ 鼠标左键可实现参数位置与参数之间的跳转, 使用 Ctrl+ 鼠标悬浮可实现参数的悬浮信息。模板管理功能操作说明如下表所示:
右键单击本地模板,可根据需求进行操作:
功能操作说明如下:
- Upload:上传模板
- Rename:重命名模板名称
- Delete:删除本地模板
右键单击远端模板,可根据需求进行操作:
功能操作说明如下:
- Download:下载模板
- Properties:查看模板属性信息
- Delete:删除远端模板
说明双击远端模板,默认会打开一个临时文件,右键菜单选择 Alibaba Cloud ROS > Update Template,显示对比远端模板修改情况,可更新远端模板。
资源栈管理
Alibaba Cloud Toolkit - Alibaba Cloud ROS (Alibaba Cloud View)是一个用于管理阿里云资源编排产品(ROS)资源栈的工具,能帮助您便捷地管理远端资源栈。
- 在 IntelliJ IDEA 中打开您的工程;
- 在 IntelliJ IDEA 窗口中选择 Alibaba Cloud View > Alibaba Cloud ROS,可根据您的需求进行相关操作。
资源栈管理功能操作说明如下表所示:
- Resources:显示该资源栈内的所有资源信息
- Parameters:显示该资源栈的参数信息
关于 Cloud Toolkit
作为集开发、测试、诊断、部署为一体的免费本地多 IDE 插件,Cloud Toolkit 帮助开发者真正实现任意服务器或 ECS、EDAS、Kubernetes、SAE、函数计算等一键式研发部署,支持 Java 规约、高效执行终端命令和 SQL 等常见工具,研发速度提升 8 倍以上,大幅降低研发成本。
产品完全免费并覆盖 IntelliJ IDEA、Eclipse、Pycharm、Maven、VS Code 等不同 IDE 环境。持续更新+社群支持,确保开发者放心使用,真正做到研发团队降本提效。
对应下载传送门
- IntelliJ 、PyCharm、PhpStorm:https://developer.aliyun.com/article/687264
- Eclipse:https://developer.aliyun.com/article/673562
- Visual Studio Code :https://marketplace.visualstudio.com/items?spm=5176.11997469.1283546..7a8f4e2bIgRa0P&itemName=alibabacloud-cloudtoolkit.toolkit-vscode&ssr=false#overview
附产品使用文档:https://help.aliyun.com/document_detail/29968.html
首届云原生微服务大会
首届云原生微服务大会 PC 端地址:https://developer.aliyun.com/topic/microservices2020#/
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
我在阿里写代码学会的六件事
写了多年的代码,始终觉得如何写出干净优雅的代码并不是一件容易的事情。按 10000 小时刻意训练的定理,假设每天 8 小时,一个月 20 天,一年 12 个月,大概也需要 5 年左右的时间成为大师。其实我们每天的工作中真正用于写代码的时间不可能有 8 个小时,并且很多时候是在完成任务,在业务压力很大的时候,可能想要达到的目标是如何尽快的使得功能 work 起来,代码是否干净优雅非常可能没有能放在第一优先级上,而是怎么快怎么来。 在这样的情况下是非常容易欠下技术债的,时间长了,这样的代码基本上无法维护,只能推倒重来,这个成本是非常高的。欠债要还,只是迟早的问题,并且等到要还的时候还要赔上额外的不菲的利息。还债的有可能是自己,也有可能是后来的继任者,但都是团队在还债。所以从团队的角度来看,写好代码是一件非常有必要的事情。如何写出干净优雅的代码是个很困难的课题,我没有找到万能的 solution,更多的是一些 trade off,可以稍微讨论一下。 代码是写给人看的还是写给机器看的? 在大部分的情况下我会认为代码是写给人看的。虽然代码最后的执行者是机器,但是实际上代码更多的时候是给人看的。我...
- 下一篇
为什么下一个十年的主战场在Serverless | 云原生Talk
造梦者 | 不瞋,阿里云 Serverless 负责人 "唯有超越,才能让我们走下去。" 这是不瞋在阿里的第十年。从2010 年加入阿里云,不瞋参与了阿里云飞天分布式系统的研发,历任批量计算的架构师、表格存储(NoSQL)研发经理,深度参与了阿里云系统研发和产品迭代的全过程。2016 年不瞋成为阿里云函数计算产品研发负责人,致力于构建下一代弹性、高可用的无服务器计算平台。 无服务器(Serverless)是不瞋下一个十年要攻克的技术难题。在这波 Serverless 浪潮里,阿里云一直走在最前面,无论是技术还是产品,在国内的丰富度都是第一。“从不敢掉以轻心,Serverless 在国内还处于早期阶段,只有把技术和产品打磨成熟,让用户体验做到更好,这一战才算胜利。” 我们对不瞋做了一个简单的采访,针对大家比较关心的 Serverless 发展、技术难点以及落地情况,听听他的想法。 接受还是观望? 云计算未来一定会成为整个社会和商业的基础设施,届时使用云计算就应该像现在我们使用水电煤一样简单,不需要了解水从哪里来、怎么过滤、怎么铺设管道等一系列问题,只需要打开水龙头接一杯水而已。而 Ser...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- 2048小游戏-低调大师作品
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)