写点什么

华为云在混沌工程场景下的可靠性测试

  • 2020-03-24
  • 本文字数:2309 字

    阅读完需:约 8 分钟

华为云在混沌工程场景下的可靠性测试

随着互联网的快速发展,传统的单工程的性能瓶颈越发明显,分布式系统的优点越发突出。分布式系统具有廉价高效的特点,利用性能相对一般的 PC 横向扩展,提升服务器性能,通过软件来保障系统的高可靠性。


由于分布式系统存在 API 接口通信、微服务架构、节点规模大等特点,增加了系统的复杂性和出错的概率,从而很难确保系统的容错机制得到充分的验证,依赖自动化工具来完成对系统端到端验证是不可避免的。


Netflix 和类似互联网企业构建的大规模的分布式系统,不可避免地会发生如机器崩溃和网络延迟等故障。为了给客户提供“永远在线”的体验,建立系统可以可靠运行的信心。需要软件能够检测、处理各种错误情况,除了少量发生概率较低的极端故障。

华为云可靠性解决方案

在业界,混沌工程被定义为“在分布式系统上进行实验, 以建立对系统抵御生产环境中失控条件的能力的信心”。


基于华为在 ICT 领域 10 多年的阿软件可靠性测试经验,以及工程师们的千万个夜以继日,华为云推出了在混沌工程领域应用实践的一套完整的解决方案。目标是沉淀通用的故障模式,从入门到精通,从研发到生产,层层推进,以在线演练和专业测评来持续暴露问题,“防止失败的最佳方法就是经常失败,在真实环境测试,而不是模拟环境”,通过线上真实的问题来推动产品全方位的改进。



  • 全面有效的故障模式库

  • 基于华为在 ICT 领域 10 多年的实践积累和数百产品的实际应用的沉淀,电信领域软件的高要求,我们通过正向分析、事故分析、业界案例分析三个维度建立全面的故障模式库。

  • 精准高效的故障模拟

  • 我们通过软件模拟各种硬件故障,对应用无侵入,而且跟应用的实现语言无关。

  • 端到端全自动化测评

  • 我们实现了智能识别故障对象,而且全自动化运行,自动度量 KPI,自动实现风险评估,生成测评报告,测试工程可反复执行。防止失败的最佳方法就是经常失败。在真实环境测试,而不是模拟环境。通过我们的端到端全自动化测评,可以实现这个目标。

华为云混沌工程应用场景

入门级可靠性测试:手工注入

功能:提供对 Kubernetes 集群、弹性云服务器的单业务实例、单故障模式的注入。


适用场景:开发人员针对确定故障的自验证;测试人员针对可靠性问题回归验证等。


特点:操作简单,故障注入/清除结果及系统的表现清晰可见。



手工注入是混沌工程的入门级功能,操作非常容易,结果直接清晰。


首先在服务所在的容器集群或者节点上安装探针,一键安装,秒级创建,速度很快;


然后选择注入对象和注入的故障,还可以选择设置告警、CPTS 压测工程,就可以完成一次故障注入;


再接着就是以 5 分钟为维度获取监控数据生成测试报告;


最后你就可以基于报告来评估服务可靠性的质量了。


全流程可视化操作,只用鼠标点点点就可以了;简单易用,使用门槛低,非常方便开发者和测试人员进行基本的可靠性测试。

进阶级可靠性测试:故障演练

功能:提供对单工作负载的随机故障注入,预置了多种入门级和进阶级演练场景。


适用场景:线下随机故障注入测试;线上例行故障演练、专项演练等。


特点:模型化的场景定义、灵活的编排调度、丰富的评估报告。



故障演练主要使用场景是线上例行故障演练和专项演练。相比于手工注入,故障演练会提供多种入门级和进阶级的演练场景。上图为传统的手工演练流程,与混沌工程提供的故障演练能力对比。


三、四年前我们还处于传统手工演练阶段,全流程的手工进行,后续逐步演变为现在混沌工程提供的全自动化故障演练能力,经我们自己实际使用对比,现在的自动化演练过程比手工更准确和规范,避免人为导致的差错;可靠性专项测试人员投入的时间可以减少 80%,端到端效率提升 10 倍以上。


绿色动图分割线


我们提供如下的预置模板,同时也支持自定义演练任务。


高阶级可靠性测试:自动测评

功能:提供对多工作负载全量的可靠性测评。


适用场景:云服务的全量可靠性测评;不同服务、不同版本的可靠性能力对比。


特点:智能对象识别、自动用例生成、无脚本化执行、自动 KPI 度量、丰富的评估报告。


自动测评最大的特点就是智能对象识别、自动用例生成、无需定制脚本的全自动化执行、自动 KPI 度量生成丰富的评估报告,可以对不同服务、不同版本的可靠性能力进行对比。


自动测评服务的智能对象识别能力,保证了故障对象覆盖的全面性,能有效避免人工测试出现的遗漏。自动用例生成与无脚本化执行,大幅节省了用例设计和自动化脚本编写的工作,同时降低了自动化可靠性测试对人员技能的要求。


系统预置了 3 种常见场景模板,同时支持用户自定义。既可以用预置目标快速创建任务,也可以灵活的定制任务。



测评报告


混沌工程通过结合华为云上的 CCE、ECS、CPTS、AOM、APM 等服务,提供了一套完整的端到端的可靠性测试解决方案,解决了测什么、如何测、如何评价的问题。



可靠性质量评估架构


在华为云上,云服务部署的载体要么是 ECS 的弹性云服务器,要么是 CCE 的容器集群,我们现在已经支持对 CCE 容器集群和弹性云服务器 ECS(linux)进行故障注入。


CPTS 服务可以实现对应用接口的压测,在故障注入的同时运行,通过 CPTS 的报告用来评估故障对业务的影响。


AOM 可以完成对容器、主机的资源监控,以及自定义阈值告警,故障注入后相关的监控数据和告警数据会被写入混沌工程测试任务的报告中,然后根据可靠性质量评估方法实现自动 KPI 度量,生成评估报告。


APM 提供了调用链功能,在故障注入后,利用调用链可以快速完成问题定位分析。


可靠性质量评估方法上,我们采用的是基于可靠性关键质量属性的 KPI 评估方式,如下图。从故障模式维度和测试对象维度对 KPI 进行分析,可以针对自己的服务特性,自主调整评估的参数,然后生成测评报告。


评估属性和方法



本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/G6q4U3Qultb9ZRWnTopfMg


2020-03-24 21:032535

评论

发布
暂无评论
发现更多内容

Spring Boot 实现通用 Auth 认证的 4 种方式

李尚智

Java springboot spring 5 1月月更

一步一步理解Generator函数的原理

恒生LIGHT云社区

JavaScript 前端 Generator

IOS技术分享| anyRTC 互动白板场景实现

anyRTC开发者

ios 音视频 在线教育 视频会议 互动白板

当技术重构遇上DDD,如何实现业务、技术双赢?

百度Geek说

架构 后端 DDD 技术债

深入理解百度在离线混部技术

百度Geek说

云计算 云原生 后端

建立堡垒机的原则有哪些?需要注意哪些方面?

行云管家

网络安全 数据安全 信息泄露 资产安全

FabEdge V0.4 新特性:支持多集群通讯

BoCloud博云

云原生 边缘计算 网络 开源社区

Flutter:GridPaper 示例

坚果

flutter 1月月更

大搜车面向复杂业务场景的研发运维体系治理实践

阿里云弹性计算

弹性计算 运维峰会 研发运维

2021 OceanBase 年度报告 | 用技术让海量数据的管理和使用更简单!

OceanBase 数据库

开源 年度报告 oceanbase 成绩单

Linux云计算好学吗?Linux云计算运维学习资料 Linux基本操作命令

学神来啦

大数据开发之SparkSQL面试篇

@零度

大数据 spark SQL

某厂审批流引擎核心技术揭秘

空空

Linux之|etc|group文件

入门小站

Linux

存储空间降为MySQL的十分之一,TDengine在货拉拉数据库监控场景的应用

TDengine

数据库 大数据 tdengine 物联网

在线HTTP/HTTPS协议GET,POST,RESTful接口测试

入门小站

工具

Hoo研究院调研报告 |从公链Terra生态看区块链稳定币的三大核心产品

区块链前沿News

Hoo 虎符交易所 虎符研究院

面向对象

你?

开源服务社会:EMQ 映云科技获评“优秀中国开源原生创企”

EMQ映云科技

物联网 开源项目 mqtt

JavaScript 浅拷贝与深拷贝

编程江湖

技术干货 | ToB 业务场景下自动化测试的实践及探索

网易云信

运维 自动化

浅析SaaS软件和传统软件交付模式的区别

郑州埃文科技

什么是生产管理?制造企业想要做好生产管理应该怎么做?

优秀

企业生产管理

如何打造一款三消类游戏

Shopee技术团队

算法 前端 游戏 Shopee Candy

[架构实战营] 模块九作业

张祥

架构实战营

一个cpp协程库的前世今生(十六)读写锁

SkyFire

c++ cocpp

恒源云(GPUSHARE)_云GPU服务器如何使用iKataGo?

恒源云

运维 镜像 算力

Mysql的逻辑架构与存储引擎

编程江湖

MySQL

企业堡垒机搭建核心需求是什么?可以自己研发搭建吗?

行云管家

网络安全 信息安全 数据安全 IT资产

微服务分布式架构中,如何实现日志链路跟踪

华为云开发者联盟

微服务 日志 分布式架构 logback 链路跟踪

前端开发之JS数组去重方法

@零度

JavaScript 前端开发

华为云在混沌工程场景下的可靠性测试_行业深度_华为云产品与解决方案_InfoQ精选文章