当系统中有多个网卡需要进行设置时,建议将网卡的MAC地址与ethX文件中的HWADDR一一对应,否则系统重启后网卡的eth号很可能会发生改变,在设置了网卡绑定的生产系统中,这是非常危险的。


1、配置驱动模块

   修改文件/etc/modprobe.conf,找到:

        alias eth0 8139cp

        alias eth1 8139cp

注意:

      8139cp为网卡型号。

   在此内容后加入:

     ######## Bonding ##########

       alias bond0 bonding

       options bonding max_bonds=1

     ######## Bonding ##########

     alias bond0 bonding
        options bond0 miimon=100 mode=1





2、建立bonding网卡配置

     新建文件/etc/sysconfig/network-scripts/ifcfg-bond0,输入以下内容:

           DEVICE=bond0

           ONBOOT=yes

           BOOTPROTO=static

           IPADDR=192.168.100.21

           NETMASK=255.255.255.0

           USERCTL=no

           BONDING_OPTS="mode=1 miimon=100 primary=eth0"

   BONDING_OPTS参数解释

     此参数用于指定网卡绑定时的属性,以下是对常用参数进行的解释:

         miimon参数:指定网卡故障时的切换时间间隔以ms为单位。

         primary参数:指定默认的主网卡设备。

     mode参数:

          0-轮询模式,所绑定的网卡会针对访问以轮询算法进行平分。

          1-高可用模式,运行时只使用一个网卡,其余网卡作为备份,在负载不超过单块网卡带宽或压力时建议使用。

          2-基于HASH算法的负载均衡模式,网卡的分流按照xmit_hash_policy的TCP协议层设置来进行HASH计算分流,使各种不同处理来源的访问都尽量在同一个网卡上进行处理。

          3-广播模式,所有被绑定的网卡都将得到相同的数据,一般用于十分特殊的网络需求,如需要对两个互相没有连接的交换机发送相同的数据。

           4-802.3ab负载均衡模式,要求交换机也支持802.3ab模式,理论上服务器及交换机都支持此模式时,网卡带宽最高可以翻倍(如从1Gbps翻到2Gbps)

          5-适配器输出负载均衡模式,输出的数据会通过所有被绑定的网卡输出,接收数据时则只选定其中一块网卡。如果正在用于接收数据的网卡发生故障,则由其他网卡接管,要求所用的网卡及网卡驱动可通过ethtool命令得到speed信息。

          6-适配器输入/输出负载均衡模式,在"模式5"的基础上,在接收数据的同时实现负载均衡,除要求ethtool命令可得到speed信息外,还要求支持对网卡MAC地址的动态修改功能。

      xmit_hash_policy参数(此参数对mode参数中的2、4模式有影响):

      layer1-通过MAC地址进行HASH计算。

   计算公式:(MACsrc⊕MACdest)% Nslave

      layer3+4-通过TCP及UDP端口及其IP地址进行HASH计算。

    计算公式:((portsrc⊕portdest)⊕(IPsrc⊕IPdest)) % Nslave

注意:

       mode参数中的0、2、3、4模式要求交换机支持"ports group"功能并能进行相应的设置,例如在Cisco中要将所连接的端口设为"trunk group"。

选择绑定模式的建议

     如果系统流量不超过单个网卡的带宽,请不要选择使用mode 1之外的模式,因为负载均衡需要对流量进行计算,这对系统性能会有所损耗。

    建议mode 5、mode 6只在交换机不支持"ports group"的情况下选用。

    如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用mode 4以提高系统性能。



3、修改被绑定网卡的配置

    修改/etc/sysconfig/network-scripts/ifcfg-eth0为:

           # Realtek Semiconductor Co., Ltd. RTL-8139/<?xml:namespace prefix = st1 />/+

           DEVICE=eth0

           MASTER=bond0

           SLAVE=yes

           HWADDR=54:52:00:35:f9:a0

           ONBOOT=yes



4、修改/etc/sysconfig/network-scripts/ifcfg-eth1为:

            # Realtek Semiconductor Co., Ltd. RTL-8139//+

            DEVICE=eth1

            MASTER=bond0

            SLAVE=yes

             HWADDR=54:52:00::37:ce

            ONBOOT=yes

   启动网卡绑定设备



5、导入bonding驱动:

          [root@localhost ~]# modprobe -i bonding max_bonds=1

          bonding: Warning: either miimon or arp_interval
          and arp_ip_target module parameters must be
           specified, otherwise bonding will not detect 
           link failures! see bonding.txt for details.

此时系统会发出一个警告,意思是bonding驱动要求提供miimon参数或arp_inerval参数与arp_ip_target参数的组合,否则系统将无法检测出网卡设备连接是否失效。由于miimon已经在/etc/sysconfig/network-scripts/ifcfg-bond0中设定,所以可以不用理会此警告。



6、重启网络

         [root@localhost ~]# /etc/init.d/network restart

            bonding: Warning: either miimon or arp_interval and arp_ip_target module parameters must be specified, otherwise bonding will not detect 
link failures! see bonding.txt for details.

         [root@localhost ~]# cat network

           Shutting down interface eth0                    
           [   OK   ]

           Shutting down interface eth1                       
           [   OK   ]

          Shutting down loopback interface:                  
          [   OK   ]

           Bringing up loopback interface:                    
           [   OK   ]

           Bringing up interface bond0:                        
           [   OK   ]     

     网络重启完毕,此时由于/etc/sysconfig/network-scripts/ifcfg-bond0中的设置,miimon参数已经生效。



      以上"导入bonding驱动"及"重启网络"的操作也可以通过重新启动操作系统来实现,但对于一些正在生产环境中运行的系统,一般要求进行系统维护时不影响系统的正常运作。通过以上两个操作可以将系统的"总失效时间"降到最低。