跨主机Docker网络间歇性无法访问的原因
2018-09-29 19:25
190 查看
Docker网络间歇性无法访问的原因
随着访问量增加,偶然间发现部署在docker上的某种web服务会发生间歇性的卡死,起初认为是防火墙原因,经过再三排查并没有发现任何异常记录。
通过抓包发现客户端向服务器发送了SYN后,服务端虽然收到了SYN,但是并没有做任何处理,数据包被丢弃了。经过一段时间后测试又恢复正常,可以响应SYN ACK,并且正确建立了连接。服务端在测试环境中运行正常,没有出现过类似的问题,由此可见问题依然产生在网络环境上。
Docker发布服务时使用了iptables的nat转发,手动删除对应服务的SNAT规则后发现SYN ACK响应正常,由此推断问题出现在SNAT上,经过调查发现由于网络是基于nat转发且经过snat后,源ip地址均会变更为公网地址,就会导致同一个地址的数据包头部时间戳是乱序的,并不能保证线性增长,如果开启/etc/sysctl.conf中的net.ipv4.tcp_tw_recycle后,一旦有某个客户端断开,服务端可能会将该源ip地址中时间戳相对较小的数据包丢弃,导致连接失败。
关闭net.ipv4.tcp_tw_recycle后问题解决。
阅读更多
相关文章推荐
- 导致微信公众平台设置网页授权域名“无法访问xxx指向的web服务器(或虚拟主机)的目录,请检查网络设置”的一种原因
- Docker网络基础---Docker跨主机容器访问通信
- XP无法访问网络邻居原因总结(转大黄)
- “在使用Samba进行建立Wisamba无法访问,你可能没有权限使用网络”的一种问题原因及解决
- XP无法访问网络邻居原因总结
- XP无法访问网络邻居原因总结
- “在使用Samba进行建立Wisamba无法访问,你可能没有权限使用网络”的一种问题原因及解决
- Docker容器访问宿主机网络的方法
- 安装docker后,VMware网络无法访问了,VMware重置网络设置
- 无法访问网络共享,源自难以想象的原因!
- 火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法
- ImageView无法显示图片的一种原因——主线程访问网络
- Docker: 解决Docker无法在电信网络中访问外网
- 局域网中,ip可以访问其他计算机,“网络”中无法发现共享计算机,也无法通过主机名访问。
- 主机上的vsphere ha 代理无法访问其它主机的部分管理网络地址
- 宿主机访问虚拟机的网络
- Docker实战(三)Docker 跨主机网络overlay、macvlan和flannel
- 登录SQL Server2008出现错误未找到或无法访问服务器,出现与网络相关的或特定于实例的错误。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接
- Linux(ubuntu)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因
- Windows (诊断后)提示:wlan没有有效的IP配置及无法连接该网络的原因