CloudOps云上运维系列课程,第二节由阿里云弹性计算技术专家蒋超和樊毅伟主讲,课程涵盖:合适的付费方式选择、合适的资源规格选择、如何提升资源利用率、如何高效并弹性创建ECS、如何高确定性创建ECS等相关内容。
1. 云上成本优化:ECS付费方式与资源规格选购
云计算诞生至今已经有十余年的时间了,十余年间,企业从上云、用云、到了如今深度用云的新阶段。随着深入用云,企业云上支出总体也在高速增长,根据Flexera发布的2023年云现状调查报告,云成本管理首次取代了安全性话题,成为目前云使用者面临的首要问题。82%的受访者谈及目前最大的挑战是管理云计算支出,其中有71%的重度云用户将优先考虑优化云的现有使用情况,以降低云资源的使用成本。
云的成本管控主要围绕计费、用法、用量三大要素展开,接下来我也将从这三个方面介绍云上成本优化的方法。
在计费层面,我将介绍ECS提供了哪些付费方式和抵扣类产品,怎样根据业务场景选择合理的付费方式和抵扣类产品打造成本最优。
在用法层面,我将介绍阿里云弹性计算当前的资源规格,以及怎样根据业务场景选取合适的资源规格。
在用量层面,我将介绍怎样提升资源利用率的方法。
1.1 选取合适的付费方式
谈到付费方式,我们通常关注经济性、灵活性、确定性这三者的平衡。弹性计算的资源交付有三种基本的付费方式,按量付费、包年包月、抢占式实例。
∙ 按量付费,具有最好的灵活性,因为可以随时创建和释放,根据使用时长按秒计费,但它的经济性相对较差,在单位周期内的价格是最高的。
∙ 包年包月,通过预付费用锁定一段时间的资源,它具有很好的确定性。在购买时长内,资源是完全属于用户的。经济性相比按量付费也有较大优势,购买时长越长,获得的折扣越大。但包年包月的灵活性很差,大量包年包月实例生命周期的维护也相对复杂。
∙ 抢占式实例,它拥有最好的经济性和不错的灵活性,但它的确定性较差,可能面临资源被强制释放的风险。但是当适当的业务场景下,使用抢占式实例可以极大的降低成本。
对于按量付费实例,我们可以通过购买预留实例券或者节省计划,来提升按量付费实例的经济性。还可以购买容量预定来提升按量付费实例的确定性,以确保我们在需要的时候可以开出来对应数量的资源。
下面我将分别讲述在付费方式方面进行成本优化常用的三种方法。
成本优化的第一种方式,抢占式实例。
它是一种按需实例,相比于按量付费最高可以节省90%的成本,具有非常大的价格优势。而抢占式实例的局限在于生命周期的不确定性,抢占式实例的生命周期与市场价格、库存资源强相关。抢占式实例创建后默认有一个小时的保护期,超过保护期后每五分钟会检测一次实例规格的实时市场价格和库存。如果某一时刻的市场价格高于出价,或者实例规格库存不足,抢占式实例就会被释放。
因为抢占式实例生命周期的不确定性,所以抢占式实例有着非常明确的应用场景,那就是适用于无状态任务型的业务场景。应用的分布度、可扩展性和容错能力越高,使用抢占式实例就越节省成本和提升吞吐量。典型的场景比如数据分析、科学计算、图像渲染等等。如果是有状态的应用或者是不能接受中断的应用,就不适合使用抢占式实例了。
成本优化的第二种方式,预留实例券。它是一种具有特定属性的抵扣券,可以对满足匹配条件的按量实例账单进行抵扣。相比于按量付费,预留实例券可以大幅降低按量实例的成本。可用区级的预留实例券还可以为按量实例提供资源预留,相比于包年包月,预留实例券+按量付费的组合可以兼顾灵活性和成本。
此外,预留实例券+按量付费的组合还可以简化包年包月的生命周期管理工作。比如我们通常分批采买资源,如果采用包年包月,每一批实例的到期时间都不相同,就需要我们去维护这些实例的生命周期。如果到期忘记续费,就可能造成机器停服。
使用预留实例券+按量付费,我们就不需要维护实例的生命周期,需要的时候就开通,不需要就释放。只需要维护预留实例券的生命周期就可以了,并且即使预留实例券到期没有续费也不会造成实例的停服,只是对应的实例会继续出按量的账单。
预留实例券支持跨UI折扣共享,支持资源在多账号下统一采买管理。我们借助于用户中心的企业财务功能,在建立了财务托管关系后,可以通过主账号来购买预留实例券,各个子账号来去开通付费资源,这些按量付费资源可以共享主账号中的预留实例券用于账单抵扣。
预留实例券支持0预付、部分预付、全预付三种付费选择,降低资金压力。
∙ 全预付,指购买的时候一次性的付清所有的费用,它享有最高的折扣力度。
∙ 部分预付,指购买的时候付50%的总价费用,剩下的费用平摊到每个小时出账。
∙ 零预付,指下单的时候不用支付任何费用,所有的费用全部分摊到每个小时出账。
预留实例券有两种类型,分别是地域级预留实例券和可用区级预留实例券。
地域级预留实例券具有更大的灵活性,它支持同规格下不同大小规格的自动匹配,在指定实例规格中,可以用小规格券匹配大规格实例,也可以用大规格券匹配小规格实例。比如我购买了g7.xlarge的预留实例券来匹配对应规格的按量付费实例。当我的按量实例分配到g7.2xlarge后,地域级的预留实例券无需任何操作,就可以直接抵扣一半的按量付费账单。
此外,地域级的预留实例券还支持跨可用区的抵扣。当我们的按量资源分属不同可用区的情况,也可以使用同一种地域级预留实例券来进行抵扣。
可用区级的预留实例券要求和按量付费实例的可用区实例规格,操纵系统平台完全匹配。灵活性相比地域级预留实例券较差一些,但它支持底层资源预留,可以提升创建后付费资源的确定性。可用区级预留实例券可以通过拆分、合并的方式来支持同规格族内大小规格的匹配。
还是刚才那个例子,我购买了g7.xlarge的预留实例券来匹配对应规格的按量付费实例,当我的机器升配到g7.2xlarge后,我可以合并两张g7.xlarge的预留实例券,得到一张g7.2xlarge的预留实例券,使用这张券来抵扣升配后的按量付费资源。两种预留实例券提供的折扣力度是相同的,支持随时无限次的相互转换。
下面我们来看一下预留实例券的应用场景。
第一个场景,固定规格族的弹性业务。对于业务存在波动的场景,使用固定数量的包年包月实例,在低峰期会存在资源浪费的问题。因为开的机器数量要能支撑高峰期的业务,但到了低峰期,很多机器资源就闲置了。切换为按量实例+预留实例券,到了高峰期进行动态的扩容多开机器,到了低峰期进行缩容释放掉机器。通过对业务的资源预估,购买一定数量的预留实例券,可以降低整体的资源成本。
预留实例券也非常适合多环境部署的场景。比如第二个场景,蓝绿部署。业务在上线的同时部署新老版本进行灰度测试,确认没有问题之后将流量逐步切换到新版本。全部切换完成后,如果测试正常就可以释放掉老版本的机器。如果使用包年包月实例,我们需要不停的新购,释放。
这样会有两个问题,第一是退款会产生隐形的成本,第二是需要去重新走财务流程。使用预留实例券可以同时对新老版本的资源进行抵扣。
第三个场景,DevOps,也是典型的多环境部署的场景。在项目的不同阶段,研发、测试、部署的算力分布不同,三套环境差别较大,使用预留实地券可以同时对三套环境进行抵扣,动态调整三套环境的资源数量。
成本优化的第三种方式,节省计划。它是一种折扣权益计划,类似于会员卡。我们可以通过承诺每小时消费金额换取较低的按量付费折扣。节省计划生效后会抵扣符合条件的按量付费账单,并且在抵扣的时候享受特有的折扣。
和按量实例相比,节省计划同样可以降低按量付费的成本。和包年包月相比,节省计划具有更好的灵活性,同时支持跨UID的折扣共享,支持零预付、部分预付、全预付三种选择。
下面重点介绍一下节省计划和预留实例券的区别。
节省计划具有更好的灵活性,支持多规格族、多地域部署场景下资源账单抵扣需求。节省计划真正做到了财务和资源的解耦,不再和资源使用的台数做绑定。预留实例券只能抵扣计算规格的账单,而节省计划可以抵扣计算、系统盘、数据盘和固定带宽的账单,但不同的计费项的折扣力度不同。
节省计划相比预留实例券可以简化对账,节省计划还支持多种产品,比如ECS、ECI、RDS,未来还将支持更多的云产品。节省计划不支持按月最低购买时长为一年,而预留实例券支持按月购买。
节省计划分为通用型和ECS计算型。
通用型节省计划具有更大的灵活性,支持地域级灵活性和规格族级灵活性。简单的说就是我购买一份通用型的节省计划,可以覆盖全地域、全规格的ECS资源。
而ECS计算型节省计划只能覆盖特定地域下,特定规格族的ECS资源。在购买的时候,我们就需要指定地域和指定规格族。但计算型节省计划可以提供更低的折扣,等于牺牲了灵活性换取到了更好的经济性。
下面我们来看一下节省计划的应用场景。
第一个场景,多规格资源的弹性业务。比如在之前预留实例券应用场景里提到的弹性场景,如果弹性业务集群使用了多规格族的资源,使用预留实例券就很难做到全面的覆盖。而节省计划可以覆盖不同的规格,这种场景下就推荐使用节省计划+按量付费的方式。通过对业务资源的预估,计算每小时承诺消费金额,购买对应的节省计划降低资源的成本。
第二个场景,弹性升降配。对算力存在变化,需要通过升降配调整机器资源配置的场景,如果使用包年包月的实例,会存在两个问题,第一个是实例的生命周期维护比较复杂,第二个是在升降配退款上会产生隐形成本。使用节省计划+按量付费的方式,利用节省计划支持规格灵活性的特点,可以随时的调整资源配置。
第三个场景,混合部署。适合同时有多个业务上云的场景,不同的业务在不同时间段使用的资源数量不同,比如白天的业务们使用大量的机器提供在线服务,晚上大数据部门使用机器资源做数据处理。这两部分的业务使用的机器规格不同,使用包年包月的实例,各业务都有一半的时间存在资源浪费。而使用节省计划+按量付费的方式,对多个业务的资源进行整体抵扣,可以实现跨规格的折扣权益共享。
接下来整体比较一下各个付费方式。
∙ 从经济性方面,最优的是抢占式实例,它最低可以提供按量付费一折起的费用,其次是包年包月和预留实例券。预留实例券通常可以提供和包年包月相同的折扣力度,购买一年的费用相比按量付费可以做到5.6折。再往后分别是ECS计算型节省计划和通用型节省计划,购买一年的费用相比按量付费分别可以做到6.1折和七折。
∙ 从折扣项来看,包年包月和节省计划可以抵扣计算、系统盘、数据盘、固定带宽的费用。抢占式实例和预留实例券抵扣的都是计算规格的费用,但计算规格在整体资源的费用中占比比较高,通常占比在80%~90。如果使用预留实例券,还可以搭配存储容量单位包SCU来抵扣云盘的费用。
∙ 在灵活性方面,和经济性相反,从高到低依次是通用型节省计划、计算型节省计划、地域级预留实例券、可用区级预留实例券。通用级节省计划具有最高的灵活性,支持跨规格族、跨可用区、跨地域的灵活性。在选择抵扣类产品的时候,可以根据资源的分布情况,以及需要支持的灵活性选择合适的抵扣类产品。
∙ 在确定性方面,包年包月和可用区级的预留实例券的确定性相对较高,而地域级预留实例券、ECS计算型节省计划、通用型节省计划,需要搭配容量预定来提升确定性。
下面我们来看一下具体的场景推荐,这里我列举了一些业务场景做付费方式选型的推荐,大家在选型的时候可以参考。
我把业务场景分为弹性业务和稳态业务。对于弹性业务,如果是无状态的,容错能力强的,比如科学计算、图像处理等等。这些场景对于算力要求较高,且算力存在波峰波谷,弹性需求也较高。强烈推荐使用抢占式实例可以极大的降低算力成本。
对于临时性的弹性业务不能中断的,推荐使用按量付费实例来支撑业务。典型的场景比如电商大促、突发热点带来的突增流量。在流量突增的时候,我们可以通过扩容按量付费实例来提供服务,等流量慢慢过去以后再去释放扩容掉的这部分机器。因为按量付费实例是按秒计费的,所以我们只需要承担扩容期间的这部分费用。
对于长期的弹性业务,比如游戏、互联网应用,算力需求本身是随着流量波动的,所以推荐使用按量付费+节省计划,按量付费实例用来支撑算力波动的灵活性,随时扩容和缩容,节省计划用来对按量实例进行抵扣,降低资源成本。
对于稳态的业务,如果是固定资源且长期稳定的业务,典型的有OA、CRM系统,数据库服务对灵活性要求相对较低,推荐使用包年包月。对于固定规格族的长期业务,比如DevOps,有多套环境使用的都是相同规格的配置,推荐使用按量付费+预留实例券。对于多种环境的混合部署,比如在线业务和离线业务同时上云的场景,不同的业务使用的机器规格不同,我们推荐使用按量付费+节省计划的方式。
在实际的使用中,可以根据业务场景组合多种付费方式完成业务支撑。对于稳定的业务负载,使用包年包月实例或者按量付费+抵扣类产品来支撑。对于突发型的业务负载,无状态任务型的使用抢占式实例,有状态、不能中断的,选用按量付费实例。
1.2 选取合适的资源规格
首先看一下ECS的产品分类。ECS实例分为通用计算、异构计算、高性能计算。通用计算是ECS实例最常用的实例类型,适用于一般性的应用和服务器,提供了丰富的配置选择。支持垂直类场景增强型实例,比如网络增强型、存储增强型、内存增强型、安全增强型等等。
异构计算是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。目前包括GPU云服务器、FPGA云服务器、弹性加速计算实例等等。异构计算通过让最合适的专用硬件做最合适的事来调节能耗,从而达到性能和成本最优化。
根据场景来选择合适的规格,可以获得最优的性价比。
∙ 对于网站服务器、中间件,推荐使用通用计算实例和高主频实例。
∙ 对于大数据分析、分布式文件系统、数据库等,推荐使用存储型增强实例、大数据实例。
∙ 对于内存数据库,推荐使用内存增强型实例。
∙ 对于网关、网源、防火墙推荐使用网络增强型实例。
∙ 对于科学计算、视频编解码、图像渲染等,推荐使用GPU云服务器。
从产品的维度来看,通用计算实例可以覆盖最多的业务场景。
下面再来介绍一下通用计算实例的选型。
七代主售实例(g7、c7、r7),它具有最优的性能比,覆盖场景全面,是上云的第一选择。在今年5月,我们对七代主售实例价格再次进行下调,七代全部规格下调15%~20%,性能比优势再次提升。七代主售实例适合绝大多数通用场景,比如web应用、中间件、数据库、数据分析、科学计算等等。
倚天八代实例(g8y、c8y、r8y),它在2022年正式发布,采用基于ARM的自研倚天710芯片。倚天八代实例具有独享物理核,算力会更强劲。在多任务、高负荷场景,倚天的性能线性度表现更好,支持高负载运行。它适合计算密集型场景,比如web应用、视频编解码、高性能计算、AI推理等等。
通用算力型U实例,它是面向中小企业用户的企业级独享实例,和七代主售实例相比,相同算力购置成本更低。如果对于CPU和IO性能要求不高,希望进一步降低资源成本的,可以考虑使用通用算力U实例。它适用于对性能要求不高的场景,比如轻量级网站应用、离线数据分析、企业办公应用、中小型数据库等等。
性能突发实例T系列,它针对的是企业及个人用户持续低性能或者偶尔有突发性能需求的场景来设计。可以利用CPU控制基准性能满足一些突发性能的需求。主要面向入门级场景,最小实例规格是1c0.5g。如果对性能要求不高,希望以最低成本购置云上资源的,可以考虑使用性能突发实例T系列。适合的场景有轻量级应用、开发测试。
1.3 提升资源利用率
在提升资源利用率方面,我总结了三部分优化内容。
第一,资源使用率优化。常见的方法有释放闲置的资源、降配低负载资源、升配高负载资源、弹性扩缩容等等。通常我们可以借助资源监控工具发现优化机会,并结合业务特性、性能、成本等综合考虑后来执行。
第二,抵扣产品覆盖率优化。需要关注预留实例券、节省计划的使用率和覆盖率。节省计划的使用率是用于查看节省计划的使用情况,使用率是指购买节省计划后有多少比例参与了抵扣,使用率越高说明节省计划的使用效果越好。节省计划的覆盖率是用来衡量按量费用的资源有多少费用被节省计划进行抵扣了,覆盖率越高说明这些按量资源的成本被节省计划很好的抵扣。
我们追求的是使用率高、覆盖率高的场景,这是最优的场景说明节省计划很好的帮助我们降低了资源成本。如果出现使用率高,覆盖率低,说明我们的节省计划可能买少了,还有很多的按量资源没能被节省计划抵扣。如果是使用率低,覆盖率高,说明我们的节省计划可能买多了,有节省计划闲置浪费了。如果是使用率低,覆盖率低,有可能是我们的节省计划买错了,节省计划和按量实例没有能够匹配上。
因此阿里云还提供了节省计划、购买推荐、下月预测等功能,可以帮助我们优化折扣产品。在购买推荐页面,我们可以输入节省计划的类型、购买时长、付费类型,系统会根据过往的实例账单自动推荐每小时的承诺消费金额,并且给出预期节省幅度以供参考。下月预测可以查看预估未来一个月对应云产品节省计划的使用情况,以及优化建议内容与方案。
第三,架构优化。在保障应用稳定性的前提下,通过优化架构升级能够在更大的范围内去降低整体云服务的使用成本。常见的架构优化策略有,通过架构全面云原生化组建成本最优的云服务使用模式,还有通过离在线混步技术,提升整资源的整体利用率,降低成本。还有通过Serverless化架构提升应用研发效率,收获良好的成本效益。
这里是我总结的一些其他降本增效的方法。
∙ 对于抢占式实例,可以借助弹性供应、弹性伸缩产品实现算力集群的稳定交付。具体弹性伸缩的内容,后面会做更详细的讲解。
∙ 对于按量付费实例,如果没有使用又不想立即释放的,可以开启节省停机模式。也可以借助自动化运维工具,OOS实现周期性的定时开关机。
∙ 对于包年包月实例,可以通过开启自动续费,统一到期日等,简化生命周期的维护。如果包年包月实例不再使用,也可以退订或者转按量付费。此外,还可以借助我们的成本优化工具,授权智能顾问产品定期扫描自身资源,给出成本优化的建议,借助用户中心成本分析功能进行费用分析与优化。
1.4 客户案例
下面来看两个在成本优化方面的客户案例。
第一个客户案例来自于深势科技。它是一家药物研发算法科技公司,致力于通过技术解决药物研发的难题,实现药物分子的理性发现和设计。
客户上云的痛点主要有以下三个:
∙ 业务波动量比较大,希望可以提供基于作业负载的弹性伸缩能力,最大化的利用计算资源。
∙ 希望有效的调度集群的计算资源,能够提供跨可用区、多规格实例的弹性扩容。
∙ 作为一家初创企业,追求高性价比,希望能够以较低的成本完成有效的计算。
客户的痛点主要集中在算力需求、灵活性、成本三方面。在资源规格方面,推荐使用GPU服务器GN7,使得模型训练和推理的效率提升2-6倍。在成本和灵活性方面,使用了弹性供应的成本最优调度策略来调度抢占式实例。指定多个可用区和实例规格,确保以最优的价格完成抢占式资源的交付,最终以30%的成本完成日均3w+ vCPU资源的交付。
第二个客户案例来自于汇量科技。它是一家全球应用开发者技术服务平台,专注于提供移动互联网广告和数据分析服务。
客户的痛点主要有以下两点:
∙ 降本和技术需求,广告投放业务每日所需要的云成本资源波动巨大,是典型的弹性场景。
∙ 性能需求,广告推理服务金牌模块对于算力需求比较高。
我们的解决方案是在资源规格方面使用了第八代倚天云实例g8y,实现了同时提升CPU性能和内网带宽。与g6系列对比,单机成本降低15%-20%,综合性价比提升了30%以上。
通过结合ESS弹性伸缩服务和抢占式实例产品,在高峰期时及时开放资源,在低峰期时缩减资源。保障资源使用率在一个合理的水平,从而确保了成本的最优化。稳态的业务从包年包月转成按量+节省计划的购买形式,在成本进一步优化的同时,业务的灵活性也得到了很大的保障。
2. 创建ECS的各种方式及使用场景
2.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.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的云助手下发下去的,这样就可以把业务的配置都执行一下,启动起来了。
2.3 高确定性创建 ECS
我们假设有一个场景,比如我今天晚上9点想升级集群,或者我之前测试好的东西需要部署到线上,这种情况我需要在9点的时候买一批资源。但买这些资源我又担心会有库存或者Quota的问题买不出来。而系统升级是非常严肃的事情,如果创建不出来,对业务的影响是非常大的。
大家通常想到的解决方案是,9点上线的话,我8点的时候提前创建出一台ECS不就好了,这确实是一种解决方案,但这不是最经济的。
我们有一种更经济的解决方案叫做容量预定,也就是在8点的时候创建一个容量预定出来,容量预定只收取计算的费用,所以到9点把ECS创建出来的时候才开始收ECS的存储、网络等费用。在8点-9点之间,只收取计算费用,当然9点以后也不会收取双份的费用。这样就达到了节省成本的目的,同时它还能满足在9点的时候100%成功创建ECS。
为什么能100%成功呢?这是因为在8点买了容量预定的时候,你就把库存资源锁定了,当在9点创建ECS的时候指定容量预定,就可以100%成功。使用容量预定需要注意,预定的时间不要过长,因为预定的这段时间也是收取费用的,而这段时间又没有真实使用资源,时间过长就会存在浪费的情况。
此外,它也可以适用于混部的场景,比如白天跑的是在线业务,晚上跑的是离线业务,这种情况就可以买一个容量预定,确保离线和在线业务都使用相同的资源池来保证我的确定性。这样我就不用担心白天用完资源释放掉以后,晚上创建ECS的时候因为库存原因创建不出来,通过容量预定这个产品就可以很好的这个解决问题。
所以,当大家有一些确定性的保障的时候,比如资源轮转、升级,混步、集群部署等等,对确定性需求非常强的时候,我们就可以考虑使用容量预定这个产品。
3.总结
第一部分,高效创建ECS。首先分享了高效创建ECS的方式,包括PC端、移动端,移动端还可以远程连接ECS。其次分享了启动模板、OpenAPI门户、Cloud Shell等工具,方便大家在集成OpenAPI的时候,通过这些工具提升效率。最后演示了通过资源编排ROS的方式交付一整套的基础设施架构。
第二部分,弹性创建ECS。当我们有批量大规模交付 ECS 算力集群需求的时候,或者觉得抢占式实例的使用成本太高的时候,可以考虑使用阿里云的弹性供应。当我们有定时/动态弹性创建 ECS,或者需要根据报警的监控指标,比如CPU的使用率、内存使用率、带宽的使用率等等,去动态的增加ECS或减少ECS的时候,可以考虑使用阿里云的弹性伸缩。
第三部分,高确定性创建 ECS。当我们对ECS确定性有需求的时候,尤其是在资源轮转,升级稳步等业务场景的时候,可以考虑使用阿里云的容量预定来解决问题。
以上就是本节课程的全部内容,同时欢迎大家点击链接进入【CloudOps云上运维】课程官网,了解最新课程资讯!