随着云原生技术及大量开源软件的引入,IT系统架构逐步从传统的MVC三层架构(表示层UI、数据访问层DAL、业务逻辑层BLL)向微服务、平台容器化架构演进,新的技术架构中服务调用关系错综复杂、开源软件单点故障风险高等都给传统运维方式提出挑战。亟需不定期在生产业务系统中开展混沌演练,进一步提升业务系统的高可用,从而在实际生产中检验系统稳定性,提高业务系统应急和高可用保障能力。
混沌工程属于一门新兴的技术学科,行业认知和实践积累比较少,大多数IT团队对它的理解还没有上升到一个领域概念。阿里电商域在2010年左右开始尝试故障注入测试的工作,希望解决微服务架构带来的强弱依赖问题。
混沌工程是一种提高技术架构弹性能力的复杂技术手段。混沌工程经过实验可以确保系统的可用性,它旨在将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。
混沌演练常用的工具有阿里开源的ChaosBlade、Netflix开源的ChaosMonkey。
4.1 演练场景选取
序号 | 主题 | 分类 | 场景 |
1 | 技术组件依赖主题 | 数据库层 | 数据库切换 |
2 | 大量备份恢复 | ||
3 | 数据库单节点服务中断 | ||
4 | 数据库主机单点挂掉 | ||
5 | 数据库连接数满 | ||
6 | 索引失效 | ||
7 | 大量慢SQL |
4.2 系统架构
4.3 演练目标
通过混沌演练验证云原生及大量开源软件等新技术在基础设施和软件方面的高可用性能力,在演练过程中发现应急处理和高可用能力的盲点与不足,持续提升业务连续性保障尤其是高可用保障能力、以及应急保障能力。
本次演练选取的是技术组件依赖主体-数据库层(开源MySQL数据库)7个应用场景,通过本次混沌演练实施操作,及时发现MySQL数据库在技术保障上的不足,及时分析、处理和优化数据库结构,从而进一步提升MySQL数据库对业务系统支撑的应用保障能力。
4.4 演练影响
影响业务:演练期间运营商某业务系统使用会受到短暂影响,例如系统登陆、业务数据交互等功能会出现短暂性异常。
影响范围:业务系统使用人员。
4.5 风险评估与应急措施
对本次演练进行充分的准备,包括演练前检查,演练中业务保障、演练后的生产验证,针对每个环境可能出现的风险点进行预估,并制定应对举措如下:
阶段 | 风险预估 | 应对举措 |
演练前 | 检查场景涉及服务器硬件故障 | 演练前对演练对象进行集中巡检,确保无硬件问题 |
检查场景设计服务器存在性能瓶颈 | 演练前实时关注演练系统的性能情况,如有性能瓶颈提前优化 | |
演练中 | 单容器、单虚拟机、单物理机、单应用节点、单Slave节点在故障模拟后无法重启 | 单设备故障不影响业务连续性,演练当前硬件维修人员现场保障 |
极端情况下,如误操作,可能导致单集群的故障 | 切换到应急系统或容灾系统 | |
演练后 | 业务影响反馈超时或失败 | 做好全方位的生产验证测试 |
4.6 演练详细步骤
本次混沌演练工具主要选用的是ChaosBlade和脚本相结合,演练主要采用攻防对抗的方式进行实施,实现故障注入的随机触发,故障半自动化恢复。
VIP | 内网IP | 主机名 | 用户名 | 登陆方式 |
1.1.1.10 | 1.1.1.1 | hostname1 | mysql | ssh |
1.1.1.2 | Hostname2 | mysql | ssh |
软件 | 版本 | 作用 |
keepalived | 1.3.6 | VIP检测 |
mysql | 5.7.32 | 数据库 |
故障注入主要特征是混沌工程中的故障随机性,本文涉及MySQL数据库故障演练场景主要包含有数据库切换,大量备份恢复等7个场景,采用chaosblade模拟故障随机触发。
如下选择其中一个故障场景进行介绍。
序号 | 操作步骤 | 验证方法和操作命令 | 预期结果 |
1 | 停止VIP主机mysql实例 | 1.ssh登陆1.1.1.10主机 2.执行命令: $sh chaosblade-Failure.sh”,选择故障选项(故障实现方式:主动宕库) | 命令执行成功,3306进程不存在 |
故障分析和故障恢复主要描述演练场景下故障的处理过程,以及故障分析的实际操作、分析过程,详细的展现各演练场景中分别对故障分析和故障恢复处理的整过过程,从而更加高效的提高数据库的稳定性,提升业务系统保障能力。
如下选择其中一个故障场景进行介绍。
序号 | 操作步骤 | 验证方法和操作命令 | 预期结果 |
1 | 故障分析 | 1.ssh登陆1.1.1.10主机 2.监控告警 3.执行命令: sh chaosblade-Check.sh,选择分析选项 | 1.定位到故障类型:mysql连接数满,新mysql连接不成功 |
2 | 故障恢复 | 1.登陆数据库$mysql -h1.1.1.10 -u** -P3306 -p 2.检查连接数和业务连接情况 mysql>show variables like %max_connections%; mysql>select count(*) from information_schema.processlist; 3.查询阻塞sql确定阻塞情况 mysql>select * from information_schema.innodb_lock_waits; mysql>select * from information_schema.innodb_locks; mysql>select * from information_schema.innodb_trx where trx_id=’’G 4.查杀阻塞的sql, mysql>kill pid;或者扩大最大连接数mysql>set GLOBAL max_connections=1000; | 1.故障节点新mysql连接正常 2.keepalived运行正常 3.mysql数据库正常 4.远程登陆VIP数据库正常 5.业务访问正常 |
3 | (业务验证) | 运营商业务系统登陆,模块功能使用 | 业务验证正常 |
4.7 总结
本次演练采用工具+脚本的方式主动故障随机式注入,有效检验了数据库系统高可用性能,验证了在极端情况下,数据库架构的高可用保障能力,同时也为场景能力平台化做好准备,以及随机化故障的应对和处理积累了经验,提升数据库对业务支撑的连续性保障能力。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129999.html
摘要:这一次,经历了年时间的改进和实践,累计在线上执行演练场景达数万次,我们将阿里巴巴在故障演练领域的创意和实践,浓缩成一个混沌工程工具,并将其开源,命名为。 showImg(https://segmentfault.com/img/remote/1460000018704226); 阿里妹导读:减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今...
摘要:通过本文,你将了解到为什么需要混沌工程,阿里巴巴在该领域的实践和思考未来的计划。而阿里目前并没有一个专门的职位来实施混沌工程,项目目标业务场景人员结构实施方式的不同导致了对于稳定状态行为的定义不太标准。 阿里妹导读:混沌工程属于一门新兴的技术学科,行业认知和实践积累比较少,大多数IT团队对它的理解还没有上升到一个领域概念。阿里电商域在2010年左右开始尝试故障注入测试的工作,希望解决微...
摘要:云计算十大关键词分别是云原生高性能混沌工程混合云边缘计算零信任优化治理数字政府低碳云企业数字化转型。当前,云原生与云安全呈加速融合趋势。 7月27日,由中国信息通信研究院、中国通信标准化协会主办的2021年可信云大会在京召开。中国信息通信研究院云计算与大数据研究所所长何宝宏在会上正式发布2021云计算十大关键词以及对应的重要发展趋势。 ...
摘要:作者原文第一部分应用混沌工程理论到区块链框架。你可以抗议混沌环境在像与这种权限不足的公共区块链网络上是否存在。在之后这些被称之为混沌工程。混沌原则开始进入正式规范。名字是混沌工程通过实验建立对系统行为的信心。 作者 Vipin Bharathan原文:https://medium.com/@vipinsun/... 第一部分. 应用混沌工程理论到区块链框架。 混沌与工程两个字是没有什么...
摘要:我们决定使用一个已有的实验平台来对围绕系统的应用级别混沌实验进行编排,即紫色部分,通过对下层像这样的中间件进行注入来实现。所以一些人可能没有对应的知识和机能来进行合适的混沌实验。 Roman Atachiants · Tharaka Wijebandara · Abeesh Thomas原文: https://engineering.grab.com/...译:祝坤荣 背景 对每个用户...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4100·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3597·2023-01-11 13:20