摘要:混沌工程出现的背景是什么?相关的技术有哪些?网上讨论的其实很多,但对于混沌工程具体怎么落地?
本文分享自华为云社区《SRE必将走向混沌工程时代--华为云混沌工程实践》,作者:李军。
数字化时代,IT系统成为业务发展的载体,这意味着IT系统的可靠性将直接影响业务的可持续性,在大型互联网或云计算公司,都会设立专门的部门对可靠性负责,业界称为SRE。
SRE为了提升系统的可靠性,主要从主动预防和被动响应两个方向开展工作,其中主动预防占据了80%以上的时间。经过多年实践,SRE发现混沌工程是非常有效的主动预防手段,实际上混沌工程在很多互联网或云计算等IT技术前沿的公司已经大规模开展。在华为云,混沌工程已经和开发测试一样,成为SRE工程师的日常工作。通过混沌工程,可以提前模拟可能出现的故障,进而综合验证服务在不同故障场景下的容错能力、监控能力、人员响应能力、恢复能力等可靠性能力。通过不断的实施混沌工程,驱动产品可靠性提升。
华为云混沌工程最佳实践
从战略层面重视混沌工程
为用户提供稳定可靠的云服务是华为云的战略之一,混沌工程作为可靠性检验的核心手段,在华为云有着长远的思考。在业务成立之初就对混沌工程进行5年的业务规划,有清晰的发展蓝图,同时配合细粒度年度规划,就可以以规划牵引发展,不断完善混动工程能力。
从组织和文化上保障混沌工程可落地
华为云混沌工程能有效落地的第二个方面是有明确的组织保障。华为云设置专门的蓝军团队负责混沌工程业务,通过独立的组织保障混沌工程业务能持续发展;同时在绩效、任职资格上对设置混沌工程相关门槛,牵引SRE主动开展混沌工程业务。因此,要实施开展混沌工程业务,除了战略重视,在组织上,绩效设计上齐头并进,才能构建良好的混沌工程发展土壤。
构建标准的演练环境
实施混沌工程的第三个重要条件是构建一个接近于生产的演练环境。混沌工程本质上是对系统进行可靠性测试,此类测试和研发阶段的功能性测试有所不同,往往需要带有一定的业务流量,且环境建设接近于生产系统,才能有效发现潜在问题。大部分公司都会有一个灰度环境,新版本上线会先走灰度环境,可以在上线的过程中进行一定时间的混沌测试,测试通过后再推上生产系统。
基于FMEA和五维故障分析法进行故障场景分析
如何有效的进行混沌工程测试,华为云总结出FMEA+五维故障场景分析法。FMEA全称故障模式分析,通过这种方法可以有效的指导SRE进行分析场景。在FMEA的基础上,华为云还总结出了五维故障分析法,业务只要从冗余、容灾、过载、依赖、数据备份五个角度进行分析,就可以将所有的故障场景完全覆盖。冗余是指机房内部分节点故障的场景,容灾是整个机房或Region故障的场景下,业务要做跨机房甚至异地的容灾,过载是指服务容量在达到和超过一定倍数的情况下业务的流控和降级能力,依赖一般分为强依赖和弱依赖,一般的原则是核心业务不能强依赖非核心业务,非核心业务故障时,核心业务要能降级,核心业务故障时,要分析清楚影响。通过FMEA+五维故障分析法,可以有效的分析出业务存在的风险。
基于故障注入的红蓝攻防和生产突袭
在混沌工程的运作方式上,除常规的混沌测试外,还采用定期的红蓝攻防和生产突袭两种方式进行,红蓝攻防一般是选择一个完整的时间窗,将人员分为2组,一组为蓝军,负责分析故障场景,设计故障注入方案,并且执行故障注入,目的是制造出真实的故障;另一组为红军,在指定的时间内发现和恢复故障,红蓝对抗可以邀请管理层参加,增强团队成员和周边团队对混沌工程的重视。生产突袭是指一些故障场景在测试非常成熟的情况下,可以采用无任何通知的情况下,由蓝军注入故障,以突袭的形式进行,生产突袭相对红蓝对抗可以更全面检验业务的告警发现能力,人员响应人力,业务恢复能力,事件组织运作能力。
基于红黄绿码的可靠性成熟度评估
通过FMEA分析的故障场景,可以通过混沌工程进行成熟度评估,华为云采用了红黄绿码的方式,对于不具备混沌测试能力的场景标红码,可混沌测试但监控和恢复能力不达标的置黄码,对监控发现,响应速度,恢复速度都达标的场景标绿码,通过对场景的成熟度评估,可以帮助业务对可靠性风险的优先级排序,以便在改进上做决策。
构建自动化的混沌工程平台
混沌工程是非常复杂的业务,通过工具平台提升混沌工程执行效率是必不可少的条件,华为云在内部构建了自己的混沌工程平台,该平台包括4大模块,分别是故障注入模块,场景编排和自动化模块,审计合规模块,运营模块。故障注入模块是一个客户端,可以提供丰富的故障场景,可对网络设备、物理机、虚拟机、容器、操作系统、协议、中间件、数据库、应用及语言等多个层面实施故障注入;场景编排和自动化模块结合CMDB,通过运维管道可实施自动化的故障注入;审计合规模块同时打通内部变更系统和事件系统,并根据ISO 27001设计合规的演练报告,使得混沌测试整个流程完全线上化,而且符合认证和审计规范;运营模块主要围绕红蓝攻防的活动运营和演练记录,进行多维度的数据分析,为业务提供决策依据。
小结
华为云非常重视混沌工程在可靠性中的作用,其SRE团队在成立之初就从战略规划,组织建设,环境建设3个方面构建了混沌工程发展的土壤;并沉淀出FMEA和五维故障分析法,可以有效帮助业务厘清实施目标;结合红蓝对抗,生产突袭,红黄绿码等具体动作驱动混沌工程落地;同时建设了功能丰富的平台,为混沌工程的的有效开展提供便利的工具。正是由于以上一系列的措施,使得混沌工程能够在华为云可靠性建设中成功落地并发挥重要作用。