Home > 工作记录 > 正文

【工作】解决服务器重启后bond网卡无法正常通信

写在前面:

之前另外一个事业部刚成立时候没有运维,他们业务的所有服务器都由我们这边来安装配置,后来他们有自己的运维后,服务器和权限逐步移交过去了,但是最近那边运维反应我们之前装的一台服务器重启后,Web服务不能正常访问,希望帮忙查下问题。

问题描述:

这台服务器是他们前端Web服务器,上面配置的外网地址,现在现象是网站无法正常访问,通过telnet 80端口发现有时候成功有时候不成功。

解决过程:

经过排查防火墙等配置,发现没有问题,根据现象查看网卡配置,发现其中一个网卡的MAC地址跟bond的MAC地址居然不一样,如下图:
20170106145210
这也是造成为什么有时候通有时候不通,当流量访问到em1这个网卡时候,em1和bond接口的MAC地址一致所以可以正常处理报文,通信是正常的。而当访问到em2时候,由于em2的MAC地址跟bond接口的不同,所以em2判断报文不是发给自己的,就会丢弃该报文,造成无法通信。
 
那是什么原因导致em2的mac地址改变的呢?经过查找资料发现,bond配置里有一个NM_CONTROLLED参数,这个参数的作用是把网卡交给Networkmanager服务来管理。
 
而Network Manager其实就是屏幕右上角落里的一个图形化管理网络设备的网络管理器,对协助你管理无线,ADSL,VPN等都有很大便利,但是此处如果把NM_CONTROLLED设置成yes的话,服务器重启后,Networkmanager会接管网卡,直接调用网卡的实际物理mac地址,导致上面出现的网卡物理mac地址和bond不一致的现象。
 
由于我们的服务器都是批量安装,所有服务器配置都是统一的,这个服务我安装系统的时候是不会存在的,经确认是他们那边的人安装并启动了这个服务。

解决办法:

先查看NM_CONTROLLED参数配置,发现bond中并没有配置此参数:
# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BONDING_OPTS="mode=0 miimon=50 fail_over_mac=0"
USERCTL=no
BRIDGE=br0
 
检查NetworkManager服务的状态,发现服务是自启动的:
# chkconfig --list | grep  NetworkManager
NetworkManager 0:off 1:off 2:off 3:on 4:on 5:on 6:off
 
关闭NetworkManager服务:
# service NetworkManager stop
# chkconfig NetworkManager off
 
最后重启一下服务器,发现em2的MAC地址和bond一样了,通信也正常,问题解决。
 

题外话:

更改Bond的MAC地址的方法是在bond的配置文件中添加 "MACADDR="参数,而不是"HWADDR="这个参数.
上一篇:【工作】Zabbix 高可用架构的实现
下一篇:【基础】Linux 开启telnet远程登录服务
【工作】解决系统glibc版本由2.12升级到2.14后执行java命令挂起无反应的问题

【工作】解决系统glibc版本由2.12升级到2.14后执行java命令挂起无反应的问题

【工作】解决由

【工作】解决由”ip_conntrack”导致的keepalived频繁切换问题

【工作】MySQL InnoDB引擎转换为MyISAM引擎方法

【工作】MySQL InnoDB引擎转换为MyISAM引擎方法

【工作】Centos6.5 升级glibc解决“libc.so.6: version GLIBC_2.14 not found”报错问题

【工作】Centos6.5 升级glibc解决“libc.so.6: version GLIBC_2.14 not found”报错问题

【工作】指定Tomcat的初始化内存和JDK版本

【工作】指定Tomcat的初始化内存和JDK版本

【工作】解决Nginx访问日志中报favicon.ico文件404错误

【工作】解决Nginx访问日志中报favicon.ico文件404错误

【工作】Nginx限制IP并发连接数和请求数的研究

【工作】Nginx限制IP并发连接数和请求数的研究

发表评论

昵称 *
邮箱 *
网址

沙发空闲中,快来抢!