linux 网卡绑定 bonding

Bonding的目的是为提高系统可用性,防止物理网口或线路的单点故障

  1. 检查Linux环境是否支持bonding,执行如下命令
[root@compute ~]# modinfo bonding
filename:       /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net/bonding/bonding.ko
author:         Thomas Davis, [email protected] and many others
description:    Ethernet Channel Bonding Driver, v3.6.0
version:        3.6.0
license:        GPL
srcversion:     353B1DC123506708446C57B
depends:        8021q,ipv6
vermagic:       2.6.32-431.el6.x86_64 SMP mod_unload modversions 

上面返回信息,有库文件、版本、授权、描述等,表示支持bonding(假如没有上面信息,可能重新安装或编译内核)

  1. 检查Linux下有没有负载均衡的执行文件(负载均衡工具也就是bonding),执行如下命令
[root@compute ~]# which ifenslave
/sbin/ifenslave
  1. 创建bonding驱动设备配置文件,执行如下命令
[root@compute ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0
[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0   ---设备名称(必要)
BOOTPROTO=static  ---使用静态IP地址(必要,或者=none也可以)
BROADCAST=192.168.1.255 ---(必要)
IPADDR=192.168.1.10 ---(必要)
NETMASK=255.255.255.0 ---(必要)
GATEWAY=192.168.1.254 ---(必要)
NETWORK=192.168.1.0
ONBOOT=yes ---引导时启动(必要)
TYPE=Ethernet ---网线类型(可选,最好填上)
USERCTL=no ---USERCTL=no表明该设备只能由root用戶來控制(可选,最好填上)
  1. 更改ifcfg-eth0网卡的属性
[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
#HWADDR=00:0E:1E:8D:9B:40 ---必须注销,否则会引起bonding不正常
ONBOOT=yes 
BOOTPROTO=none 
MASTER=bond0 ---MASTER=bond0表明eth0绑定到bond0设备上。
SLAVE=yes 
USERCTL=no
  1. 更改ifcfg-eth0网卡的属性
[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
#HWADDR=00:0E:1E:8D:9B:41 ---必须注销,否则会引起bonding不正常
ONBOOT=yes 
BOOTPROTO=none 
MASTER=bond0 ---MASTER=bond0表明eth0绑定到bond0设备上。
SLAVE=yes 
USERCTL=no

以上步骤4、5是把网卡eth0和网卡eth1绑定在虚拟网卡bond0上,做网卡高可用

  1. 编辑/etc/modprobe.d/bonding.conf文件,加入以下内容
[root@compute ~]# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding 
options bond0 miimon=80 mode=0 

说明:mode指定了bond0的工作模式(0-6种模式),常用的是0、1、6,0与6表示负载均衡方式,1表示主从方式,可根据需要自行配置。常用的为0,1、6三种。
mode=0,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是与网卡相连的交换机端口必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址。
mode=1,表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。 miimon是用来进行链路监测的。比如:miimon=80,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。
mode=6,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是该模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址

  1. 加入/etc/rc.d/rc.local 启动项 (可选)
    [root@compute ~]# vi /etc/rc.d/rc.local
    ifenslave bond0 eth0 eth1 ----在最后面加入此条命令
  2. 重启网络
    [root@compute ~]# service network restart
  3. 检查bonding状态信息
    [root@compute12 ~]# more /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 80
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: a8:3a:72:ce:8a:9c
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: a8:3a:72:ce:7a:9d
Slave queue ID: 0

  1. 完成后重启系统,ping 192.168.1.254测试
    注意:
  • 所有ethxx配置的时候去掉MAC地址;
  • 必须彻底关闭NetworkManger服务,否則會和bond网上冲突
    service NetworkManger stop
    chkconfig NetworkManger off
  • RHEL 6X版本的配“/etc/modprobe.d/”文件下面自己手动新建“bonding.conf”
  • 多个bonging文件配置模式一致,例如:
    [root@compute modprobe.d]# cat bonding.conf
    alias bond0 bonding
    alias bond1 bonding
    options bond0 miimon=80 mode=0
    options bond1 miimon=80 mode=0

注明:以上含“(必要)”是必须要有内容,“(可选)”是可以填上或不填上都行

你可能感兴趣的:(linux 网卡绑定 bonding)