带你读《云上自动化运维宝典》——高弹性、高可用、低成本的云上资源管理最佳实践(2)

简介: 介绍高弹性、高可用、低成本的云上资源管理最佳实践。

1. 如何使用ESS解决高可用问题

1.1 几种常见的资源高可用需求

一般情况下,资源高可用需求包括以下四个:

① 负载突增高可用需求:当业务的负载突增时,如何保证资源的高可用,ESS支持多种组合模式,可以保证高负载场景下进行正确的弹性扩容,保证资源的稳定性和服务的可靠性。

 

② 异地容灾高可用需求:ESS支持多可用区弹性,通过多可用区弹性能够实现资源的多可用区均衡分布,实现资源的高可用容灾。

 

③ 小规模场景高可用需求:如资源部署只有1~2台,虽然规模较小,但对服务稳定性需求较高。一般情况,在小规模场景下,单个实例受损会严重影响服务的可用性。ESS支持弹性实例健康检查,通过支持异常实例状态检测,自动进行异常实例替换,保证小规模资源高可用的场景。

 

④ 资源打散高可用需求:该场景要求对同一业务资源进行不同的宿主机打散,ESS支持宿主机打散,可以创建的弹性资源打散到不同的宿主机,避免资源之间相互影响。同时也避免因资源布置在同一宿主机宕机导致大规模影响。

 

image.png

1.2 多种伸缩模式满足各种业务负载波动场景

① 定时模式:对应业务负载周期性变化的场景:可以根据定时任务动态地定时增加或减少资源,如周五13:00扩容N台机器,高峰期之后再定时缩容。

 

② 动态模式:通过动态模式可用应对负载变化不规律的种场景,如使用cpu监控指标进行负载的动态扩缩,满足业务高峰期的负载,若CPU负载较高,动态扩容来满足业务资源的高可用。

 

③ 手动+动态模式:用于应对突发场景,首先,使用包年包月的实例,确保业务基座稳定。当业务突增时,辅以动态模式弹性扩容应对突发场景,保证整体资源的可用性。

 

④ 定时+动态模式:应对负载周期性变化,同时又有突增的场景,在高峰期之前定时扩容几台机器,若高峰期还有突增,则再通过动态扩容应对高可用的需求。

 

关于模式的选择,可以给予自己的用户场景进行参考,利用弹性弹性扩容提供的资源高可用来保证业务的稳定性。

 

image.png

2. 如何使用ESS实现低成本管理

1ECS灵活的付费方式:ESS的付费方式主要有5种,其特点和应用场景如上图所示。

 

弹性服务的低成本能力主要集中在包年包月、按量付费和抢占式实例,通过三种付费方式的组合实现种降低成本的目标。

 

2)使用ESS实现低成本管理过程如下图:

 

灰色柱状图表示传统模式下包年包月付费场景,黄色表示按量资源,橘黄色表示Spot资源。整个改造过程经历了低成本管理介入的方式,过去使用包年包月、按照固定的规格、模式来进行部署,在负载变化时资源部署量也不会改变。

 

首先进行业务资源弹性改造,弹性接入,接入之后就实现了按量资源的弹性,业务的资源可以随着业务的负载动态变化。但相对于Spot而言,按量付费较为昂贵,因此可以通过将按量和Spot进行组合的方式进一步减少费用。但为了保证资源按量和Spot组合后的稳定性、可用性足够高,可以使用多规格组合的方式。因为不同规格组合,可以避免Spot实例的一次性回收,因为不同的规格和Spot策略是不同,进而降低Spot集中回收带来的稳定性影响。即按量弹性之后先进行规格组合提高业务的可用性,再进行Spot与按量组合降低成本。

 

多付费类型组合弹性场景示如下图所示:

 

image.png

 

这里有6个组合案例。可以看做两组,ABC其实使用的是底座弹性资源高可用,DEF是一种弹性全托管。区别在于底座使用了包年包月的方式,相对于弹性全托管,资源稳定性更强,但由于其资源固定、不释放,其成本相对较高。

 

对于弹性资源的管理,分为了全按量、按量和Spot组合、全Spot 3种。对于这3种组合方式,若按量比例越高,稳定性更强,但成本也会更高,随着组合中Spot比例的增,成本越来越低,但稳定性会越来越差。

 

以上提供的6个案例中无法绝对性地认为哪一种更好,而要结合用户自己的业务场景来进行选择。如离线计算场景下如何选择付款组合方式,由于离线计算对实时性要求不高,且对任务执行有容错性,对于资源的可用性要求不高,但一般情况下离线计算的场景任务较多,规模较大,这意味着其成本压力也较大,即此时对于资源的需求是成本更低,但对资源的可用性要求更低。这种情况下,可以选择EF。对于核心服务,一般会选择A,因为其可用性最高。

 

image.png

2.1 案例一:人工智能企业

用户痛点:业务的用户的痛点有两个:首先,由于它是人工服务的供应商,它的峰谷之间的波动比较剧烈,它的最高峰达低峰期的16倍之多,它之前的部署方式都是按照保有的高峰期的资源进行部署,成本很高,有大量的闲置,存在资源利用率低的问题;另外,业务的访问量虽然有明显的周期性变化,但偶尔会有突增流量,及时按照最大部署稳定性也会存在问题。

 

解决方案:首先盘点业务的所有资源,使用Spot和按量组合弹性的方式,多个可用区之间保有包年包月实例进行基础稳定性的保障,组合使用按量实例来进行弹性扩缩保证其应对高峰期。即通过Spot + 按量通过定时和动态监控任务进行组合,一般在高峰期之前定时扩容,在突发流量时通过监控扩容进一步保证资源的可用性。

 

使用效果:通过弹性化改造实现了应对高峰期流量的动态波动,提高了用户的可用性,同时由于释放了大量的成本,节约了约24%的成本。

  image.png

image.png

2.2 案例二:技术服务平台【汇量科技】

用户痛点:该平台服务范围较广,涉及设备的规模非常大、地域覆盖范围广,对于资源和成本的诉求都特别高,首先,它类似于峰谷,波动剧烈,白天的流量是晚上的几十倍,同时价格也较为敏感。他原本使用了Spot实例降低成本,但是,Spot的价格波动也经常会导致资源成本的上升。

 

解决方案:使用ESS成本优化策略,简单来说,就是当有多个规格,Spot和按量组合时,选择价格最低的方式进行资源的交付。同时,多可用区容灾可用将Spot实例打散,使用多可用区、多实例规格的方式避免一次性大规模Spot实例回收导致额服务稳定性差,进一步保证资源的稳定性。另外它还使用了ESS提供的提前补偿策略,在Spot实例被抢占之前弹性伸缩,自动地选择价格更低的实例进行替换,避免Spot的断崖式释放。

 

可以看到在未开启Spot补偿之前,如果使用单个规格,那么大批量的Spot实例被释放,在过了一段时间之后,才能弹性扩容,其间的断崖异常会导致业务资源需求出现缺口,对业务的稳定性影响较大。若使用提前补偿策略,在Spot实例被回收之前的五分钟感知到实例即将被回收,提前创建替代实例来补偿被回收的Spot实例,保证种资源的稳定性。

 

效果:优化效果较为显著,用弹性伸缩的成本优化策略,结合Spot实例自动补偿,以30%的成本完成了过去的业务交付,相当于节省了70%的成本。

3. 总结与展望

 

image.png

 

本节课程从高可用、高弹性、低成本的资源管理方式,总结了一些经验。要实现高弹性、高可用性、低成本的资源管理,首先要进行弹性化改造来实现资源的弹性管理,然后基于弹性能力建立资源的高可用的管理能力,资源的高可用是最优先满足的;最后,在满足资源高可用的前提下,再进行资源的成本优化。

 

课程中主要以弹性伸缩服务为例来进行讲解,但实际上可以用的弹性伸缩工具有很多,如开源社区的K8SHPA,阿里云的ACKK8S弹性在云上的实现)、EHPCEMR等,我们可以结合自己的场景诉求使用弹性能力进行高可用、低成本的资源管理。

 


更多精彩内容,欢迎观看:

云上自动化运维,高弹性、高可用、低成本的云上资源管理最佳实践(1)

CloudOps云上运维

相关文章
|
14天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
39 6
|
4月前
|
运维 Prometheus 监控
OceanBase 的运维与监控最佳实践
【8月更文第31天】随着分布式数据库解决方案的需求日益增长,OceanBase 作为一种高性能的分布式数据库系统,在众多场景下得到了广泛应用。为了确保 OceanBase 集群的稳定运行,合理的运维与监控是必不可少的。本文将探讨 OceanBase 的日常运维管理与监控策略,并提供相应的代码示例。
217 2
|
26天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
43 2
|
27天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
32 2
|
20天前
|
测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
【10月更文挑战第31天】 在当今快速迭代的软件开发环境中,自动化测试成为确保软件质量和加速产品上市的关键。本文探讨了自动化测试的重要性、实施策略以及一些最佳实践。通过分析不同类型的自动化测试工具和框架,本文旨在为软件开发团队提供一套实用的指导方案,以提高测试效率和质量。
|
2月前
|
存储 运维 Cloud Native
阿里云国际CloudOps的优势和云上运维的特点
阿里云国际CloudOps的优势和云上运维的特点
|
3月前
|
运维 云栖大会
运维管理新品发布与最佳实践 | 2024云栖大会预告
运维管理新品发布与最佳实践 | 2024云栖大会
|
4月前
|
存储 运维 监控
数据库服务器运维最佳实践
【8月更文挑战第22天】
70 2
数据库服务器运维最佳实践
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
88 1
|
4月前
|
测试技术
软件测试的艺术与科学:探索自动化测试的最佳实践
【8月更文挑战第31天】在软件开发的海洋中,测试是确保航船稳健前行的罗盘。本文将带你揭开软件测试的神秘面纱,深入探讨自动化测试的魅力和挑战。我们将一起航行于代码的波浪之中,学习如何构建稳固的测试框架,以及如何利用这些框架来捕捉那些潜藏在深处的缺陷。加入我们,让我们一起提升软件质量,确保每一次航行都能抵达成功的彼岸。

热门文章

最新文章