Firewalld reload引起的ETCD超时故障排查

测试人员在系统使用过程中发现页面会时不时卡顿一会儿,查看日志后发现是由于etcd访问超时引起的:

# 访问超时

{"level":"warn","ts":"2022-03-30T17:35:37.733+0800","caller":"clientv3/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"endpoint://client-81685990-3b94-4e45-a30b-3cd6b82579a5/nsp-etcd:22379","attempt":1,"error":"rpc error: code = Unknown desc = context deadline exceeded"}

# etcd切换leader

{"level":"warn","ts":"2022-03-30T17:35:34.001+0800","caller":"clientv3/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"endpoint://client-81685990-3b94-4e45-a30b-3cd6b82579a5/nsp-etcd:22379","attempt":0,"error":"rpc error: code = Unavailable desc = etcdserver: leader changed"}

超时和重新选举的截图: 

学习了一下etcd的工作原理和raft协议,发现我们设置的参数对网络质量要求较高,—election-timeout值为100,100m收不到心跳就会重新选举,所以就需要检查是什么原因导致的超时。

写了个脚本对几个方向的网络目标进行长ping,ping的间隔设置为1秒10次,发现确实会偶尔出现丢包现象,因为丢包时间很短(少于1秒),因此使用常规的ping无法发现。

排查了各种会导致网络丢包的组件,最终定位在firewalld,每次修改规则后我们都使用了reload来重新加载规则,这种方式会导致系统iptables规则重置,出现短暂的丢包。

修改了firewalld的配置方式,问题得到了解决。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值