记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

在 Debian 11 / Debian 10 上配置多网卡绑定

在 Debian 11 / Debian 10 上配置多网卡绑定

 
一、   网卡绑定的基本原理
 
多网卡绑定一方面能够提高网络吞吐量,另一方面也可以增强网络高可用。
从软件的角度来看,多网卡绑定实际上只需要提供一个额外的bond驱动程序即可,通过该虚拟网卡驱动程序可以将实际多块网卡屏蔽,对TCP/IP协议层而言只存在一个Bond网卡。
 
二、   Linux网卡绑定七种模式详解
Linux网卡绑定共七种模式,分别是如下模式:
- mode=0  round-robin轮询策略(Round-robin policy)
 
- mode=1  active-backup主备策略(Active-backup policy)
 
- mode=2  load balancing (xor)异或策略(XOR policy)
- mode=3  fault-tolerance (broadcast)广播策略(Broadcast policy)
 
- mode=4  lacp IEEE 802.3ad 动态链路聚合(IEEE 802.3ad Dynamic link aggregation)
 
- mode=5  transmit load balancing适配器传输负载均衡(Adaptive transmit load balancing)
- mode=6  adaptive load balancing适配器负载均衡(Adaptive load balancing)
 
接下来,我们一一来看每种模式的含义。
1.    round-robin轮询策略
 
cat /proc/net/bonding/bond0
Bonding Mode: load balancing (round-robin)
该模式下,链路处于负载均衡状态,数据以轮询方式向每条链路发送报文,基于per packet方式发送。即每条链路各一个数据包。这模式好处在于增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。该模式下,交换机端需要配置聚合口,在cisco交换机上叫port channel
 
 
2.active-backup主备策略
 
该模式拓扑图与上图相同
cat /proc/net/bonding/bond0
Bonding Mode: fault-tolerance (active-backup)
在该模式下,一个端口处于主状态,一个处于备状态,所有流量都在主链路上发出和接收,备链路不会有任何流量。当主端口down掉时,备端口接管主状态。同时可以设置primary网卡,若primary网卡出现故障,切换至备网卡,primary网卡回复后,流量自动回切。这种模式接入不需要交换机端支持。
 
3.load balancing (xor)异或策略
 
该模式拓扑图与上图相同
cat /proc/net/bonding/bond0
Bonding Mode: load balancing (xor)
在该模式下,通过源和目标mac做hash因子来做xor算法来选择链路,这样就使得到达特定对端的流量总是从同一个接口上发出。和balance-rr一样,交换机端口需要能配置为“port channel”。
值得注意的是,若选择这种模式,如果所有流量源和目标mac都固定了,例如使用“网关模式”,即所有对外的数据传输均固定走一个网关,那么根据该模式的描述,分发算法算出的线路就一直是同一条,另外一条链路不会有任何数据流,那么这种模式就没有多少意义了。
 
4.fault-tolerance (broadcast)广播策略
 
cat /proc/net/bonding/bond0
Bonding Mode: fault-tolerance (broadcast)
这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去。当有对端交换机失效,我们感觉不到任何丢包。这个模式也需要交换机配置聚合口。
拓扑图如下所示:
 
当一条链路出现故障是不会影响服务器另一条链路正常工作的。而且故障过程是0丢包。下面展示了这种模式下ping信息:
 
从这个ping信息可以看到,这种模式的特点是,同一个报文服务器会复制两份分别往两条线路发送,导致回复两份重复报文,虽然这种模式不能起到增加网络带宽的效果,反而给网络增加负担,但对于一些需要高可用的环境下,例如RAC的心跳网络,还是有一定价值的。
 
5.lacp IEEE 802.3ad 动态链路聚合
 
该模式拓扑结构与主备模式相同
cat /proc/net/bonding/bond0
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
该模式是基于IEEE 802.3ad Dynamic link aggregation(动态链接聚合)协议,针对该协议的介绍,在公众号之前的文章中有所涉及。
在该模式下,操作系统和交换机都会创建一个聚合组,在同一聚合组下的网口共享同样的速率和双工设定。操作系统根据802.3ad 协议将多个slave 网卡绑定在一个聚合组下。聚合组向外发送数据选择哪一块儿网卡是基于传输hash 策略,该策略可以通过xmit_hash_policy 选项从缺省的XOR 策略改变到其他策略。
该模式的必要条件:
- ethtool 支持获取每个slave 的速率和双工设定;
- 交换机支持IEEE 802.3ad Dynamic link aggregation。
大多数交换机需要经过特定配置才能支持802.3ad 模式。
 
6.transmit load balancing适配器传输负载均衡
 
cat /proc/net/bonding/bond0
Bonding Mode: transmit load balancing
这种模式相较load balancing (xor)异或策略及LACP模式的hash策略相对智能,会主动根据对端的MAC地址上的流量,智能的分配流量从哪个网卡发出。但不足之处在于,仍使用一块网卡接收数据。存在的问题与load balancing (xor)也是一样的一样,如果对端MAC地址是唯一的,那么策略就会失效。这个模式下bond成员使用各自的mac,而不是上面几种模式是使用bond0接口的mac。无需交换机支持
该模式拓扑图如下:
 
 
7.adaptive load balancing适配器负载均衡
 
该模式拓扑结构与上图一致。
cat /proc/net/bonding/bond0
Bonding Mode: adaptive load balancing
该模式除了balance-tlb适配器传输负载均衡模式的功能外,同时加上针对IPV4流量接收的负载均衡。接收负载均衡是通过ARP协商实现的。在进行ARP协商的过程中,bond模块将对端和本地的mac地址进行绑定,这样从同一端发出的数据,在本地也会一直使用同一块网卡来接收。若是网络上发出的广播包,则由不同网卡轮询的方式来进行接收。通过这种方式实现了接收的负载均衡。该模式同样无需交换机支持。
 
三、小结
在网卡绑定的七种模式下,其中mode=0、2、3、4需要交换机支持,mode=1、5、6不需要交换机配置支持。
-----------------------------------
Linux下多网卡绑定模式详解
https://blog.51cto.com/u_2979193/2095134
 

在 Debian 11 / Debian 10 上配置网络网卡组合

网络 NIC 组合可以定义为将多个网络接口组合成单个网络组。这是工作站冗余和高可用性的主要解决方案。通过将多个网络接口组合在一起以创建更大的流量管道,可以防止服务器因单个链路/接口故障而导致的服务丢失,从而提高容错能力。

除了容错之外,首选网络 NIC 成组,因为:

  • 它易于配置。
  • 软件应用程序可供免费下载。
  • 由于互联网速度的提高,为用户提供快速的浏览体验

网络 NIC 组合有几个概念,包括:

 
  • Teamd – 这是一个分组守护程序,它使用 libteam 库通过 Linux 内核与团队设备进行通信。
  • Teamdctl – 一个允许控制成组实例的实用程序。您可以检查和更改端口状态,以及在备份和活动状态之间切换。
  • 运行器 – 它们是以 JSON 格式编写的单元,用于实现各种 NIC 分组概念。

有几种跑步者(团队跑步模式)包括:

  • 802.3ad – 这是链路聚合模式。此方法符合 IEEE 链路聚合标准,并提供容错和增加带宽
  • 广播数据是从所有从接口转出的,因此这种特定绑定方法的“广播”名称
  • 负载平衡 – 它基于活动的 Tx 负载平衡和基于 BPF 的 Tx 端口选择器。流量在所有网卡之间传输
  • 主动备份 – 只有一个网络接口处于活动状态,而组中的其他接口等待故障以激活它们。
  • 轮循机制 – 网络数据包通过组成绑定接口的每个网络接口卡轮换。

在 Debian 11 / Debian 10 上配置网络网卡组合可以通过以下步骤实现。

第 1 步 – 在 Debian 11 / Debian 10 上安装 Teamd。

为了能够配置 NIC Teaming,我们需要在 Debian 11 / Debian 10 上安装 Teaming 守护程序。

sudo apt install teamd

确保已安装网络管理器。

sudo apt-get install network-manager

启动启用网络管理器

sudo systemctl start NetworkManager.service  sudo systemctl enable NetworkManager.service

步骤 2 – 在 Debian 11 / Debian 10 上配置网络网卡组合

本指南演示了在 Debian 11 / Debian 10 上配置网络网卡组合的两种方法:

  • 使用网络管理器 NMCLI
  • 手动地

方法 1 – 使用 NMCLI 在 Debian 11 / Debian 10 上配置网络网卡组合。

使用网络管理器的实用程序工具,我们可以轻松配置网络 NIC 组合。首先识别网络设备,如下所示。

nmcli device status

输出:

从输出中,我们将使用并创建一个网络团队。获取有关设备的详细信息。enp1s0enp9s0

nmcli connection show

示例输出:

在继续之前,请使用提供的 UUID 断开两个设备的连接。

sudo nmcli connection delete 40a3c011-f9c1-4dfc-b73b-3d80c8e291ac sudo nmcli connection delete 4c1a8752-53c3-4f0c-933c-95e52b023835

现在验证设备是否已断开连接:

完成上述配置后,我们可以继续创建一个网络团队(team1),其中运行器(活动备份)如下。

sudo nmcli connection add type team con-name team1 ifname team1 config '{"runner": {"name": "activebackup"}}'

创建后,使用以下命令查看团队信息:

$ nmcli connection show team1 connection.id:                          team1 connection.uuid:                        71581079-6012-420b-84e2-1ddcb878d88b connection.stable-id:                   -- connection.type:                        team connection.interface-name:              team1 connection.autoconnect:                 yes connection.autoconnect-priority:        0 connection.autoconnect-retries:         -1 (default) connection.multi-connect:               0 (default) connection.auth-retries:                -1 connection.timestamp:                   0 connection.read-only:                   no connection.permissions:                 -- connection.zone:                        -- connection.master:                      -- connection.slave-type:                  -- connection.autoconnect-slaves:          -1 (default) connection.secondaries:                 --

继续并配置团队的 IP 地址、DNS 和自动连接,如下所示。

sudo nmcli con mod team1 ipv4.addresses 192.168.205.50/24 sudo nmcli con mod team1 ipv4.gateway 192.168.205.1 sudo nmcli con mod team1 ipv4.dns 8.8.8.8 sudo nmcli con mod team1 +ipv4.dns 8.8.4.4 sudo nmcli con mod team1 ipv4.method manual sudo nmcli con mod team1 connection.autoconnect yes

然后将这两个设备添加并作为从设备添加到上面创建的组中。enp1s0enp9s0

sudo nmcli con add type team-slave con-name team1-slave0 ifname enp1s0 master team1 sudo nmcli con add type team-slave con-name team1-slave1 ifname enp9s0 master team1

验证是否已添加从属服务器。

$ nmcli connection show NAME                UUID                                  TYPE      DEVICE   Wired connection 1  560ba0ac-36ac-477d-877a-84cfe96a7a42  ethernet  enp10s0  team1               71581079-6012-420b-84e2-1ddcb878d88b  team      team1    team1-slave0        773fcccd-5f0c-4684-9b49-10d8aadce24e  ethernet  enp1s0   team1-slave1        02dd3e54-b37b-43fe-b0bb-790a19cd19f7  ethernet  enp9s0

最后,通过重新启动团队来应用更改。

sudo nmcli connection down team1 && sudo nmcli connection up team1

查看团队的状态。

ip addr show  dev  team1

输出:

此外,使用该实用程序,您可以查看团队的状态。teamdctl

sudo teamdctl team1 state

输出:

从上面的输出中,我们可以确定正在使用的运行器(活动备份),组上的从站以及运行器中的活动端口(enp1s0)。

测试团队功能。

现在,我们可以测试主动备份策略是否按预期工作。为此,请断开活动接口的连接,如下所示。

sudo nmcli device disconnect enp1s0

现在检查以查看活动从站。

sudo teamdctl team1 state

输出:

此输出演示了团队的功能,主动节点已切换到另一个可用的接口

删除团队。

要删除网络团队,请先断开团队的连接。

sudo nmcli connection down team1

现在删除连接的从属服务器。

sudo nmcli connection delete team1-slave0 team1-slave1

继续并删除团队。

sudo nmcli connection delete team1

验证团队是否已被删除。

$ nmcli connection show  NAME                UUID                                  TYPE      DEVICE   Wired connection 1  560ba0ac-36ac-477d-877a-84cfe96a7a42  ethernet  enp10s0 

方法 2 – 在 Debian 11 / Debian 10 上手动配置网络网卡组合。

还有一种简化的方法可以通过编辑 /etc/network/interface 上的网络脚本来创建网络绑定

首先,确保绑定模块安装在 Debian 11 / Debian 10 上。

sudo apt-get install ifenslave

重新加载模块。

sudo modprobe bonding

将配置加载到内核中,以便系统在引导时自动选取这些配置。

echo 'bonding' | sudo tee -a sudo /etc/modules 

现在编辑 /etc/network/interfaces,如下所示。

sudo vim /etc/network/interfaces

在文件中,适当地添加您的 Bond 名称和从属接口。

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5).  source /etc/network/interfaces.d/*  # The loopback network interface auto lo iface lo inet loopback  # Teaming physical interfaces auto enp1s0 iface enp1s0 inet manual  auto enp9s0 iface enp9s0 inet manual  ##The Bond Configuration## auto bond0 iface bond0 inet static address 192.168.205.150 netmask 255.255.255.0 gateway 192.168.205.1 bond-mode 1 bond-primary enp9s0 bond-slaves enp9s0 enp1s0 bond-miimon 100 bond-downdelay 400 bond-updelay 800

保存上面的文件并激活网络绑定。

sudo ifdown enp1s0 enp9s0 sudo ifup bond0

随着网络绑定的建立,检查其状态;

sudo ifconfig

示例输出:

您还可以获取详细的债券信息,如下所示。

sudo cat /proc/net/bonding/bond0

示例输出:

就是这样,我们已经成功地在 Debian 11 / Debian 10 上配置了 Network NIC Teaming。

https://computingforgeeks.com/configure-network-nic-teaming-on-debian/

BRCTL网桥配置命令、网卡的链路聚合

命令方式管理桥接接口-brctl命令介绍

brctl show             ##查看已有网桥 brctl addbr br0        ##添加网桥 ifconfig br0 172.25.254.232 netmask 255.255.255.0     ##为br0的虚拟网卡配置ip和子网掩码 brctl addif br0 eth0   ##添加一块物理网卡,将它附加到刚生成的虚拟网桥接口br0上  ifconfig br0 down      ##关闭网桥 brctl delif br0 eth0   ##删除物理网卡 brctl delbr br0        ##删除网桥
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注:以上命令均为配置临时网桥

网卡的链路聚合-bond

//创建一个bond口,即bond0 nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup ip4 172.25.254.232/24      //为bond0添加eth1网卡 nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0  //为bond0添加eth2网卡  nmcli connection add con-name eth2 ifname eth2 type bond-slave master bond0 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

创建一个bond口,将原有网卡删除,从设备管理器添加两块网卡,并添加至bond0,使用nmcli connection show命令查看设备连接列表。
这里写图片描述

同时开启监控窗口,查看bond0当前使用状态。
这里写图片描述

使用ifconfig eth1 down命令使eht1断开。这里可以看到,只有eth2是活跃状态,而eth1已经显示为断开。
这里写图片描述

网卡的链路聚合-Team接口

Team和bond0功能类似,不过Team不需要手动加载相应的内核模块,并且支持8块网卡,具有更强的拓展性。

//创建一个team设备,即team0 nmcli connection add type team con-name team0 ifname team0 config ‘{“runner”:{“name”:”activebackup”}}’ ip4 172.25.254.232/24  //将eth0设备加入team0 nmcli connection add con-name eth0 ifname eth0 type team-slave master team0 //将eth1设备加入team0 nmcli connection add con-name eth1 ifname eth1 type team-slave master team0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

创建一个team0设备,并将两块设备依次加入team0网路组后,使用teamdctl team0 state命令查看team0当前使用状态。
这里写图片描述

测试网络的连通性
这里写图片描述

断开eth0设备
这里写图片描述

此时网络连通性仍旧良好

这里写图片描述

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):