襄阳市建设厅官方网站,wordpress yootheme,信息流广告是什么意思?,汕头网站建设推广厂家和业务方进行联调#xff0c;业务方调用我方服务#xff0c; 我方服务部署在虚拟机的docker容器中 提供grpc服务#xff0c; 通过公网vip lvs到宿主机端口
联调发现 ping 和 telnet我方端口都正常#xff0c; 但是通过grpc协议调用不通#xff0c;一直超时
在容器上和lv…和业务方进行联调业务方调用我方服务 我方服务部署在虚拟机的docker容器中 提供grpc服务 通过公网vip lvs到宿主机端口
联调发现 ping 和 telnet我方端口都正常 但是通过grpc协议调用不通一直超时
在容器上和lvs上tcpdump抓包发现了问题
tcpdump -i any host 11.53.192.102 and port 9370 -nn and not host 10.225.64.89 and not host 10.225.64.72 and not host 10.225.64.7 and not host 10.225.64.43 -A容器内抓包: lvs上抓包到宿主机: 从抓包看lvs上将包转发到了宿主机且一直在重发 说明在到宿主机丢包了看宿主机上监控只是收到了小包大包没有收到
推测也就是lvs 到后端服务这块出了问题 小报文没事大报文丢失 说明网络配置上有问题 百度查询解释最多就是MTU设置有问题 MTUMaximum Transmission Unit最大传输单元是网络链路节点的管控值。大于该值的数据帧或分片或丢弃。 排查宿主机和docker的MTU设置 宿主机eth0端口是1450 docker 相关的都是 1500 百度相关资料看 说让docker 设置1400 合适 按照教程修改 我的服务是通过docker compse 部署 找到网络设置进行添加
---
version: 3
networks:fate-network:driver_opts:com.docker.network.driver.mtu: 1400 --- 增加的 mtu大小ipam:config:- subnet: 192.167.0.0/16 -- 设置docker0为
ip link set dev docker0 mtu 1400重启服务 docker-compose up -d 重新部署服务 在观察 宿主机和docker 的 mtu docker都为1400 业务方再重新调用已经通了
原因:
Docker容器内无法使用宿主机网络很大原因是Docker网桥mtu与宿主机mtu不一致导致的。
docker1.10版本后采用的方案是仅使用默认值1500不再根据主机默认网卡mtu设定dockermtu但是如果主机的mtu不是1500
如何调整mtu的值而 docker0 bridge 默认 MTU 为 1500当 docker0 bridge MTU 1500 大于 Host MTU如 1400时会出现「即小包可通大包不通」的情况直观来说就是 ping 8.8.8.8 能通但是网站打不开、apt update 卡住不动、更无法下载文件参考
虚拟网络环境中 Docker MTU 问题及解决方式 docker内curl外部https失败 kubernetes集群中pod访问外网丢包严重问题排查mtu值设置不对 一次网络问题排查