故障演练

更新时间: 2024-09-04 15:29:34

故障演练是实现系统稳定性保障的关键手段,它通过向系统注入可控的特定故障,以验证和促进系统的高可用性建设,以及训练相关人员应急能力、验证故障处理机制,从而减少真实故障发生时的故障恢复时间(MTTR,Mean Time To Repair)。阿里云提供了ECS故障注入的云助手插件ecs-fault-{scenename}ACS-ECS-{scenename}进行故障注入,可以更精确、便捷地进行演练,提升演练的效果和效率。

故障演练优势

  • 免费开源:所有执行过的插件会自动保存在云助手目录下,其中包含故障注入源码和可执行文件。

  • 遵循最小化原则:每个插件都仅代表一个特定的演练场景,按需下载使用。

  • 操作便捷高效:所有安装云助手的ECS实例均可执行,只需一行命令即可完成插件的安装和运行。

故障演练支持的场景

演练场景

说明

宕机演练

服务器宕机是一种常见的故障现象,其根源来自于软件和硬件上发生的异常,且几乎无法避免。通过模拟内核故障造成的ECS宕机,可以测试业务系统在宕机时的反应、检测系统恢复能力、验证监控和告警机制的有效性等,并基于演练结果制定应对策略,确保生产环境发生宕机时系统能够迅速恢复正常运行,降低业务中断风险。

CPU利用率高演练

CPU利用率是衡量业务系统是否健康的一个重要指标,为使业务达到足够的稳定性,CPU利用率需保持在合理的范围内。过高的CPU利用率会导致业务延迟甚至中断。通过注入高CPU故障,可以测试业务系统在特定CPU负载时的反应、检测系统恢复能力、验证监控和告警机制的有效性等,并基于演练结果制定应对策略,确保生产环境高CPU利用率时系统能够迅速恢复正常运行,降低业务中断风险。

内存溢出(OOM)演练

通过注入进程不断消耗内存,模拟云服务器ECS发生OOM(即内存溢出)情况,测试业务进程是否会被终止、检测系统恢复能力、验证监控和告警机制的有效性等,并基于演练结果制定应对策略,确保生产环境发生OOM时系统能够迅速恢复正常运行,降低业务中断风险。

磁盘IO Hang和磁盘IO高负载演练

  • IO Hang演练:IO Hang是指在进行读或写操作时,系统因为某些原因无法完成这些操作,导致进程或系统无法继续正常工作的一种情况。其可以由多种原因引起,包括硬件故障、驱动问题、文件系统错误、网络延迟或拥塞等。对业务产生性能下降,服务延迟,数据一致性问题等风险。通过此演练场景验证系统在磁盘发生IO Hang时的告警和恢复情况。

  • IO高负载演练:IO高负载是一种常见的故障现象,导致的原因可能由于过高的业务进程负载,非预期的非业务进程占用,内存资源不足间接导致等情况。出现该情况可能会导致业务性能受损,数据丢失等风险。因此通过此演练场景验证系统在IO高负载时的告警和恢复情况。

系统负载高和PID资源不足演练

  • 系统负载高演练:系统负载load是衡量系统工作量的一个指标,具体的表示为:在特定时间间隔内,系统处于可运行状态和不可中断状态的平均进程数。监控负载load是一个重要指标,可以判断当前业务的负载情况,用于及时告警并做出应对措施。

  • PID资源不足演练:在操作系统中,PID(Process Identifier)是用于唯一标识进程的数字,可以在进程释放后被重复利用。虽然很难将PID资源耗尽,但仍存在意外耗尽的情况,导致新进程无法创建,可能会导致业务挂起,从而影响业务能力。因此,有必要模拟PID资源耗尽或主动模拟业务挂起的情况,以检测业务的高可用能力。

使用方法

本最佳实践依赖云助手及云助手插件,使用格式如下。

  • 故障注入

    sudo acs-plugin-manager --exec --plugin {plugin-name} --params inject,paramA=a,paramB=b
  • 故障恢复

    sudo acs-plugin-manager --exec --plugin {plugin-name} --params recover
说明
  • {plugin-name}为对应云助手插件的插件名。

  • 插件一般分为注入(inject)和恢复(recover)两个动作。

  • 故障注入会拼接注入参数,参数键值对内用等号连接,参数对之间用逗号连接。

上一篇: 方法三:使用原实例系统盘快照的自定义镜像创建实例以恢复数据 下一篇: 宕机演练
阿里云首页 云服务器 ECS 相关技术圈