混沌工程知识《四》

原文:https://aws.amazon.com/cn/blogs/china/aws-chaos-engineering-feasibility-assessment/

混沌工程的目标 – 实现韧性架构

正如 AWS CTO Werner Vogels 常说的“故障是注定的,随着时间的流逝,一切终将归于失败”。我们必须接受故障发生是新常态的想法,处在部分故障的系统正常运行是完全可行的。当我们处理多达几十个 EC2 实例的小型系统时,100%的健康运行通常是正常状态,故障则是一种特殊情况。然而,在处理大规模系统时,即100%的健康运行几乎是不可能实现的。因此,运维的新常态便是接受部分故障。处在部分故障中的系统要求仍能正常运行对外提供服务,这就需要架构本身具备 Resilient 能力。这里我并不想把“ Resilient ”翻译成弹性,而应该是韧性(具备恢复能力)。混沌工程就是利用实验提前探知系统风险,通过架构优化和运维模式的改进来解决系统风险,真正实现上述韧性架构,降低企业损失,提高故障免疫力。

韧性架构的重要特征

冗余性

架构的设计要增加冗余性,以便提高该系统的整体可用性。如在AWS云中,这意味着将其部署到多个可用区,甚至跨多个区域进行部署。

正如上图中所看到的那样,组件X的可用性是99%(按今天的标准来说非常糟糕),但并行放置,增加冗余性,可以将系统的可用性提高到99.99%!如果将三个组件X并行放置,那么就可以达到6个9的可用性!这个结果很惊人,这就是为什么我们总是建议客户跨多个可用区设计架构。

扩展性

架构的设计必须要考虑扩展性,即启用 Auto Scaling ,根据需求动态扩展资源 – 而不是手动执行 – 确保可以满足各种流量模式。如在AWS云中,可使用 Application Auto Scaling 功能为EC2,DynamoDB和EMR等服务提供相同的自动扩展引擎,以支持AWS外部服务的自动扩展。

不可变基础设施

不可变基础设施指的是,每次部署都会替换相应的组件,不做更新。应用部署则使用金丝雀发布(俗称灰度发布),以减少部署新版本应用时出现故障的风险。使用这种技术,可以在真实的生产环境中进行测试,并在需要时进行快速回滚。

无状态应用

无状态应用是自动扩展和不可变基础设施的先决条件,要求应用必须独立于先前的请求或会话,处理所有客户端请求,并且不会存储在本地磁盘或内存中。

避免级联故障

级联故障指的是因依赖关系引发的局部故障导致整个系统崩溃(俗称蝴蝶效应)。架构设计必须考虑级联故障的处理方式:

  • 转移切换:当一个集群宕机时,所有的流量都转移到另一个集群,如跨可用区切换,或者跨区域切换。
  • 重试退避:指数退避算法逐渐对客户端重试请求减速,避免网络拥塞,同时添加抖动保证性能,详细讨论参看这里
  • 超时机制:过载请求会将连接耗尽,导致系统宕机。超时机制的引入,服务的质量会下降但不至于系统全面崩溃。
  • 幂等操作:由于暂时的错误,客户端可能多次发送相同的请求,可能导致系统处理错误。幂等操作,一种可以反复重复的操作,没有副作用或应用程序的失败,可以消除上述隐患。
  • 服务降级:当服务器压力剧增的情况下,有策略地减少或退化部分服务,以此释放服务器资源以保证核心任务的正常运行,如只读模式、停用耗时耗资源的功能等等。
  • 拒绝服务:请求过载时,按优先级开始丢弃相应的请求。
  • 服务熔断:若某个目标服务调用过慢或者有大量超时,直接熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回响应,快速释放资源,待目标服务情况好转则恢复调用。

基础设施即代码

基础设施即代码可减轻繁琐的手工配置和部署任务,由于可用完全相同的方式反复执行,因此解决了随时间推移引发的配置漂移问题,当有故障发生,基础设施的恢复快速且有效。同时可对基础架构以代码的形式进行版本控制,管理其更新、审核、验证和回溯分析。

弄清楚了混沌工程的目标,现在可以来深入讨论如何来评估混沌工程实验的可行性条件。

混沌工程的可行性评估模型

在执行混沌工程实验时,我们需有一个通用的标准来,判断这个实验可不可行,做得好不好。混沌工程的可行性评估模型,结合了亚马逊和Netflix的混沌工程成熟度模型,从成熟度等级和接纳指数两个维度来衡量混沌工程实验成功实施的可行性:

混沌工程实验的成熟度等级

成熟度可以反映出混沌工程实验的可行性、有效性和安全性。成熟度的级别也会因为混沌工程实验的投入程度而有差异。这里将成熟度等级分为1、2、3、4、5级进行描述,等级越高成熟度越好,混沌工程实验的可行性、有效性和安全性会更有保障。


image.png

使用实验框架

| 实验框架和持续发布工具集成 | 并有工具支持交互式的比对实验组和控制组 |
| 故障注入场景 | 只对实验对象注入一些简单事件,如突发高CPU高内存等等 | 可对实验对象进行一些较复杂的故障注入,如EC2实例终止、可用区故障等等 | 对实验对象注入较高级的事件,如网络延迟 | 对实验组引入如服务级别的影响和组合式的故障事件 | 可以注入如对系统的不同使用模式、返回结果和状态的更改等类型的事件 |
| 环境恢复能力 | 无法恢复正常环境 | 可手动恢复环境 | 可半自动恢复环境 | 部分可自动恢复环境 | 韧性架构自动恢复 |
| 实验结果整理 | 没有生成的实验结果,需要人工整理判断 | 可通过实验工具的到实验结果,需要人工整理、分析和解读 | 可通过实验工具持续收集实验结果,但需要人工分析和解读 | 可通过实验工具持续收集实验结果和报告,并完成简单的故障原因分析 | 实验结果可预测收入损失、容量规划、区分出不同服务实际的关键程度 |

混沌工程实验的接纳指数

接纳指数通过对混沌工程实验覆盖的广度和深度来描述对系统的信心。暴露的脆弱点就越多,对系统的信心也就越足。类似成熟度等级,对接纳指数也定义了1、2、3、4级进行描述。


image.png

混沌工程实验的可行性路线图

把当前项目进行成熟度等级和接纳指数的评估,将两者的结果合并放在一张图上,就可构建出类似于魔力象限的坐标轴。这不仅可以了解当前项目进行混沌工程实验的可行性,同时还可以与其他项目进行差异对比。此外,根据之前所讨论的混沌工程实验目标,设定想要达到的成熟度等级和接纳程度,便获得可行性路线图,了解自身努力的方向。

综上,本文是混沌工程专栏的第二篇,在此我们弄清楚了混沌工程实验的目标,并通过对混沌工程的成熟度等级和接纳指数的深入描述,探讨了如何通过上述可行性评估模型来衡量混沌工程实验的可行性、有效性和安全性。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容