作者:刘凇杉(chaosmeta-platform发起人)
一.云原生
理解
云原生旨在提供更高效、可扩展和可靠的应用程序交付和管理方式。云原生下的软件开发、构建和运行依托于云计算,通过容器化技术将应用程序拆分为一系列微服务,实现了应用现代化。这种架构提高了应用程序的可维护性、灵活性和可扩展性。
云原生改造步骤
由于金融业对安全性和稳定性有着极高的要求,云原生化改造过程中必须考虑合规性、连续性和功能完整性。为了确保金融业的数字化进程得以顺利推进,首先要保证业务的正常使用,可以针对特定的业务场景,选择一些关键的应用进行云原生改造。第二步再逐渐将现有的系统和应用逐步迁移到云原生环境中。这一步需要先仔细评估现有系统的复杂性和依赖关系,尤其是存在多年的僵尸应用。最后一步是“最终全量改造”,开始前要制定完整的迁移方案,迁移完成后使用混沌工程技术来整体验收系统的韧性、稳定性、可用性。
二.混沌工程
在蚂蚁集团,由于金融场景的多样性、规模化的服务节点以及复杂的系统架构,内部沉淀了很多故障信息。这些故障信息是混沌工程的最真实的变量,我们的目标是通过混沌工程实验来不断建立对系统的信心。
混沌工程的基本原则
- 引入故障:混沌工程通过有目的地注入各种故障和异常条件来模拟现实世界中的各种情况。这可以包括网络中断、服务器崩溃、资源耗尽等。通过引入故障,可以评估系统在各种不利环境下的表现。
- 观察和测量:混沌工程要求在引入故障的同时,对系统的状态和行为进行观察和测量。这可以通过监控系统指标、日志记录和度量系统来实现。观察和测量可以帮助识别系统中的潜在问题和性能瓶颈。
- 自动化和可控性:混沌工程注重自动化和可控性。这意味着故障注入过程应该是可重复的,并且可以通过自动化工具或脚本进行控制。这样可以确保故障注入的一致性和可靠性,并且可以轻松地进行多次测试和演练。
- 恢复和恢复能力:混沌工程的目标之一是测试系统的恢复能力。系统应该能够识别和处理故障,并尽快从故障中恢复正常运行。这要求系统具备自愈能力、自动恢复能力和优雅降级的能力。
- 分布式系统考虑:混沌工程通常应用于分布式系统中。在测试和评估系统鲁棒性时,需要考虑到分布式系统中的不同节点间的网络通信和协调机制。
三.ChaosMeta
ChaosMeta是一款专为云原生环境和自动化演练设计的先进混沌工程平台。它源自蚂蚁集团内部广受认可的混沌工程平台XMonkey,并代表了蚂蚁集团在跨BU级别大规模红蓝攻防演练中多年来积累的丰富经验、技术能力和产品实践。作为XMonkey的开源版本,ChaosMeta凝结了蚂蚁集团稳定性团队在混沌工程领域的方法论以及经过复杂故障场景驱动下的独到见解。ChaosMeta不仅继承了XMonkey在多年混沌工程实践中的成熟技术和方法论,也体现了开放源代码的承诺,通过与全球开发者和专业人士的互动交流,ChaosMeta努力成为连接实际工程问题和前沿技术研究的桥梁。
ChaosMeta-Platform的设计理念在于通过对不同类型的ChaosMeta-Operator 下发CR(Custom Resource)来注入故障,结合Argo实现复杂的工作流程管理。平台使用有向无环图(DAG)来定义任务流,并制定 Dependencies来确保在一项特定任务启动前,依赖的其他任务已经结束。整个攻击流程设计上既直观又易于理解。用户在创建故障实验后,可以立即发起实验并生成实验结果。在实验结果中,用户可以清晰地查看每个节点的运行状况和相关的云原生日志。得益于ChaosMeta-Platform的实践完全基于云原生技术,它极大地简化了在K8S集群中进行元数据管理的过程。通过这种方式,许多参数可以通过下拉菜单选项来选择,大大降低了用户的操作难度和理解成本。下面概述了整体的使用流程:
- 用户创建故障实验。
- 用户发起实验,平台生成实验结果。
- 用户在实验结果界面监控每个节点的运行情况及查看云原生日志。
- 通过平台提供的用户界面和工具集,用户可以轻松地查看K8S集群的元数据。
ChaosMeta-Platform通过这些集成的功能,不仅提升了故障实验的效率,还保证了用户能够在复杂的云环境中轻松开展测试任务。
ChaosMeta混沌工程-公众号:
Github-Star: