背景
为了验证系统的健壮性,非强依赖系统的故障不会影响主流程,验证熔断策略是否生效等情况。
TC命令作为linux 上的流量控制(traffic control)命令,比firewalld更适合进行网络状况模拟。
如下命令是我的模拟命令用来模拟Redis timeout时对系统的影响。
我对其实验过程:
1、sudo tc qdisc add dev eth0 root handle 1: prio bands 4
2、sudo tc qdisc add dev eth0 parent 1:4 handle 40: netem delay 200ms 这里设置delay时间
3、tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dport 6379 0xffff flowid 1:4 这里是设置针对目标端口
sudo tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst yourip/24 flowid 1:4 这里设置针对目标IP
4、sudo tc filter show dev eth0 确认效果生效
5、tc filter del dev eth0 pref 4 删除配置的队列
注释:常用的命令解释
tc 命令
删除网卡队列配置: tc qdisc del dev wlan0 root
filter列出来: tc -s filter show dev lo
删除filter: tc filter del dev lo pref 4
1
tc qdisc add dev eth1 root handle 1: prio
为网卡eth1建议一个队列,名字为root,句柄为1
可以利用下面这三个命令为根队列1创建三个类别,分别是1:11、1:12和1:13,它们分别占用40、40和20mbit的带宽。
2
tc class add dev eth1 parent 1: classid 1:11 htb rate 40mbit ceil 40mbit
tc class add dev eth1 parent 1: classid 1:12 htb rate 40mbit ceil 40mbit
tc class add dev eth1 parent 1: cllassid 1:13 htb rate 20mbit ceil 20mbit
查看当前网卡上配过的流量控制规则
# tc[-s | -d ] qdisc show [ dev DEV ] tc -s qdisc show dev eth1
# tc[-s | -d ] class show dev DEV
# sudo tc filter show dev eth0
# tc -s -d qdisc ls
网友评论