本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
网络延迟直接影响应用程序和服务的响应速度,过高的网络延迟会影响用户的使用体验。网络流量增大、线路不稳定等情况都会增加网络延迟。通过此演练场景验证系统在网络延迟时的告警和恢复情况。
使用限制
该演练场景需要使用tc(Traffic Control)工具及其依赖的内核netem组件。
如系统缺少tc工具,请执行
sudo yum install -y iproute-tc
或sudo apt-get install -y iproute2
安装,或者执行插件时指定相关参数自动安装。如系统内核缺少netem组件,如CentOS,可执行
sudo yum install kernel-modules-extra
安装软件包并重启。警告注意安装
kernel-modules-extra
会修改内核版本,请谨慎操作,建议使用其他操作系统的ECS进行演练。
实现原理
本方案使用云助手插件ACS-ECS-NetDelay
,使用tc(Traffic Control)工具和netem组件对网卡增加特定规则,实现对Linux内核流量控制。该插件可实现对全局IP或仅针对单个IP进行限制,其中云助手网段100.100.0.0/16
不会受到影响。
使用指南
演练准备
请确保您的ECS实例已安装云助手Agent,并且云助手状态为正常。具体操作,请参见查看云助手状态及异常状态处理。
故障注入
登录ECS实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
使用具有sudo访问权限的用户,运行云助手插件
ACS-ECS-NetDelay
。sudo acs-plugin-manager --exec --plugin ACS-ECS-NetDelay --params inject,dev=eth0,[time=paramA],[jitter=paramB],[target-ip=paramC],[replace=paramD],[duration=paramE],[install-tc=paramF]
[]
内为可选故障注入参数,参数说明:dev(必填):需要注入的网卡,如eth0,可执行
ifconfig
查看当前系统的网卡。time(可选):延迟时间,单位为ms,默认100。
jitter(可选):抖动范围,单位为ms,默认10。
target-ip(可选):预期产生影响的目标IP,默认为空,表示对所有IP增加延迟,如指定目标IP,则只有该IP会受到影响。
replace(可选):如网卡已有设定的tc规则,注入时会产生冲突导致失败。如确定对原有规则进行覆盖,可指定值为true。
duration(可选):持续时间,单位为s,默认为300。
install-tc(可选):如系统缺少
tc
工具,可指定该参数为true
自动安装,默认false
。
显示如下所示时,说明云助手插件
ACS-ECS-NetDelay
执行成功。通过ping目标网络,查看故障注入是否成功。
故障恢复
方法一:等待超时自动恢复。
方法二:执行故障恢复命令。
sudo acs-plugin-manager --exec --plugin ACS-ECS-NetDelay --params recover
演练案例
模拟业务访问目标网络。
ping www.taobao.com
本示例以访问www.taobao.com为例进行说明,返回示例如下:
执行故障注入。
sudo acs-plugin-manager --exec --plugin ACS-ECS-NetDelay --params inject,dev=eth0,time=1000,jitter=30,duration=120
对目标IP,增加1000ms延迟,抖动30ms。
查看注入效果。
查看网络延迟情况,ping命令在注入后延迟增加1000ms,产生的延迟在1000±30ms范围内。
等待故障恢复。
注入超时后,延迟降低回原有水平,网络恢复。