1

近日,完成了一批Centos 6.5服务器的网卡绑定操作,由于现网生产环境,操作的时候特别小心谨慎,但谁知还是出了差错,两台服务器直接ping不通了,跑了趟机房。各种折腾。

因此特将操作步骤及注意事项在此分享.

1、环境描述

华为pcserver,安装Centos 6.5 64位操作系统,服务器配有四个网卡,其中两个网卡在用,各接两根网线分别与两台交换机相连,实现冗余。

2、操作步骤

1)通过ifconfig -a|grep eth命令看到eth0和eth1两张网卡处于running状态,即代表该两个网卡目前各插有一根网线,因此需要将eth0、eth1进行双网卡绑定。

eth0      Link encap:Ethernet  HWaddr E8:4D:D0:BF:D1:9B  
          inet addr:10.168.122.13  Bcast:10.168.122.255  Mask:255.255.255.0
          inet6 addr: fe80::ea4d:d0ff:febf:d19b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21281229862 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20649353230 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1927808267139 (1.7 TiB)  TX bytes:1543317199732 (1.4 TiB)
          Memory:92300000-92400000 

eth1      Link encap:Ethernet  HWaddr E8:4D:D0:BF:D1:9C  
          inet6 addr: fe80::ea4d:d0ff:febf:d19c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1495871 errors:0 dropped:0 overruns:0 frame:0
          TX packets:204395 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:97238155 (92.7 MiB)  TX bytes:15301940 (14.5 MiB)
          Memory:92200000-92300000 

eth2      Link encap:Ethernet  HWaddr E8:4D:D0:C9:EA:B2  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Memory:c8100000-c8200000 

eth3      Link encap:Ethernet  HWaddr E8:4D:D0:C9:EA:B3  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Memory:c8000000-c8100000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:130023805258 errors:0 dropped:0 overruns:0 frame:0
          TX packets:130023805258 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:19290336847188 (17.5 TiB)  TX bytes:19290336847188 (17.5 TiB)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:3F:C3:47  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

virbr0-nic Link encap:Ethernet  HWaddr 52:54:00:3F:C3:47  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

2)在服务管理中关闭NetworkManager服务并禁用自动启动。(此步骤非常关键,本人当时就没最先执行这步骤,导致所有工作做完后,重启网络服务后,悲剧发生)

执行命令如下:

   service NetworkManager stop   --关闭NetworkManager服务
   service NetworkManager status 
   chkconfig NetworkManager off   --禁用NetworkManager服务自动启动
   chkconfig NetworkManager --list 

3) 在/etc/sysconfig/network-scripts 目录下创建一个名为ifcfg-bond0的文件,编辑该文件,添加如下内容

vi ifcfg-bond0
BOOTPROTO=none
DEVICE=bond0         --此处注意
ONBOOT=yes           --此处注意
IPADDR=10.168.122.13       --将主机的ip地址添加到此处
NETMASK=255.255.255.0
GATEWAY=10.168.122.254
USERCTL=no
TYPE=Ethernet
IPV6INIT=no

依次编辑ifcfg-eth0ifcfg-eth1文件,将如下内容替换到ifcfg-eth0ifcfg-eth1中。(注意替换前,一定要备份改动前的文件,并且将文件copy到/etc/sysconfig/network-scripts以外的路径下)

vi ifcfg-eth0
BOOTPROTO=none
DEVICE=eth0    --此处注意
ONBOOT=yes     --此处注意
MASTER=bond0   --此处注意
SLAVE=yes      --此处注意
USERCTL=no
TYPE=Ethernet
IPV6INIT=no

vi ifcfg-eth1
BOOTPROTO=none 
DEVICE=eth1   --此处注意
ONBOOT=yes    --此处注意
MASTER=bond0  --此处注意
SLAVE=yes     --此处注意
USERCTL=no
TYPE=Ethernet
IPV6INIT=no

4)加载bonding模块,对外虚拟网络接口设备为bond0,在/etc/modprobe.d/dist.conf文件最后加入以下2行

alias bond0 bonding
options bond0 mode=1 miimon=100

关于此处添加的两行命令的含义,从百度上找到如下解释: 选项 millmon 是指定隔多长时间来进行链路监测,单位是ms。#选项 mode是表示绑定口的工作模式,有0-7共7种模式,常用的有0和1模式,mode=0表示"round-robin"策略,两张卡同时工作在负载均衡状态。mode=1表示"active-backup"策略,两张卡一用一备的备份状态。

5)重启网络服务:
service network restart(如果提示命令不对,则执行:/etc/rc.d/init.d/network restart

6)验证是否双网卡绑定成功(如果在执行完上述第五个步骤后,服务器连不上了,那代表悲催了,需要跑机房了。。。因此建议第一次操作先选台空闲服务器做个测试,以免对现网环境影响过大)

方法一:

成功的话执行ifconfig -a 显示的内容是bond0和eth0、eth1网卡的MAC地址是一样的。

方法二:

测试bond是否绑定成功:

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1                ----eth1主模式
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:16:2d:77:1f:cc

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:16:2d:77:1f:cd

7)感兴趣的可以执行一下如下操作。来测试双网卡绑定后的成果。

我们假设网卡eth0硬件坏了。执行
ifdown eth0

则发现,服务器仍然可以ping通。。。。

这代表冗余发挥了作用。


少放香菜
56 声望3 粉丝