Linux系统下做bonding网卡绑定,本测试是使用的环境 CentOS 6.3
+虚拟机+双网卡,在装好的虚拟中添加网卡,不会产品ifcfg-eth1之类的文件,需要手动复制ifcfg-eth1,如果需要到MAC地址,就用
ifconfig把查看到的相应MAC地址写到配置文件
1. root 用户登录,用 ifconfig 看网卡是否正常。
Linux 默认是 DHCP获取ip,当网络中没有DHCP,则会请求超时,而造成网卡无法启动,不过网卡不启动也没关系,只要确认lsmod中网卡驱动模块已经正常加载了就可以了,然后我们需要修改网卡配置文件。
2. 新建虚拟绑定网卡 bond0
执行cd /etc/sysconfig/network-scripts进入网卡配置文件目录
这个目录下会有网卡的配置文件
ifcfg-eth0 对应eth0
ifcfg-eth1 对应eth1
拷贝ifcfg-eth0为ifcfg-bond0
3. 编辑网卡配置文件
编辑ifcfg-bond0文件
#vi ifcfg-bond0
原配置文件如下
修改后需要添加静态ip地址(网卡绑定不建议使用动态ip)、子网掩码和网关如下
(注意:除了bond0设置IP等信息外其他的真实网卡不能设置IP地址)
编辑ifcfg-eth0文件
#vi ifcfg- eth0
原配置文件如下
修改后
三个网卡配制好了
本环境 使用CentOS6.3没有/etc/modprobe.conf这个文件
编辑 /etc/modprobe.d/dist.conf
在该文件的最下面添加如下2行
alias bond0 bonding
options bond0 miimon=100 mode=1
注 : miimon是用来进行链路监测的。比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
5. 修改/etc/rc.local配置文件
添加如下2行
ifenslave bond0 eth0 eth1 //如果上面加了master,slave 可以不加本行
route add -net 10.0.1.0 netmask 255.255.255.0 bond0 //这行可以不添加
-net后面是网段 netmask后面是子网掩码
6. 重新启动服务器,在开机自检的时候查看bond0 是否已经启动,如果启动了就证明成功了。
也可以用lsmod |more 查看bonding 模块有没有加载成功
7. 测试配置结果
/proc/net/bonding/bond0文件,这个文件是内存镜像文件,是临时的、及时的文件,系统的状态改变会直接通过给该文件
测试时执行ping 10.0.1.92的动作,然后分别断开网线观察ping是否会丢包
同时查看cat /proc/net/bonding/bond0文件,看当前激活的网卡(Currently Active Slave: eth1)及网卡状态(MII Status: down),来判断是否正常切换
在虚拟机中试验一下效果.
从另一台机器ping我们刚才设置的IP(10.0.1.92)地址,然后在虚拟机vmware下面,点其中的一个网卡
选中disconnect(断开)
可以看到ping只是出现了一个time out后就又恢复了正常(真实环境可能时间会过几秒).说明我们的配置起作用了.
注意:bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用,两个网卡接到一台交换机上的时候,交换机端口需要做聚合。
另一个参考资料:
网卡绑定技术已经出来很久,在不同的平台下的叫法不同而已,在Linux下叫bonding,IBM称为etherchanel,broadcom
叫team,但是名字怎么变,效果都是将两块或更多的网卡当做一块网卡使用,在增加带宽的同时也可以提高冗余性,七种模式,一般使用较多的就是来提高冗
余,分别和不同交换机相连,提高可靠性,但有时服务器带宽不够了也可以增加带宽,在这里用思科交换机和HP服务器相连,思科交换机做端口汇聚,服务器做网
卡绑定,配置如下:
服务器为CentOS6.2
cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
TYPE=ethernet
ONBOOT=yes
IPADDR=192.168.0.32
NETMASK=255.255.192.0
GATEWAY=10.10.0.1
cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
TYPE=ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
BOOTPROTO=static
TYPE=ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
vim /etc/modprobe.d/dist.conf
alias bond0 bonding
options bond0 miimon=100 mode=0(0,表示平衡负载双网卡工作,RR算法,mode=1,自动主备,其中一块工作)
思科交换机相应端口配置端口聚合:
R1#configure terminal
R1(config)#int range g0/1 - 2
R1(config-int-range)#channel-group 1 mode on
将交换机g0/1-2 与服务器相应端口相连,经测试,带宽明显增加
另一重要参考资料:
分为三步:
1、创建bond0网卡:
vim /etc/sysconfig/network-scripts/ifcfg-bond0
添加如下内容:
DEVICE=bond0 BOOTPROTO=none ONBOOT=yes NETWORK=192.168.0.0NETMASK=255.255.255.0IPADDR=192.168.0.10USERCTL=no GATEWAY=192.168.0.254TYPE=Ethernet
2、修改eth0、eth1:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=none ONBOOT=yesMASTER=bond0 SLAVE=yesUSERCTL=yes
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 BOOTPROTO=none ONBOOT=yesMASTER=bond0 SLAVE=yesUSERCTL=yes
3、修改modprobe.conf:
以便kernel识别。加入设置参数,miimon值表示两块网卡相互监测的时间,以ms为单位。mode值为工作模式,可设置为高可用还是负载均衡,0为高可用(默认值),1为负载均衡,另外还有一种XOR模式。
vim /etc/modprobe.conf
alias bond0 bonding options bond0 miimon=100 mode=1
说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。
4、调整交换机,绑定多端口,做链路聚合
mode 0下bond所绑定的网卡的IP都被修改成一样的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。
所以mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址。