searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

混沌测试

2023-12-15 06:57:03
6
0
1. 隔离环境建设
明确注入故障的环境是否会影响到业务?
推荐应用至少有两个环境来区分用户流量,环境上至少有一个和生产隔离的灰度环境,至少初期必须如此。环境建设中需要关注的问题如下:
隔离性:灰度环境和生产环境尽量做到隔离,包括但不限于网络隔离,权限隔离,数据隔离等,考虑到一些容灾的能力,还可以将两个集群建设在不同地域的 Kubernetes 集群中。
真实性:灰度环境和生产环境尽量保持一致,比如外部依赖,组件版本。
 
2. 故障场景分析
 
历史故障
历史故障通常是快速了解一个系统薄弱能力的教科书,通过分析历史故障,进行分类,可以快速得出当前系统那些组件更容易出现问题。
Ex:系统能力需要进行快速的弹性伸缩,伸缩失败可能影响业务流量,可以推断出它强依赖 Kubernetes 的扩缩容能力,需要监控关注此能力的可用性;比如系统数据读写频繁,历史出现过数据不一致问题,则可以考虑在数据层面进行稳定性建设,增加备份能力,回滚能力等。
 
架构分析
系统的架构在一定程度上决定了这个系统的瓶颈,通过分析系统的依赖也可以更了解系统的边界,也更便于进行运维上的优化。
Ex: 一个应用的部署方式是主备模式的,那必须要检查的能力就是主备切换是否顺畅,切换过程是否影响到业务流量;比如一个应用强依赖底层存储,一旦存储挂掉,业务会大面积故障,则在整理高可用能力的时候就需要想到存储挂掉后是否有降级方案,存储问题是否可以提前预警。
 
社区经验
很多系统的架构都是大同小异的,参考社区或友商的经验,在业界爆出一些故障时进行自我反思和重新整理,多次发现了自身的一些问题。网线被挖断、删库跑路等宝贵的经验库,都在我们定期演练的列表中。
Ex:在阿里云原生的架构上,整理了如下所示的演练模型供参考,在这个高可用能力模型中,根据系统架构按照管控层组件、元集群组件、扩展组件,数据存储,节点层,整体集群进行区分,在每个模块中有一些通用的故障可以互相借鉴。
 


 
3. 系统高可用能力建设
 
发现能力
监控和告警是能够发现系统是否处于稳态并让应用负责人一目了然的方式
 
恢复能力
故障来临后,最优的结果是系统稳定丝滑,毫无影响,这对系统的能力建设要求极高,而实际的情况往往更为复杂。在阿里内部实践中,除了对系统本身专门建设了基本的进程自愈、切流能力、迁移能力、限流能力等,也建设了预案中心,中心化的沉淀我们所有的止损能力到系统中,白屏管理,接入,运行,根据专家经验建立止损能力集,作为故障时的重要工具。
 
4. 演练实施
一般情况下首次演练挑选一些核心场景进行,在预发或测试环境,工具上使用半自动化的脚本或仅包含故障注入模块的流水线来触发,在研发和运维人员在场的情况下进行首次试验。
1试验前确认场景的预期,比如故障注入后需要 1min 进行告警,10min 内系统自愈恢复,以便在演练过程中随时确认。
2演练执行后需要各部分人员进行人工确认系统表现是否符合预期,
3演练结束后及时恢复故障和环境。
场景在演练过程中不符预期的部分,需要多次在此阶段不断验证和演练;符合预期的场景进行标记,可以开始进入到常态化演练阶段。
 
 
 
 
0条评论
作者已关闭评论
陆****娇
1文章数
0粉丝数
陆****娇
1 文章 | 0 粉丝
Ta的热门文章查看更多
陆****娇
1文章数
0粉丝数
陆****娇
1 文章 | 0 粉丝
原创

混沌测试

2023-12-15 06:57:03
6
0
1. 隔离环境建设
明确注入故障的环境是否会影响到业务?
推荐应用至少有两个环境来区分用户流量,环境上至少有一个和生产隔离的灰度环境,至少初期必须如此。环境建设中需要关注的问题如下:
隔离性:灰度环境和生产环境尽量做到隔离,包括但不限于网络隔离,权限隔离,数据隔离等,考虑到一些容灾的能力,还可以将两个集群建设在不同地域的 Kubernetes 集群中。
真实性:灰度环境和生产环境尽量保持一致,比如外部依赖,组件版本。
 
2. 故障场景分析
 
历史故障
历史故障通常是快速了解一个系统薄弱能力的教科书,通过分析历史故障,进行分类,可以快速得出当前系统那些组件更容易出现问题。
Ex:系统能力需要进行快速的弹性伸缩,伸缩失败可能影响业务流量,可以推断出它强依赖 Kubernetes 的扩缩容能力,需要监控关注此能力的可用性;比如系统数据读写频繁,历史出现过数据不一致问题,则可以考虑在数据层面进行稳定性建设,增加备份能力,回滚能力等。
 
架构分析
系统的架构在一定程度上决定了这个系统的瓶颈,通过分析系统的依赖也可以更了解系统的边界,也更便于进行运维上的优化。
Ex: 一个应用的部署方式是主备模式的,那必须要检查的能力就是主备切换是否顺畅,切换过程是否影响到业务流量;比如一个应用强依赖底层存储,一旦存储挂掉,业务会大面积故障,则在整理高可用能力的时候就需要想到存储挂掉后是否有降级方案,存储问题是否可以提前预警。
 
社区经验
很多系统的架构都是大同小异的,参考社区或友商的经验,在业界爆出一些故障时进行自我反思和重新整理,多次发现了自身的一些问题。网线被挖断、删库跑路等宝贵的经验库,都在我们定期演练的列表中。
Ex:在阿里云原生的架构上,整理了如下所示的演练模型供参考,在这个高可用能力模型中,根据系统架构按照管控层组件、元集群组件、扩展组件,数据存储,节点层,整体集群进行区分,在每个模块中有一些通用的故障可以互相借鉴。
 


 
3. 系统高可用能力建设
 
发现能力
监控和告警是能够发现系统是否处于稳态并让应用负责人一目了然的方式
 
恢复能力
故障来临后,最优的结果是系统稳定丝滑,毫无影响,这对系统的能力建设要求极高,而实际的情况往往更为复杂。在阿里内部实践中,除了对系统本身专门建设了基本的进程自愈、切流能力、迁移能力、限流能力等,也建设了预案中心,中心化的沉淀我们所有的止损能力到系统中,白屏管理,接入,运行,根据专家经验建立止损能力集,作为故障时的重要工具。
 
4. 演练实施
一般情况下首次演练挑选一些核心场景进行,在预发或测试环境,工具上使用半自动化的脚本或仅包含故障注入模块的流水线来触发,在研发和运维人员在场的情况下进行首次试验。
1试验前确认场景的预期,比如故障注入后需要 1min 进行告警,10min 内系统自愈恢复,以便在演练过程中随时确认。
2演练执行后需要各部分人员进行人工确认系统表现是否符合预期,
3演练结束后及时恢复故障和环境。
场景在演练过程中不符预期的部分,需要多次在此阶段不断验证和演练;符合预期的场景进行标记,可以开始进入到常态化演练阶段。
 
 
 
 
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0