bond网卡绑定

前言

一般企业内用于提供NFS服务、samba服务或者vsftpd服务时,要求系统必须提供7*24小时的网络传输服务。它所能提供的最大网络传输速度为100MB/s,但是当访问的用户数量特别多时,服务器的访问压力非常大,网络传输速率特别慢。

因此我们可以采用bond技术实现多网卡的负载均衡来保障网络的自动备援和负载均衡。以此保障实际运维工作中网络的可靠性、文件高速率传输性。生产环境中,物理机基本上都是用两张网卡做bond绑定,用主备或者负载模式

一、Linux多网卡绑定

1.1网卡绑定mode的种类

网卡绑定mode共有七种:bond0、bond1、bond2、bond3、bond4、bond5、bond6

 

常见的网卡绑定驱动主要有以下三种模式:

 

mode0平衡负载模式: 平时两块网卡工作,且自动备援,但需要在服务器本机网卡相连的交换机设备上进行端口聚合来支持绑定技术;

 

mode1自动备援技术: 平时只有一块网卡工作,在它故障后自动替换为另外的网卡;

 

mode6平衡负载模式: 平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持;

 

注意:mode 0负载均衡配置

 

我们在做mode 0 负载均衡时,仅仅设置option是bond0 miimon=100 mode=0是不行的,与网卡相连的交换机必须做聚合方式的配置。因为做bonding的这两块网卡使用的是同一个MAC地址,如果这些网卡都接在同一个交换机上,那么交换机的ARP中MAC地址对应的端口就有多个,此时,当交换机接收到发往此MAC地址的数据时会出现不知道应该往哪个端口发送的问题。

 

一般的解决方式:两个网卡接入不同的交换机即可。mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址。

二、bond七种模式详解

2.1mode 0(平衡循环策略)

Bonding Mode: load balancing (round-robin)

特点

传输数据包顺序为依次传输:即第1个包走ens33/eth0,下一个包就走ens36/eth1….一直循环下去,直到最后一个传输完毕

实现功能

实现了负载平衡

提供容错能力

缺点

如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

2.2mode 1(主-备份策略)

Bonding Mode: fault-tolerance (active-backup)

特点

1. 只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备

2. mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱

实现功能

提供容错能力

提供高网络连接的可用性

缺点

资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

2.3mode 2(平衡策略)

Bonding Mode: load balancing (xor)

特点

1. 基于指定的传输HASH策略传输数据包

2. 默认的策略为:(源MAC地址 XOR 目标MAC地址) % slave数量

3. 其他的传输策略可以通过xmit_hash_policy选项指定

实现功能

实现了负载平衡

提高了容错能力

2.4mode 3(广播策略)

Bonding Mode: fault-tolerance (broadcast)

特点

在每个slave(从设备)上传输每个数据包

实现功能

只提供容错能力

2.5mode 4(IEEE 802.3ad 动态链接聚合)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation

特点

1. 需要创建一个聚合组,它们共享同样的速率和双工设定

2. 根据802.3ad规范将多个slave工作在同一个激活的聚合体下

必要条件

1. ethtool支持获取每个slave的速率和双工设定

2. switch(交换机)支持IEEE 802.3ad Dynamic link aggregation

3. 很多switch(交换机)需要经过特定配置才能支持802.3ad模式

2.6mode 5(适配器传输负载均衡)

Bonding Mode: transmit load balancing

特点

1. 不需要任何特别的switch(交换机)支持的通道bonding

2. 在每个slave上根据当前的负载(根据速度计算)分配外出流量

3. 如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

必要条件

ethtool支持获取每个slave的速率

2.7 mode 6 (适配器适应性负载均衡)

Bonding Mode: adaptive load balancing

特点

1. 该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持

2. 接收负载均衡是通过ARP协商实现的

bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信

3. 来自服务器端的接收流量也会被均衡

当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达 时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave

必要条件

1.  ethtool支持获取每个slave的速率

2. 底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个 bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管

mode 6与mode 0的区别

mod 6:会先把ens33/eth0流量占满,再占ens36/eth1,….;

mod 0:会发现2个口的流量都很稳定,基本一样的带宽。

通过比对会发现mod 6的第一个口流量很高,第2个口只占了小部分流量

三。bound配置

(1)加载模块

modprobe bonding                         #加载bond模块,默认未加载

lsmod | grep bonding                     #查看内核是否加载

(2)添加网卡

2.1)ens33网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens33

DEVICE=ens33

ONBOOT=yes

MASTER=bond0

BOOTPROTO=none

SLAVE=yes

2.2)ens36网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens36

DEVICE=ens36

ONBOOT=yes

MASTER=bond0

BOOTPROTO=none

SLAVE=yes

2.3)bond网卡

**还有配置项可以根据需要增加

vim /etc/sysconfig/network-scripts/ifcfg-bond0     #自己创建bond网卡文件

DEVICE=bond0                                                       #与文件名一致

BOOTPROTO=static

IPADDR=192.168.150.200                                      #设置IP

NETMASK=255.255.255.0                                     #设置掩码

ONBOOT=yes

BROADCAST=192.168.150.254

BONDING_OPTS="miimon=100 mode=0"           #miimon=100,系统每100ms 监测一次链路连接状态,mode=0,表示网卡eth0,eth1采用平衡轮询模式如果mode=1,则表示eth0和eth1采用主备模式

BONDING_OPTS="fail_over_mac=1"                  #默认fail_over_mac=0,当发生错误时,只改slave的mac不改bond;fail_over_mac=1时,只改bond不改slave,配置该项是为了更改mac地址获取方式,是虚拟机bug所需增加的配置,实际环境不一定要配置

(3)启动网卡

systemctl restart network                       #重启网卡信息

ip a                                                            #查看所有I

cat /proc/net/bonding/bond0                            #查看网卡绑定详细的信息

注意:

与真机环境有所不同,vmware虚拟机下给linux系统做bond0网卡配置,照这样做完后,测试发现down掉ens33后,bond0网卡ping不通,无法起到网卡备份效果。所以需要fail_over_mac=1时,只改bond不改slave。改完后,service network restart重启下网卡配置

 

posted @ 2021-08-26 10:31  D-LXT  阅读(785)  评论(0编辑  收藏  举报