在生产环境中,一定要确保服务器网络连接的高可用性。网卡(NIC)绑定技术有助于保证高可用性特性并提供其它优势以提高网络性能。
本文要介绍的linux双网卡绑定,就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址
而并行链接聚合成一个逻辑链路工作。
其实这项技术在Sun和Cisco中早已存在,被称为Trunking和 Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。bonding技术的最早应用是在
集群—— beowulf上,为了提高集群节点间的数据传输而设计的。
bonding原理
说到bonding,还要谈谈网卡的混杂 (promisc)模式。
正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc
的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相
同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。
具体配置步骤如下,共分四步:
本测试环境是在RHEL5.4上做的。
1、先建立/etc/sysconfig/network-scripts/ifcfg-bond0文件,内容如下:
测试环境修改:
2、修改/etc/sysconfig/network-scripts/目录下原来的ifcfg-eth0和ifcfg-eth1文件,内容如下:
BOOTPROTO=none
TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
BOOTPROTO=none
TYPE=Ethernet
DEVICE=eth1
ONBOOT=yes
MASTER=bond0
测试环境:
3、在/etc/modprobe.conf文件里增加两行:
说明:miimon是用来进行链路监测的。比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有
0,1,2,3四种模式,常用的为0,1两种。
mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。
4、编辑/etc/rc.d/rc.local文件,添加如下内容:
ifenslave bond0 eth0 eth1
基本创建完成。
不重启服务器的情况下,执行:
ifenslave bond0 eth0 eth1;
然后执行:
service network restart
即可使用绑定后的虚拟网卡。