网卡mtu值引起的服务访问异常处理过程

一、现象说明
我们在k8s集群上部署服务,发现在72段主机上的服务访问是都没有问题的;但是在161段主机有的服务可以访问;有的访问没有返回值;其中在161段主机访问没有返回值的服务;到服务所在的主机是可以访问的。
二、解决过程
针对上述现象,我们确定了这两个段的ip是在一个vpc的,互相访问是没有问题的,不然也不可能存在有的访问有返回值,有的没有返回值,截图如下: 在这里插入图片描述
在这里插入图片描述上图是我把grafana调到161段主机上curl就不正常了,重新把它调度到72段就能正常访问,后面我们部署了个nginx到161段发现也能正常访问,包括已经部署的redis集群和kafka集群以及其他服务都能正常访问,这些redis的管理web页面访问就不能正常返回,只能说太邪门了。
对比了下72段主机和161段的主机只是发现主机内核不一样还有主机网卡的mtu值是不一样的,因为我们之前部署calico因为mtu值不对造成服务不可以正常访问的问题,看了下自己的calico配置,因为我们calico用的是ip-ip模式,所示calico的mtu值应该是所在主机的网卡mtu值减去20,因为我们主机72段的主机和161段的主机mtu值是不一样的;只能选择按主机最小的mtu来定义calio的mtu值,发现配置的是没有问题的,难道按照主机mtu值最小的来算calico的mtu值是不行的吗,想着就把calico的mtu值改为了72段主机的mtu值来算了,创建更新calico,再去访问服务,发现情况依然没有改变,只能通过分别抓包看看了,抓包截图如下: 在这里插入图片描述在这里插入图片描述通过抓包发现不正常的服务发送出去的包,没有回应,并且不断重试发送,这个时候怀疑可能是主机的mtu值导致的,发现72段主机的mtu值是1500;发出的数据包都有很快的返回;而161段主机就无法正常返回,并且不断重试,然后改下161段主机的mtu值到1500,发现再去访问服务就都是能正常返回了。

mtu: 工作在数据链路层,在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元 MTU(Maximum Transfer Unit)。
当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。

修改网卡MTU(Maximum Transmission Unit)可以影响网络数据包的大小和效率。MTU是网络设备能够发送的最大数据帧尺寸,超过这个的数据包会被分割成更小的部分以适应网络路径。以下是Windows和Linux环境下修改MTU的基本步骤: **在Windows中**: 1. 打开命令提示符(以管理员身份运行),输入`netsh interface ip set subinterface "名称" mtu=数`,将"名称"替换为您的网卡的实际名称(如`Ethernet`),数为新的MTU(建议不超过1500 bytes)。 2. 提示保存更改后,重启网络连接或计算机使改动生效。 **在Linux中**: 1. 打开终端,首先找到你的网卡名,可以使用命令 `ifconfig` 或 `ip addr` 来查看。例如,如果你的网卡名为`eth0`,则输入`sudo nano /etc/sysctl.conf` 或 `sudo vi /etc/sysctl.conf`打开编辑器。 2. 添加或修改以下行(如果已经存在,则更新数): ``` net.core.rmem_max=数k net.core.wmem_max=数k net.ipv4.ipfragthreshold=数 net.ipv4.tcp_rmem=数k,数k,数k net.ipv4.tcp_wmem=数k,数k,数k ``` 其中,数即你想要的新MTU减去一些安全余量(通常是14或更多)。然后保存并关闭文件。 3. 运行`sysctl -p`或`sudo sysctl -w net.core.rmem_max=新数k net.core.wmem_max=新数k`让设置生效。如果需要立即应用更改,可以重启网络服务(如`sudo service networking restart`)或重启整个系统。 请注意,过高的MTU可能导致丢包或降低性能,因此在增大MTU之前,应确保网络环境支持并且了解可能带来的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值