盗梦未来,浙江移动线上混沌工程的实践之路
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2. 盗梦未来,浙江移动线上混沌工程的实践之路
浙江移动 史军艇
3. 目录
浙江移动 史军艇
• 浙江移动 SRE团队
• “盗梦”演练平台 负责人
• 专注稳定性体系建设
01 浙江移动在云原生架构下的稳
定性挑战
02 传统企业落地混沌工程的步骤
03 混沌平台产品化演进
04 落地场景及案例分享
05 持续演进及思考
4. 运营商系统的特点及挑战
用户规模
底层异构
•
•
•
•
业务长尾
IOT拓展,使得用户规模指数增长
底层基础资源种类复杂,国产化硬件替代
业务架构复杂,存在长尾效应,垂直烟囱的紧耦合
秒杀、直播等新型营销模式的需求扩充
围绕技术架构演进和数字化转型,卸下传统企业繁重的历史包袱
新型需求
5. 浙江移动云原生演进历程
2013
2009
小型机下线,完成
100%去I
研究并试点AI技术
研究并推广DCOS技术
开始研究云计算技术
2016
2014
研究并推广数据库一
体机
2020
2017
研究并推广微服务架
构
2019
完成核心系统全面容器化
完全核心数据库去IE
完成核心系统全面微服务化
灰度发布
数据库去O
ARM国产化
6. 为什么要使用混沌工程
云原生应用架构自变量
•
•
•
•
•
•
•
•
基础设施出现问题对业务的影响
IAAS服务集群出问题对业务的影响
PAAS服务集群出问题对业务的影响
微服务组件出问题对业务的影响
多可用区部署、泳道隔离机制
自动扩缩容机制
服务注册、依赖问题
运维监控平台问题
......
没有一个架构师可以完全掌握所有的调用关系,实践是检验真理的唯一手段
7. 混沌工程的意义
三
对客户
对公司
故障驱动
二
“故障驱动”
对团队
一
提升用户感知
扩大用户基数
避免发生重大故障
抵御“黑天鹅”事件
减少收益损失
投资回报率最大化
提升组织技术能力
提升团队作战能力
打造1-5-10
人类总是幻想能穿越时空去修复历史故障
混沌工程提供了可能!
图片引自《盗梦空间》
8. 目录
01 浙江移动在云原生架构下的稳
定性挑战
02 传统企业落地混沌工程的步骤
03 混沌平台产品化演进
04 落地场景及案例分享
05 持续演进及思考
9. 落地步骤-分层故障注入能力
故障注入
单系统应用节点 单系统应用节点
数据节点 数据节点
组件节点 组件节点
控制节点 控制节点
管理平台
应用架构
无间
......
北斗
故障注入
故障注入
......
故障注入
故障注入
PAAS服务集
群
IAAS服务集
群
网络设备
物理机/虚机
istio、API网关、缓存、消息、ET
Mesos+marathon
DCOS
kubernetes
神舟
防火墙
交换机
X86
SLB
故障注入
DNS
ARM
有序的注入层次,无序的注入结果!
...
10. 落地步骤-历史故障画像
故障复盘机制
历史总会惊人的相似,前车之鉴是最容易获得的高价值结果
11. 落地步骤-实验场景的系统化探索
高价值场景为导向
混沌工程
L4
全链路异常识别能力
架构治理
全
对抗/纸牌
平面
级逃
生能
力
P1
容
量
集群
转移
容错
能力
P2
性
能
服务
韧性
能力
全链
路异
常识
别
P4
P3
监
控
告
警
P0
日
志
调
用
链
架
构
等
级
流控、熔断、异步化
等微服务韧性能力
所有节点可宕
机、可重启
L2
L3
快
移
故障画像/架构感知
混沌工程
具备逃生泳道、
平面切换能力
L1
逃
以泳道逃生、任意节点可
重启可宕机为出发点,用
失效影响分析(FEMA)
自底而上,探寻所有具有
高频发生率、重大风险的
故障点。
12. 落地步骤-多可用区、流量调度、演练平面
接入层
流量调度能力
可用区N
0.1演练平面
可用区一 可用区二 页面网关 页面网关 页面网关 页面网关
BFF BFF BFF BFF
中台网关 中台网关 中台网关 中台网关
微服务 微服务 微服务 微服务
DB DB DB DB
...
•
•
•
正常可用区进行晚上大
型演练
0.1演练平面白天无间断
演练
时间、空间最佳爆破半
径控制法则
13. 落地步骤-流量回放压测
•
通过流量回放压测,在任意可用区、任何时刻都可以发起生产流量,来验证故障注入的效果
14. 落地步骤-监控矩阵、分层自愈
业务数据级
(半自动、辅助决策)
应用服务级
(应急、半自动、辅助决策)
平台网元级
(常规、自动决策)
基础设施级
(常规、自动决策)
可观测能力和自愈能力越强,发现的意外惊喜会更多!
15. 目录
01 浙江移动在云原生架构下的稳
定性挑战
02 传统企业落地混沌工程的步骤
03 混沌平台产品化演进
04 落地场景及案例分享
05 演进思路及方向
16. 产品化演进-总体架构
业务形态
日常演练
联合演练
红蓝对抗
自动化演练
平台能力
准备
评估
执行
观测
清场
报告
注入框架
cmcc-chaos
chaosblade
基础设施
IDC机房
chaos mesh
17. 产品化演进-沉淀演练经验库
•
•
基础-进阶-高级的演练
体系
8大场景主题
18. 产品化演进-分级演练和对抗演练
•
•
•
•
•
MTTR、MTBF
P1-P4
演练星盘
场景热度
IAAS、PAAS、SAAS场
景分类
......
19. 目录
01 浙江移动在云原生架构下的稳
定性挑战
02 传统企业落地混沌工程的步骤
03 混沌平台产品化演进
04 落地场景及案例分享
05 演进思路及方向
20. 实践案例-容器云
案例一:分布式任务调度平台孤儿容器实验
实验目的:
验证在容器云平台调度组件出异常时,容器云平台本身以及
ET分布式调度框架是否具备重复任务的容错机制,保证业务
的准确性。
实验结果:
containerd进程出现资源异常重启之后,无法调度到历史的
容器id,这样就导致分布式调度平台去销毁某个任务容器时,
调用marathon、mesos接口成功,但是最终调用dockerAPI失
败,导致老的容器销毁失败,结果是ET平台又重新拉起一个
相同任务的容器产生批量重复数据。
实验成果:
(1) 开源组件BUG:容器云组件版本开源bug导致containerd子进程异常重启的场景下无法识别之前拉起的容器,目前已替换所有bug版本。
(2) 容器平台查杀能力:通过自研改进来增强平台的抵抗能力,在孤儿容器产生的第一时间进行自毁查杀。
(3) 应用平台设计规范:在应用研发流程中,完善分布式调度平台增加应用心跳注册的机制。
21. 实践案例-应用链路
案例二:多服务中心耦合性的雪崩实验
实验目的:
应用链路的设计是否满足高内聚低耦合原则,通过中心化服
务个别节点异常后可能引发的雪崩效应验证,另,自愈模型
是否可以把雪崩场景控制在业务无感知的范围内。
实验结果:
个别实例的性能低下,最终导致了5个实例左右的实例非健
康,即在雪崩效应的萌芽期,通过无间平台自愈恢复。
实验成果:
(1) 研发链路优化:通过分析业务调用链,驱动研发进行更高效的调用改造,以此来提升服务性能。
(2) SRE自愈模型优化:改进运维平台的自愈模型,提升实例的健康度精准诊断,使得可以应对生产中绝大多数的性能恶化场景。
22. 实践案例-组件依赖
案例三:redis集群节点内存耗尽实验
实验目的:
redis组件集群部分节点内存溢出产生异常后,观察是否
会影响业务的正常使用。
实验结果:
redis集群其中一个主节点进行OOM-KILL后,网关的主体
服务无法有效地自动切换到所在的备用节点,最后通过快
速重启故障redis节点进行恢复,导致影响业务5分钟。
经查,由于主体服务中redis客户端代码bug,屏蔽了自动
识别redis节点状态的配置引起。
实验成果:
(1) 客户端代码优化:改造redis客户端代码,使得可以自动识别redis节点的可用状态,并完成切换。
(2) 应急团队锤炼:redis节点OOM时,完成分钟级的发现并恢复。
(3) 逃生配置失效:红军在为屏蔽单平面redis的异常,对抗中做了可用区切换,结果意外发现array的配置未同步,使得可用区成为假平面
23. 目录
01 浙江移动在云原生架构下的稳
定性挑战
02 传统企业落地混沌工程的步骤
03 混沌平台产品化演进
04 落地场景及案例分享
05 演进思路及展望
24. 演进思路
•
•
•
•
•
•
丰富传统行业特性化的演练场景
完善云原生演练能力,扩充service mesh的高价值场景,以应对大
规模service mesh应用实施
提升平台的集成能力,适配各类框架,降低接入成本,统一paas
标准
继续扩展可视化演练能力,建立完善的数字化演练体系及架构体
系
自动化演练能力赋能微服务设计,建立从CI/CD开始的演练流水线,
通过自动化演练的故障标记,结合aiops模型,做高精度故障抵御、
自动决策
25. 未来展望
蓝军战略
混沌工程
盗梦未来,始终跑在真正的故障之前,融合云原生自动驾驶技术,让代码对抗代码
敏捷为中心的内驱力,为企业需求迭代、业务模式创新按下快进键
从技术价值迈向商业价值
26.