一次生产docker MTU=1500问题排查解决

和业务方进行联调,业务方调用我方服务, 我方服务部署在虚拟机的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上将包转发到了宿主机,且一直在重发, 说明在到宿主机丢包了,看宿主机上监控只是收到了小包,大包没有收到

推测也就是lvs 到后端服务这块出了问题 小报文没事,大报文丢失, 说明网络配置上有问题, 百度查询解释最多就是MTU设置有问题

MTU(Maximum 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值设置不对
一次网络问题排查

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在k8s中部署高可用程序实践和资源治理

在k8s中部署高可用程序实践 1. 多副本部署1.1. 副本数量1.2. 更新策略1.3. 跨节点的统一副本分布1.4. 优先级1.5. 停止容器中的进程1.6. 预留资源 2. 探针2.1. 活性探针(liveness probes)2.2. 就绪探针(Readiness probe)2.3. 启动…

构建安全高效的用户登录系统:登录流程设计与Token验证详解

在当今数字化时代,用户登录系统是几乎所有在线服务的基础。然而,随着网络安全威胁的不断增加,设计一个安全可靠的登录系统变得至关重要。本文将深入探讨用户登录流程的设计原则以及Token验证的实现方式,带您了解如何构建安全高效的…

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.03.25-2024.03.31

文章目录~ 1.Unsolvable Problem Detection: Evaluating Trustworthiness of Vision Language Models2.Are We on the Right Way for Evaluating Large Vision-Language Models?3.Learn "No" to Say "Yes" Better: Improving Vision-Language Models via …

基于DCT和扩频的音频水印嵌入提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................................................................... N 10; %嵌入一…

零基础快速上手:搭建类ChatGPT对话机器人的完整指南

来自:鸵傲科技开发 随着人工智能技术的飞速发展,对话机器人已经成为我们日常生活中不可或缺的一部分。它们能够实时响应我们的需求,提供便捷的服务。那么,对于零基础的朋友们来说,如何快速搭建一个类似ChatGPT的对话机…

RTOS中临界区嵌套保护的实现原理(基于RT-Thread)

0 前言 什么是临界区(临界段)? 裸机编程中由于不涉及线程和线程切换,因此没有临界区这一个概念。在RTOS中由于存在线程切换等场景,便有了临界区这个概念。简单来说,临界区就是不允许被中断的代码区域。什么…

在 Three.js 中,`USDZExporter` 类用于将场景导出为 USDZ 格式,这是一种用于在 iOS 平台上显示增强现实(AR)内容的格式。

demo 案例 在 Three.js 中,USDZExporter 类用于将场景导出为 USDZ 格式,这是一种用于在 iOS 平台上显示增强现实(AR)内容的格式。下面是关于 USDZExporter 的入参、出参、方法和属性的讲解: 入参 (Parameters): sc…

非常绕的“输入结束”信号

【题目描述】 输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数。 【样例输入】 2 8 3 5 1 7 3 6 【样例输出】 1 8 4.375 【题目来源】 刘汝佳《算法竞赛入门经典 第2版》 例题2-5…

HTTP和HTTPS谁传输数据更安全?

1.HTTP HTTP在传输数据时,通常都是明文传输,也就是传输的数据没有进行加密。在这种情况下,如果传输的是一些敏感数据,比如某银行卡密码,就很容易被别人截获到,这就对我们的个人利益产生了威胁。 HTTP传输数…

时区信息TimeZoneInfo

1.时区TimeZoneInfo 对于一个开放于全球的网站或服务,在时间上的显示是一个问题,因为各个国家都会有所谓的时差,好在 .Net Framework 提供 TimeZoneInfo 类来解决这个问题。 TimeZoneInfo 类的成员支持以下操作: 检索操作系统已定…

Mysql数据库故障排查与优化

目录 前言 一、Mysql数据库的单实例故障 1.故障一——拒绝连接数据库 1.1故障内容 1.2问题分析 1.3解决方法 2.故障二——密码错误 2.1故障内容 2.2问题分析 2.3解决方法 3.故障三——数据库处理较慢 3.1故障内容 3.2问题分析 3.3解决方法 4.故障四——数据库表…

k8s 基础入门

1.namespace k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离 2.deployment kubectl create #新建 kubectl aply #新建 更新 升级: 滚动升级&#x…

真实sql注入以及小xss--BurpSuite联动sqlmap篇

前几天漏洞检测的时候无意发现一个sql注入 首先我先去网站的robots.txt去看了看无意间发现很多资产 而我意外发现admin就是后台 之后我通过基础的万能账号密码测试or ‘1‘’1也根本没有效果 而当我注入列的时候情况出现了 出现了报错,有报错必有注入点 因此我…

Flink Checkpoint 机制深度解析:原理、注意事项与最佳实践

Flink Checkpoint 机制详解 Apache Flink 的 Checkpoint 机制是一种强大的容错机制,其设计目标是在分布式流处理环境中保证数据处理的一致性和可靠性。Checkpoint 主要通过周期性地创建应用流图状态的全局快照来实现,当系统发生故障时,可以从…

33-2 XXE漏洞 - XXE外部实体注入原理

一、外部实体注入漏洞定义 外部实体注入漏洞(XML External Entity Injection,XXE)是针对应用程序解析 XML 输入类型的一种攻击。 攻击者利用未经严格安全控制的服务端 XML 解析过程,向其注入恶意 XML 数据。通过加载恶意外部实体,攻击者可以导致服务器执行恶意配置,从而造…

企业能耗数据分析有哪些优势?怎样进行分析?

随着互联网技术的发展,企业在运营中会出现大量的用能数据,但却做不了精准的用能数据分析,导致数据没有得到有效利用,以及产生能源浪费现象。 为什么企业用能分析总是难? 一、用能分析过程复杂 由于用能分析过于复杂…

采用C#.net6.0+Vue,Ant-Design技术开发的一套大型医院手术麻醉信息系统源码,系统成熟,运行稳定

手术麻醉信息系统源码,C#手麻系统源码,自主版权应用案例(适合上项目) 手术麻醉信息系统可以实现手术室监护仪、麻醉机、呼吸机、输液泵等设备输出数据的自动采集,采集的数据能据如实准确地反映患者生命体征参数的变化&…

穿山甲广告平台SDK接入效果怎么样?

广告收入是大多数开发者的应用变现收入来源,如何进行流流量变现是从应用设计之初就需要开发者思考的问题。 穿山甲广告平台作为国内第三方广告变现平台,是不少开发者选择的对接平台。 穿山甲广告平台的广告类型较多,有信息流,ba…

Linux 安装apache

安装apache过程 配置yum源安装apache启动apache检查apache的状态访问apache如果访问不了可能是火墙和selinux 配置yum源 一 .挂载光盘 mkdir /kk mount /dev/cdrom /kk检查挂载点 ls /kk第二步:修改yum的配置文件,指向我们创建的yum源:/te…

苍穹外卖05(Redis入门,下载于安装,服务启动和停止,Redis数据类型面试题,常用命令,Java中操作Redis,店铺营业状态设置)

目录 一、Redis入门 1. Redis简介 1 NoSQL介绍 2 Redis简介 2. Redis下载与安装 1 Redis下载 2 Redis安装 3. Redis服务启动与停止 1 服务启动命令 2 客户端连接命令 3 修改Redis配置文件 3 修改Redis配置文件 4 Redis客户端图形工具 二、Redis数据类型【面试题】…