istio tcp连接超时测试
除了 tc
以外,以下这些工具和方法也可以用来在 Istio 中测试 TCP 连接超时(connectTimeout),包括控制连接建立时间、模拟端口不可达、无响应服务等:
✅ 1. iptables —— 拦截并丢弃 SYN 包(最直接控制连接建立阶段)
你可以在目标 Pod 上使用 iptables
丢弃 TCP 请求,模拟连接超时:
# 丢弃目标端口上的 SYN 请求(例如 8080)
iptables -A INPUT -p tcp --dport 8080 --syn -j DROP
📌 效果:
- 发起请求的 client 会“连接不成功但不立即失败”,最终因 connectTimeout 超时。
🔄 恢复规则:
iptables -F
在 Istio 中测试 TCP 连接超时(connectTimeout) 主要是验证 Envoy 在发起 TCP 连接时,如果在指定时间内无法完成三次握手,会主动终止连接。这个设置一般在 DestinationRule
中配置:
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:name: my-service-dr
spec:host: my-service.default.svc.cluster.localtrafficPolicy:connectionPool:tcp:connectTimeout: 5s
✅ 方法二:目标服务使用 tc
命令故意延迟 TCP 响应
步骤:
- 在被访问的 Pod 上使用
tc
工具增加延迟:
# 延迟响应 SYN-ACK 包
tc qdisc add dev eth0 root netem delay 10s
- 设置
connectTimeout: 5s
,然后从业务容器访问该服务
curl my-service.default.svc.cluster.local:8080
预期效果:
- 请求约 5 秒后失败
- 返回 503,proxy 日志中看到
connection timeout
类似字样