更多精彩内容,欢迎观看:
带你读《云上自动化运维宝典》——ECS省钱指南来啦!万字长文教你如何选择与业务形态最匹配的付费方式(2):https://developer.aliyun.com/article/1405382
2.创建ECS的各种方式及使用场景
1) 高效创建 ECS
很多用户在日常购买ECS的时候,都是通过PC端这种页面可视化的方式购买。这种方式确实比较直观,但它的问题就是会比较耗时,因为各种配置得挨个选择。
此外,也有一些用户是通过OpenAPI的方式购买,这种方式肯定效率会更高,但在我们集成OpenAPI的时候,会遇到很多问题。比如在本地调试API的时候,它的参数需要我们去阿里云官网的文档上挨个去看,具体需要传什么值,我们可能还需要去调其他的API才能查到,这样步骤就会非常繁琐,针对这些场景,阿里云其实是有提供一些产品来解决的,后面我们会展开讲解。
还有些用户不只是创建ECS那么简单,他们想要交付一整套的基础设施,那么就可以使用我们的资源编排ROS的产品来解决。另外我们也提供了一些OpenAPI最佳实践的代码,让用户可以开箱即用。
如果用户在线下的IDC环境/其他的云上有自己的服务器想要迁移到阿里云的ECS上,可以通过阿里云的服务器迁移中心 SMC,这款产品可以很方便的把线下IDC的服务器或者其他云的服务器迁移到阿里云的ECS上。
接下来做一个实践的演示,前段时间阿里云推出了全新的免费试用,支持了137款产品,这次的力度比以前更加大,且使用的时间也更长,覆盖的产品也更加广,大家可以去试用一下。
接下来演示一下PC端的购买页和移动端的购买页。首先介绍一下PC端的购买页,详细大家已经很熟悉了。我重点演示一下OpenAPI最佳实践代码、保存为ROS模板、启动模板等功能。
我已经提前登录了账号,可以直接到最后一步。分别介绍一下三个功能。
∙ 第一个功能是“保存为启动模板”,这个的意思是,将前面我们选择的配置保存为一个模板的ID,当你下次需要创建同类配置的ECS的时候,直接通过模板ID创建即可。
∙ 第二个功能是“生成OpenAPI最佳实践脚本”,它也是开箱即用的。把代码直接copy下来,然后集成到自己的代码环境中即可。
∙ 第三个功能是“保存为ROS的模板”,这个后面会做详细的讲解,这里就不展开介绍了。
下面介绍一下移动端的购买页。在用户外出没有带电脑的情况下,可以考虑使用这种方式做一些扩容等操作。
这是移动端的购买页,可以看到按量付费、包年包月、自定义镜像等等功能,包括密码也是支持的。但在移动端购买完之后并不能真正的解决业务的问题,比如在扩容的场景下,买完ECS还需要部署业务,然后做一些业务配置才能真正的提供服务。
下面演示一下在移动端如何做ECS的远程连接。首先找到阿里云的APP,然后选择下面的“运维”,再选择“云服务器ECS”,点击“…”,选择“Workbench远程连接”,就可以连接到我们的实例上,做一些业务配置、执行的命令、服务的启动等等操作了。
这样就可以形成了一个闭环,首先购买ECS,然后对ECS做一些配置提供服务,运维的操作也都是可以在移动端实现的。当然也不止新购买的ECS,存量的服务器也可以直接连接上来做配置。
另外,一些用户可能会遇到在本地集成OpenAPI的场景,如果不知道参数怎么填,可以使用阿里云的OpenAPI门户。下面演示一下:
这个工具不仅可以调用ECS的OpenAPI,也可以调用很多其他产品的API。大家在上图左侧可以很方便的检索到自己想要集成的API。
这里我提前设置好了这些参数,它自动就可以填进来了,可以直接在这里看到参数的名称以及对应的描述,相比本地直接集成,这里会更加的可视化,更加直观一点。而且安全组的ID、规格等等都是可以直接选的,不用挨个去拼接。此处需要提醒一下,我们在集成OpenAPI的时候,可以先在这里调试通过后再去集成,因为这样可以极大的提升开发效率。
除此之外,我们还提供Cloud Shell命令行的方式创建ECS。Cloud Shell会在远端起一台虚拟机,且这台虚拟机会事先配置好阿里云的命令行工具,不用自己再去安装了。相比本地安装这样的工具,可能会遇到很多环境的问题,这个的话在云端我们已经帮你安装好了,直接运行命令就可以了,而且有一个小时的免费使用期限。这个方式也是非常便捷的,喜欢命令行的同学可以直接在这里调试或者使用。
前面在演示PC页面的时候有一个功能叫“保存为启动模板”,即创建的时候指定一个模板ID就可以创建出来一个ECS。这里我们通过Cloud Shell的方式给大家演示一下:
可以看到已经创建出来一台阿里云ECS RunInstances,指定一个模板ID就可以了。如果我们觉得启动模板里,预先配置好的参数不满足我的需求,也可以去复写它。比如复写一下ECS RunInstances,随便填一个规格,然后它就报错了。因为规格是随便填的,这个规格并不存在,所以就报错了。这也是非常方便的一种创建ECS的方式,也能提升我们创建ECS的效率。
一些DevOps和运维的同学可能不只是想创建ECS这么简单,他想要交付整套的业务的架构。上图是我简化的业务架构,它部署了一个高可用的WordPress的博客,可以看到,它有两个不同的可用区来做高可用容灾。两台ECS连上一个数据库RDS。还有一个负载均衡分散流量到不同的后端服务器,前面通过公网EIP的方式去提供服务。如果ECS也有访问公网的需求,可以用NatGateway通过公网EIP访问。
那么如果整套架构我们都手动去创建,是非常耗时耗力的,而且创建到第三步的时候很可能就出问题了,我们需要重试或者把前面的回滚掉重新创建,反复操作会耗费很多人力,大概需要几个小时的时间才能完成。
我们有一个产品叫资源编排ROS,它是专门解决基础设施部署问题的。把这些资源和资源之间的依赖关系描述成一个JSON的模板的文件,然后把这个文件交给ROS,它就会自动化的帮我们创建整套架构。创建这样一套架大概只需要几分钟的时间就可以完成,所以它可以明显的提升部署的效率。
同时由于ROS支持回滚和删除,也就是说整个架构部署的时候,比如创建总共有五步,创建到第三步的时候失败了,它可以自动回滚到前面的几步,这样也提升了一些效率。此外,如果整套架构部署完成了,也测试完成了,我们不想用了,也可以使用ROS的删除功能,把整套架构全部删除掉。正是因为ROS有可回滚、可删除的特性,所以我们认为它可以节省成本,因为很显然自动化的删除可以提高资源删除的效率。
同时它还可以解决合规的问题,比如企业有多个业务部门,其中运维部门希望多个业务部门的架构是统一的,用的资源类型、安全组的端口等等都是比较标准的。但如果我们人为去要求这些业务部门他们不一定会遵守,所以我们通过ROS模板的方式把它规范起来,运维部门可以给业务部门统一的模版来统一进行管理。
下面重点介绍一下ROS的特点。
IaC(Infrastructure as Code)理念,它作为一个工具类的产品本身是免费的,但创建出来的资源是收费的。前面也讲解了它支持回滚和删除,那么它是怎么支持回滚的呢,这就讲到了ROS对于资源编排的定义。这个资源的定义是广义的,只要有创建、删除、查询的接口,我们就认为它可以是一个资源,再比如挂载网卡、卸载网卡,也可以定义为一个资源。
所以抽象的来看,我们只要有一个操作是支持逆向的,比如创建支持删除,挂载支持卸载,都可以认为是一个资源。正是因为ROS对资源的定义是支持逆向的,所以它自然而然就支持回滚和删除的能力。
资源编排,刚讲了资源接下来讲一下编排,编排是某一个资源依赖另一个资源。比如我们创建ECS其实是依赖VPC的,那么在ROS模板里就要声明一下,ECS这个资源是depends on VPC资源的。在ROS创建的时候,就会先去创建VPC再创建ECS。在回滚的时候也会先回滚ECS再去回滚VPC,或者在删除的时候先删除ECS再删除VPC。
ROS支持98个产品的474个资源,覆盖面是非常广的。它也不是一个新产品,2015年发布上线到现在已经发展很多年了,现在非常的成熟。
接下来演示一下用ROS模板的方式部署一套架构。模板具体的内容可以参考上图中最下面的链接,大家可以直接下载使用。
我已经事先把模板创建好了,下面就直接开始了。首先选择负载均衡的规格,已经默认选好了。然后选择两个可用区的配置,再给各个可用区的ECS选择一个规格。然后再选择数据库的规格,填写数据库的密码,最后点击创建,整个过程需要大概十分钟的时间。
2) 弹性创建 ECS
前面我为大家演示了,通过ECS的OpenAPI RunInstances创建ECS,这个API只支持指定一个规格,但我们有一些用户的场景对规格不是很敏感,也就是说我可以随意的指定多个规格,这样可以让创建实例的成功率更高。因为单个规格可能会遇到库存不足,Quota不足等问题。在这种情况下,有多规格诉求的时候,就可以使用一个叫做弹性供应的产品。
弹性供应不仅支持多规格,还支持多个可用区,交付ECS,他不仅支持像RunInstances一样一次性创建,支持持续保持的能力,这是弹性供应解决的其中的一个问题。
前面的同事讲解了抢占式实例,抢占式实例确实非常便宜,也非常诱人,对于用户来说是非常希望使用它的。但使用的时候也会有一些成本,因为抢占式实例在持有一小时后会随时被系统回收。回收的时候系统会发送一个消息出来,我们如果想要真正的使用抢占式实例,就需要对接这个消息,当我收到实例被回收的消息的时候,再去创建一台新的出来。弹性供应自动化的帮大家解决了这个问题,即不用我们自己去对接了,它的系统内部已经帮我们对接好了。比如用弹性供应交付了10台ECS,其中一台被系统回收了,它可以自动的创建一台新的抢占式实例出来。
这里就涉及到了弹性供应的供应策略,它在供应资源的时候有一些策略可以供我们选择。比如选择抢占式实例里释放率最低的规格,以免实例被频繁释放,再重新创建的问题,本质上就是算力集群比较稳定的一种策略。
此外,它还支持多可用区均衡容灾的策略,也支持成本最优的策略,比如我从抢占式实例里最便宜的开始创建依次选择,达到成本最优的一种供应策略,当然也支持自定义优先级的供应策略。
总结来看,弹性供应就是为了解决批量大规模交付ECS算力集群业务的场景,大家有这种诉求的时候就可以考虑使用弹性供应这个产品。
作为一个企业,它的一些业务变化可能是有规律的,比如这个企业每周五都会有一个活动,在活动开始的时候,我需要动态的增加ECS,在活动结束的时候,再把ECS减掉。但也有一些是没有规律的,CPU突然高了,这个时候我就需要根据CPU的使用率来增加ECS。这些场景都可以用阿里云的弹性伸缩很好的解决。
刚讲完弹性供应,那么弹性伸缩和弹性供应有什么区别呢?
弹性供应主要是交付一个算力集群,而弹性伸缩可以根据用户的业务来配合弹性的增加ECS,包括CPU利用率通过云监控的监控来集成,比如当CPU的使用率大于80%的时候增加ECS等等。
弹性伸缩不只可以支持定时的,它还支持动态预测模式。根据过去1-14天CPU的使用率,以及内网出入流量等等,通过机器学习算法的方式,帮大家预测未来需要的资源的量,自动的扩容和缩容。
接下来演示一下,当服务的CPU大于80%的时候,弹性是否会增加一台ECS。可以看到刚才通过资源编排创建的一套架构已经交付好了。我们可以去ECS看一下它的资源,可以看到有两台新的ECS已经创建出来的,是高可用的那两台ECS。我们连接上去把这两台ECS的CPU打到80%以上,看一下弹性伸缩是否会真正的弹性的增加一台服务器进来。
然后我们先远程连接,这里介绍一下有一个叫会话管理远程连接,它可以实现免密登录,是更加方便快捷的。我们复制一下事先准备好的命令,把这两台ECS的CPU打高。然后去看一下弹性伸缩的报警情况,现在显示报警任务配置是CPU的平均使用率连续一次,大于80%的时候就会弹性增加ECS。
然后我们再看一下监控的情况,平均值是47%不到,检测需要大于80%的时候才会去弹,所以还需要等待一点时间。现在可以看到已经报警了,CPU平均的使用率已经达到了90%,同时也能看到已经增加了一台ECS。
但只增加ECS是不够的,因为扩容服务器一定需要做业务的配置、代码的部署、服务的启动等工作,这个问题在弹性伸缩上有一个叫“生命周期挂钩”的功能可以解决。这个的意思是我们在创建完ECS的时候,可以针对这台ECS做一些配置,这里挂钩其中一个动作我们使用了OOS的模板,在这个模板里又去执行了一些命令。这些命令是通过ECS的云助手下发下去的,这样就可以把业务的配置都执行一下,启动起来了。
3) 高确定性创建 ECS
我们假设有一个场景,比如我今天晚上9点想升级集群,或者我之前测试好的东西需要部署到线上,这种情况我需要在9点的时候买一批资源。但买这些资源我又担心会有库存或者Quota的问题买不出来。而系统升级是非常严肃的事情,如果创建不出来,对业务的影响是非常大的。
大家通常想到的解决方案是,9点上线的话,我8点的时候提前创建出一台ECS不就好了,这确实是一种解决方案,但这不是最经济的。
我们有一种更经济的解决方案叫做容量预定,也就是在8点的时候创建一个容量预定出来,容量预定只收取计算的费用,所以到9点把ECS创建出来的时候才开始收ECS的存储、网络等费用。在8点-9点之间,只收取计算费用,当然9点以后也不会收取双份的费用。这样就达到了节省成本的目的,同时它还能满足在9点的时候100%成功创建ECS。
为什么能100%成功呢?这是因为在8点买了容量预定的时候,你就把库存资源锁定了,当在9点创建ECS的时候指定容量预定,就可以100%成功。使用容量预定需要注意,预定的时间不要过长,因为预定的这段时间也是收取费用的,而这段时间又没有真实使用资源,时间过长就会存在浪费的情况。
此外,它也可以适用于混部的场景,比如白天跑的是在线业务,晚上跑的是离线业务,这种情况就可以买一个容量预定,确保离线和在线业务都使用相同的资源池来保证我的确定性。这样我就不用担心白天用完资源释放掉以后,晚上创建ECS的时候因为库存原因创建不出来,通过容量预定这个产品就可以很好的这个解决问题。
所以,当大家有一些确定性的保障的时候,比如资源轮转、升级,混步、集群部署等等,对确定性需求非常强的时候,我们就可以考虑使用容量预定这个产品。
最后简单对今天的分享做一个总结。
第一部分,高效创建ECS。首先分享了高效创建ECS的方式,包括PC端、移动端,移动端还可以远程连接ECS。其次分享了启动模板、OpenAPI门户、Cloud Shell等工具,方便大家在集成OpenAPI的时候,通过这些工具提升效率。最后演示了通过资源编排ROS的方式交付一整套的基础设施架构。
第二部分,弹性创建ECS。当我们有批量大规模交付 ECS 算力集群需求的时候,或者觉得抢占式实例的使用成本太高的时候,可以考虑使用阿里云的弹性供应。当我们有定时/动态弹性创建 ECS,或者需要根据报警的监控指标,比如CPU的使用率、内存使用率、带宽的使用率等等,去动态的增加ECS或减少ECS的时候,可以考虑使用阿里云的弹性伸缩。
第三部分,高确定性创建 ECS。当我们对ECS确定性有需求的时候,尤其是在资源轮转,升级稳步等业务场景的时候,可以考虑使用阿里云的容量预定来解决问题。
以上就是本节课程的全部内容,同时欢迎大家点击链接进入【CloudOps云上运维】课程官网,了解最新课程资讯!