背景介绍
Redis 的高可用性和数据持久性依赖磁盘 IO。磁盘故障、文件系统损坏或内核 IO 阻塞可能导致写操作无限期阻塞,使数据无法持久化,甚至造成主进程假死。本演练模拟此极端场景,帮助您验证高可用切换机制,评估持久化失败对业务的影响。
基本原理
在节点通过fsfreeze命令模拟磁盘夯死表现。
风险告知
注意
此演练具有高度破坏性,请务必在充分了解其风险后,在非生产环境中谨慎操作。
通信中断:磁盘夯死后,也将影响探针程序与控制面的通信,此时该演练任务的状态可能显示为执行失败,但这恰恰是故障注入成功的表现。
无法自愈:超时机制可能失效,因为执行恢复动作同样需要IO操作。
恢复方式:推荐的恢复方法是登录分布式缓存服务Redis版控制台,对目标实例节点执行强制重启操作。
故障注入
1、纳管实例资源
导航至 故障演练 > 目标应用 > 应用资源 页面。
在资源类型页签中选择分布式缓存服务Redis版,然后单击添加资源。
在弹出的对话框中,勾选目标Redis实例,单击确定。
2、编排演练任务
导航至 故障演练 > 目标应用 > 演练管理页面,单击新建演练。
在基本信息页面,按提示填写演练名称和描述,然后单击下一步。
在演练对象配置页面:
配置动作组:为动作组命名,资源类型选择分布式缓存服务Redis版。
添加实例:单击添加实例,勾选上一步中添加的Redis实例。
添加故障动作:单击立即添加,在列表中选择磁盘夯死动作。
在弹出的参数配置框中,配置所需参数,然后单击确定。
持续时间:故障动作持续时间。由于此故障的特性,自动恢复可能无法保证。
故障节点:注入故障的目标节点(主节点或备节点)。
3、配置全局策略
在全局配置页面,按需添加保护策略和监控指标。
配置完成后,单击完成按钮,创建演练任务。
4、发起故障注入
发起演练:在演练管理列表找到对应演练任务,单击操作列的执行演练,在新页面中点击发起新演练。
进入实验:系统将自动跳转到本次演练的运行详情页,或在演练执行记录列表点击对应执行实例的详情进入。
注入故障:在动作组中,找到磁盘夯死动作卡片,单击执行。
查看日志:单击动作卡片本身,在右侧弹出的侧边栏中查看执行详情。
效果验证
在故障注入期间,可以通过以下多种方式验证演练效果。
1、观测实例指标:
登录分布式缓存服务Redis版控制台,进入目标实例的性能监控页,由于磁盘夯死导致监控指标无法上报, 目标节点的监控指标出现数据断点。
登录分布式缓存服务Redis版控制台,进入目标实例的实例详情页。观察实例的节点角色和状态。如果是目标节点是主节点,会触发主从切换。
2、业务应用验证:
观察业务应用表现,查看是看是否出现请求响应变慢、写入延迟升高,部分读写请求可能超时或失败,整体吞吐量下降。
如果是对主节点注入故障,查看该Redis实例的主备切换是否触发,应用是否连接到新的主节点。