一、bonding介绍
bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势。
bonding技术是linux系统内核层面实现的,它是一个内核模块(驱动)。使用它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, 一般来说都支持.
~]# modprobe --first-time bonding
~]# lsmod | grep bonding
~]# modinfo bonding
二、bonding的七种工作模式:
bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有各自的优缺点.
- balance-rr (mode=0) 有高可用 (容错) 和负载均衡的功能,每块网卡轮询收发包 (流量分发比较均衡).
- active-backup (mode=1) 只有高可用 (容错) 功能,这种模式只有一块网卡工作, 对外只有一个mac地址。缺点是端口利用率比较低
- balance-xor (mode=2) 此模式提供负载平衡和容错能力.传输基于选择HASH策略,默认HASH值获取方式为(源MAC地址 XOR 目标MAC地址) % slave数量。此模式下,数据传输到特定对端将总是从同一网口进出。目的地是由MAC地址决定,所以适合在本地连接和同一端口连接的情况.如果流量只能通过单个路由器,则负载均衡将被弱化
- broadcast (mode=3) 通过广播策略容错,传输都通过所有slave网卡
- 802.3ad (mode=4) IEEE 802.3ad 动态链路聚合策略
- balance-tlb (mode=5) 在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址.此模式只适合内核bonding模块知悉的本地地址,不能在虚拟机桥接的网桥后端使用
- balance-alb (mode=6) 针对IPV4流量的接收负载均衡(receive load balance, rlb),接收负载均衡是通过ARP协商实现的,同样不能在虚拟机桥接的网桥后端使用
具体的网上有很多资料,也可参考https://www.kernel.org/doc/Documentation/networking/bonding.txt了解每种模式的特点根据自己的选择就行, 一般会用到0、1、4这几种模式。
三、bonding的七种工作模式交换机配置:
绑定模式 | 交换机配置 |
| 需启用以太网端口聚合(不是LACP) |
| 无需配置 |
| 需启用以太网端口聚合(不是LACP) |
| 需启用以太网端口聚合(不是LACP) |
| 需启用LACP链路聚合 |
| 无需配置 |
| 无需配置 |
四、bonding实战配置(包含RHEL和SLES):
RHEL:
以em1,em2为例:
修改网络配置文件:(linux服务器全部使用em1、em2两个网口进行绑定,绑定方法有版本的区别)
RHEL 5:
1、停止NetworkManager:
~]# service NetworkManager stop;chkconfig NetworkManager off
2、确保bonding模块加载,修改~]# vim /etc/modprobe.conf,加入以下:
alias bond0 bonding
3、 ~]#cd /etc/sysconfig/network-scripts,通过~]#vim ifcfg-bond0命令,修改ifcfg-bond0内容如下:
DEVICE=bond0
TYPE=Ethernet
IPADDR=>
NETMASK=<按实际情况修改>
GATEWAY=<按实际情况修改>
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="miimon=100 mode=1"
上面的BONDING_OPTS="mode=1 miimon=100" 表示这里配置的工作模式是mode1(active-backup), miimon表示监视网络链接的频度 (毫秒), 这里设置的是100毫秒, 根据你的需求也可以指定mode成其它的负载模式(数字和模式名字都行)。
4、通过~]#vim ifcfg-em1命令,修改ifcfg-em1内容如下:
DEVICE=em1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
5、通过vi ifcfg-em2命令,修改ifcfg-em2内容如下:
DEVICE=em2
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
6、重启网络服务
~]# service network restart
7、查看绑定结果
a) 查看bonding模块是否已加载
~]# lsmod | grep bonding
b) 查看已经配置的绑定接口
~]# ifconfig
~]# cat /sys/class/net/bonding_masters
c) 查看已经配置的绑定接口模式
~]# more /sys/class/net/bond0/bonding/mode
RHEL 6,7:
1、停止NetworkManager:
RHEL6:
~]# service NetworkManager stop;chkconfig NetworkManager off
RHEL7:
~]# systemctl stop NetworkManager;systemctl disable NetworkManager
2、 ~]#cd /etc/sysconfig/network-scripts,通过~]#vim ifcfg-bond0命令,修改ifcfg-bond0内容如下:
DEVICE=bond0
TYPE=Ethernet
IPADDR=>
NETMASK=>
GATEWAY=>
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="miimon=100 mode=1"
3、通过~]#vim ifcfg-em1命令,修改ifcfg-em1内容如下:
DEVICE=em1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
4、通过vi ifcfg-em2命令,修改ifcfg-em2内容如下:
DEVICE=em2
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no
5、重启网络服务
RHEL6:
~]# service network restart
RHEL7:
~]# systemctl restart network
6、查看绑定结果
a) 查看bonding模块是否已加载
~]# lsmod | grep bonding
b) 查看已经配置的绑定接口
~]# ifconfig
~]# cat /sys/class/net/bonding_masters
c) 查看已经配置的绑定接口模式
~]# more /sys/class/net/bond0/bonding/mode
7、网卡绑定切换测试
~]# ifenslave -c bond0 ethX(ethX 为新主网卡)
SLES10,11,12:
1、停止NetworkManager:
SLES10,11:
~]# service NetworkManager stop;chkconfig NetworkManager off
SLES 12:
~]# systemctl stop NetworkManager;systemctl disable NetworkManager
2、 ~]#cd /etc/sysconfig/network,通过~]#vim ifcfg-bond0命令,修改ifcfg-bond0内容如下:
BONDING_MASTER='yes'
BONDING_MODULE_OPTS='mode=active-backup miimon=100'
BONDING_SLAVE0='eth0'
BONDING_SLAVE1='eth1'
BOOTPROTO='static'
IPADDR='''
STARTMODE='auto'
USERCONTROL='no'
3、通过~]#vim ifcfg-eth0命令,修改ifcfg-eth0内容如下:
BOOTPROTO='none'
NAME='82599EB10-Gigabit Network Connection' #根据网卡型号不同
STARTMODE='hotplug'
USERCONTROL='no'
4、通过vi ifcfg-eth1命令,修改ifcfg-eth1内容如下:
BOOTPROTO='none'
NAME='82599EB10-Gigabit Network Connection' #根据网卡型号不同
STARTMODE='hotplug'
USERCONTROL='no'
5、重启网络服务
~]# service network restart
6、查看绑定结果
a) 查看bonding模块是否已加载
~]# lsmod | grep bonding
b) 查看已经配置的绑定接口
~]# ifconfig
~]# cat /sys/class/net/bonding_masters
c) 查看已经配置的绑定接口模式
~]# more /sys/class/net/bond0/bonding/mode
7、网卡绑定切换测试
~]# ifenslave -c bond0 ethX(ethX 为新主网卡)
请关注点赞转发,感谢各位看官支持!