linux中多网卡绑定
-
实验背景:
(1)虚拟机系统:Centos6.7
(2)两张网卡
-
网卡绑定应用:
为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。比如我们可以将eth0和eth1绑定成虚拟网卡bond0。
-
实验步骤:
(1)在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,命令如下:
[root@jkkhj ~]# cd /etc/sysconfig/network-scripts/
[root@jkkhj network-scripts]# ls
[root@jkkhj network-scripts]# cp ifcfg-eth0 ifcfg-bond0
[root@jkkhj network-scripts]# ls
ifcfg-bond0
ifcfg-eth0
ifcfg-eth1
ifcfg-lo
(2)更改ifcfg-bond0配置文件
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none(static也可以)
IPADDR=192.168.100.120
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
(3)更改ifcfg-eth0和ifcfg-eth1配置文件
ifcfg-eth0配置文件:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ifcfg-eth1配置文件:
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
(4)更改modules配置文件
命令: vim /etc/modprobe.d/dist.conf
在配置文件中添加:alias bond0 bonding
options bonding mode=1 miimon=100 fail_over_mac=1(真实环境不用这个参数!)
注:(1)RHEL6的modules配置文件已更改为/etc/modprobe.d/dist.conf;
(2)RHEL6版本以下在/etc/modprobe.conf。
(3)这个fail_over_mac=1的作用:虚拟机多个网卡共用一个MAC地址时,网络不报错且能使用!在此次实验中可以不加fail_over_mac=1,也是可以的!
(5)检查bond0、eth0,eth1三者MAC地址
打开eth1,关闭eth0,截图如下:
最后,在/etc/rc.local中加入
modprobe bonding miimon=100 mode=1
(8)扩展:
-
查看网卡mac配置文件命令: /etc/udev/rules.d/70-persistent-net.rules,打开之后可以看到其中有两块网卡 eth0 和 eth1, 分别记录下它们的mac地址 ,就是冒号分隔的一串数字。截图如下:
-
常用模式:
第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)
特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。
第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。