网卡绑定bond
网卡绑定
bond模式:
-
Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。cisco交换机要设置Etherchannel
-
Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
-
Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy) cisco交换机要设置Etherchannel
-
Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。 cisco交换机要设置Etherchannel
-
Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)和 Etherchannel
-
Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
-
Mode=6(balance-alb) 在5的tlb基础上增加了rlb。
5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式
但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。
常用的有三种
-
mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址
-
mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
-
mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。
参考 http://5503845.blog.51cto.com/5493845/962580
http://www.cnblogs.com/nulige/p/6714183.html?utm_source=itdadao&utm_medium=referral
二:案例一:mode=1(active-backup):一个网卡处于活动状态 ,一个处于备份状态,所有流量都在主链路上处理。当活动网卡down掉时,启用备份的网卡。
1:[root@lyt ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 dhcp也可以设置成none 或 static (一下几个要一样)
MASTER=bond0 对应绑定名称bond0
SLAVE=yes
root@lyt ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
MASTER=bond0 对应绑定名称bond0
SLAVE=yes
2:[root@lyt ~]# cd /etc/sysconfig/network-scripts/
[root@lyt network-scripts]# cp ifcfg-eth0 ifcfg-bond0 #生成一个bond0的虚拟网卡
[root@lyt network-scripts]# vim ifcfg-bond0 #编辑该网卡内容
3:[root@lyt network-scripts]# vim /etc/modprobe.conf #编辑该配置文件
下图中1表示系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0;miimon=100表示系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线
路;mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。
[root@linux ~]# vim /etc/modprobe.d/bonding.conf #此文件是自己创建,名字可以随便取
alias bond0 bonding
options bond0 miimon=100 mode=1
options bond0 miimon=100 mode=1 primary=eth0 参数指定主网卡
2.加载模块(重启系统后就不用手动再加载了)
[root@test ~]# modprobe bonding
4:[root@lyt network-scripts]# vim /etc/rc.local #编辑该开机脚本,将eth0和eth1网卡进行绑定
5:[root@lyt network-scripts]# init 6
[root@lyt ~]# ifconfig #查看网卡信息,在此处三块网卡的mac地址是一样的
[root@lyt ~]#vim /proc/net/bonding/bond0 #查看模式及网卡信息。实际mac地址是不一样的
将网卡eth0断掉后,系统使用备份网卡eth1,此时eth1处于活动状态
直接切换活动网卡,不出现丢包
ifenslave -c bond0 eth1
案例二:mode=0(round robin):所有链路处于负载均衡状态,这模式的特点增加了带宽,同时支持容错能力。
1:在案例一的基础上,只需要修改/etc/modprobe.conf 配置文件:
2:vim /proc/net/bonding/bond0 #查看使用的模式及网卡信息,如图:
测试
注意:
留心:前面只是2个网口绑定成一个bond0的情况,如果我们要设置多个bond口,比如物理网口eth0和eth1组成bond0,eth2和eth3组成bond1,
那么网口设置文件的设置方法和上面第1步讲的方法相同,只是/etc/modprobe.d/bonding.conf的设定就不能像下面这样简单的叠加了:
alias bond0 bonding
options bonding mode=1 miimon=200
alias bond1 bonding
options bonding mode=1 miimon=200
正确的设置方法有2种:
第一种,你可以看到,这种方式的话,多个bond口的模式就只能设成相同的了:
alias bond0 bonding
alias bond1 bonding
options bonding max_bonds=2 miimon=200 mode=1
第二种,这种方式,不同的bond口的mode可以设成不一样:
alias bond0 bonding
options bond0 miimon=100 mode=1
install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0
仔细看看上面这2种设置方法,现在如果是要设置3个,4个,甚至更多的bond口,你应该也会了吧!
后记:简单的介绍一下上面在加载bonding模块的时候,options里的一些参数的含义:
miimon 监视网络链接的频度,单位是毫秒,我们设置的是200毫秒。
max_bonds 配置的bond口个数
mode bond模式,在一般的实际应用中,0和1用的比较多。
----------------------------------------------------------------------------------------------------------------------------------------------------
在CentOS 7 / RHEL 7中配置NIC(网络接口卡)绑定
# 如果bonding模块没有加载到你的Linux机器上,那么使用下面的命令来加载。
modprobe bonding
步骤:1创建bond接口文件
$ cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
NAME=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.70
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_MASTER=yes
BONDING_OPTS="mode=6 miimon=100"
步骤:2编辑NIC接口文件
# ifcfg-enp0s3
[root@openstack ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp0s3
ONBOOT=yes
MASTER=bond0
SLAVE=yes
# ifcfg-enp0s8
[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp0s8
ONBOOT=yes
MASTER=bond0
SLAVE=yes
步骤:3修改配置文件
# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
步骤:4关闭和停止NetworkManager服务
systemctl stop NetworkManager.service #停止NetworkManager服务
systemctl disable NetworkManager.service #禁止开机启动NetworkManager服务
重启网卡
systemctl restart network