网卡数据链路层负载均衡是使用mode4,且可以实现物理链路间互备,提供给用户的是一个逻辑上的链路,该逻辑链路的有效网络带宽为全部物理链路带宽之和。 Bonding mode4的一些特性:
- 最多支持绑定8个主机的网卡端口;
- LACP控制协议数据包每秒发送一次,检测主机网卡是否存活的检测包每30秒(fast)或每秒(slow)发送一次;
- LACP mode:active或passive,默认为passive模式,即只有当探测到有支持LACP功能的设备时自己才启用LACP功能;
对Bonding mode4的理解可以参考下面的链接。 https://en.wikipedia.org/wiki/Link_aggregation#Link_Aggregation_Control_Protocol
1、Bonding的模式一共有7种 #defineBOND_MODE_ROUNDROBIN 0 (balance-rr模式)网卡的负载均衡模式 #defineBOND_MODE_ACTIVEBACKUP 1 (active-backup模式)网卡的容错模式 #defineBOND_MODE_XOR 2 (balance-xor模式)需要交换机支持 #defineBOND_MODE_BROADCAST 3 (broadcast模式) #defineBOND_MODE_8023AD 4 (IEEE 802.3ad动态链路聚合模式)需要交换机支持 #defineBOND_MODE_TLB 5 自适应传输负载均衡模式 #defineBOND_MODE_ALB 6 网卡虚拟化方式 bonding模块的所有工作模式可以分为两类:多主型工作模式和主备型工作模式,balance-rr 和broadcast属于多主型工作模式而active-backup属于主备型工作模式。(balance-xor、自适应传输负载均衡模式(balance-tlb)和自适应负载均衡模式(balance-alb)也属于多主型工作模式,IEEE 802.3ad动态链路聚合模式(802.3ad)属于主备型工作模式。
2、加载并查看bonding模块 可以使用modinfo bonding 命令查看bonding模块的信息,默认情况下bonding模块没有被加载 可以以root用户登录,输入如下的命令进行开启加载bonding模块
modprobe bonding
modinfo bonding
lsmod | grep 'bonding'
3、修改网卡配置文件 编辑/etc/sysconfig/network-scripts/目录下的网卡配置文件,一般情况下网卡是以em+数字命名(dell主机),但也有其它命名方式。需要以物理主机系统实际的网卡配置文件名称为准。 注:确认已经将系统服务NetworkManager关闭,且关闭服务自启动。 注:以下是将2块网卡设置成链路聚合式负载均衡bond,如果有更高的数据通信需求,可以考虑把4块物理网卡全部加入bond中可提供4Gb的通信能力。
创建/etc/sysconfig/network-scripts/ifcfg-bond0文件,加入如下内容:
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.120.30
PREFIX=24
GATEWAY=192.168.120.1
ONBOOT=yes
BOOTPROTO=static
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"
注:mode=4,设置为链路负载均衡模式;miimon=100,监控网线链路故障的时间间隔(毫秒);lacp_rate=1,检测主机网卡是否存活的检测包每30秒(fast)或每秒(slow)发送一次。
修改/etc/sysconfig/network-scripts/ifcfg-em1文件:
DEVICE=em1
TYPE=Ethernet
BOOTPROTO=static
NAME=em1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
修改/etc/sysconfig/network-scripts/ifcfg-em2文件:
DEVICE=em2
TYPE=Ethernet
BOOTPROTO=static
NAME=em2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
在主机上确认配置结果方法: #ethtool bond0 注意查看Speed是否是2000Mb/s
#cat /proc/net/bonding/bond0
注:当主机网卡使用bond mode4模式时,需要交换机端口设置为IEEE 802.3ad Dynamic link aggregation模式。
可以参照如下对交换机端口Gi1/0/24, Gi1/0/25的配置。 注:当交换机未做设置时,主机上的bonding mode=4将不会生效,主机会使用一块物理网卡进行通信。
interface Port-channel3
switchport access vlan 120
switchport mode access
spanning-tree portfast
spanning-tree bpduguard enable
interface GigabitEthernet1/0/24
switchport access vlan 120
switchport mode access
spanning-tree portfast
spanning-tree bpduguard enable
channel-protocol lacp
channel-group 3 mode active
!
interface GigabitEthernet1/0/25
switchport access vlan 120
switchport mode access
spanning-tree portfast
spanning-tree bpduguard enable
channel-protocol lacp
channel-group 3 mode active
!
在交换机上确认: #show etherchannel summary Group Port-channel Protocol Ports 1 Po1(SD) - 2 Po3(SU) LACP Gi1/0/24(P) Gi1/0/25(P) 要求Po3后面必须是SU状态。S - Layer2, U - in user 注:Cisco交换机另有特殊的配置,不同于上面。
4、流量测试与可用性测试 1)测试分别插掉网卡连线,观察网络连通丢包情况。
2)从多个服务器上使用iPerf工具对做了bond的地址进行压测 验证吞吐量是否达到单网卡的约2倍。 Fedora 64 bits / Red Hat 64 bits / CentOS 64 bits (AMD64) https://iperf.fr/download/fedora/iperf3-3.0.11-2.fc23.x86_64.rpm
启动iperf服务端:iperf3 -s 启动客户端连接服务端:iperf3 -c 192.168.6.96 -t 100 -w 512k -f M -c 表示服务端地址 -t 表示测试持续时间,这里是10秒 -w 表示报文大小 -f 表示测试结果的度量单位,这里是兆
使用ifstat, iftop , nload等工具观察配置的bond的网卡的流量,其中bond0的流量应是em1, em2之和。