背景
Elasticsearch一旦遇到网络抖动就可能节点(单个或者多个)掉出集群。从而集群出现red/yellow状态,理论情况下ES会自愈,但某些情况下可能非预期,此时就需要我们模拟各种case了,比如网络丢包。
操作
1. 进入ES pod获取虚拟网卡信息
cat /sys/class/net/eth0/iflink
获取到的虚拟网卡的编号为 64;
2. 进入宿主机,找到虚拟网卡名称
ip link
3. tc命令模拟随机丢包 10%
sudo tc qdisc add dev lxcf89d7a70df9b root netem loss 10%
补充:tc命令模拟延迟(从 lxcf89d7a70df9b 虚拟网卡出去的包将延迟 40ms)
sudo tc qdisc add dev lxcf89d7a70df9b root netem delay 40ms
4. 删除规则(关闭模拟丢包)
sudo tc qdisc del dev lxcf89d7a70df9b root
丢包监控:
参考
获取虚拟网卡:
查看docker与宿主机网卡的对应关系,tcpdump在容器外网络抓包_查到pod网卡与宿主机对应关系-CSDN博客文章浏览阅读2.5k次。通过iflink找到网卡对应关系1. 在宿主机上执行命令ip link$ ip link......13: veth56ecf40@if12: mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default link/ether 56:17:10:68:88:b1 brd ff:ff:ff:ff:ff:ff link-netns_查到pod网卡与宿主机对应关系,multicast,up,lower_up>https://blog.csdn.net/weixin_43002202/article/details/109516032丢包和延迟作用于某个指定的目的地址:
Linux模拟网络丢包与延迟的方法-腾讯云开发者社区-腾讯云netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如Fedora、Ubuntu、Redhat、...https://cloud.tencent.com/developer/article/1721030