天天看点

centos系统物理网卡bond——数据链路层负载均衡配置

网卡数据链路层负载均衡是使用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之和。