写点什么

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

  • 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:032507

评论

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

FlyFish2.0版本后端源码学习笔记

云智慧AIOps社区

前端 大前端 数据可视化 大屏可视化

从服务端生成Excel电子表格(Node.js+SpreadJS)

葡萄城技术团队

SpreadJS 前端表格

Java8--Lambda表达式对List集合操作

爱好编程进阶

Java 程序员 后端开发

【刷题第七天】15 三数之和

白日梦

5月月更

从服务端生成Excel电子表格(GcExcel + SpreadJS)

葡萄城技术团队

服务器端开发 前端表格控件 测试比较

20年清华扫地僧,整理的Storm、Spark学习笔记

爱好编程进阶

Java 程序员 后端开发

【大数据培训】面试中数据仓库重要概念

@零度

数据仓库 大数据开发

浅析微服务全链路灰度解决方案

阿里巴巴云原生

阿里云 微服务 云原生 灰度

封装格式介绍

Loken

音视频 5月月更

【直播回顾】OpenHarmony知识赋能五期第四课——子系统音频解读

OpenHarmony开发者

OpenHarmony 多媒体

Apache ShardingSphere 遇上得物“彩虹桥”

SphereEx

数据库 开源 ShardingSphere SphereEx apache 社区

C++搭建集群聊天室

爱好编程进阶

Java 程序员 后端开发

IntelliJ IDEA创建基于maven的springboot项目

爱好编程进阶

Java 程序员 后端开发

专访朱雷:昔日的游戏少年,如今的Python工匠

图灵教育

Python 程序员 图灵访谈

租房开放源码

源字节1号

租房小程序

前端生成PDF,让后端刮目相看

葡萄城技术团队

PDF pdf.js

Elasticsearch聚合学习之一:基本操作

爱好编程进阶

Java 程序员 后端开发

Java 四种线程池

爱好编程进阶

Java 程序员 后端开发

云原生小课堂 | 如何打造一款软硬兼施、多功能、零损耗的云原生网络方案

York

云原生 性能 智能网卡vpc 容器网络方案

Autograd解析|OneFlow学习笔记

OneFlow

人工智能 深度学习 数学原理 Autograd模块

web前端培训单元测试入门知识分享

@零度

单元测试 web前端开发

java培训Nginx 快速入门

@零度

JAVA开发

基于Saga的分布式事务调度落地

百度Geek说

微服务

三大特性,多个场景,Serverless 应用引擎 SAE 全面升级

阿里巴巴云原生

阿里云 Serverless SAE 阿里云云原生 应用引擎

Java Review(三十九、类加载机制与反射

爱好编程进阶

Java 程序员 后端开发

java 中异常类

爱好编程进阶

Java 程序员 后端开发

【高并发】高并发环境下诡异的加锁问题(你加的锁未必安全)

冰河

并发编程 多线程 高并发 协程 异步编程

网站开发进阶(六十一)详解js中Number()、parseInt()和parseFloat()的区别

No Silver Bullet

5月月更 Number() parseInt() parseFloat()

答题交互功能深入研究

CRMEB

探讨企业知识管理的困惑

小炮

企业知识管理

Java---多态

爱好编程进阶

Java 程序员 后端开发

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