Linux 链路聚合之bond和team

2023-11-09

交换机可以配置链路聚合,提供线路的冗余的同时提高带宽吞吐。服务器也可以通过bond/team技术做网口硬件层面的冗余,防止单个网口应用的单点故障以及提高带吞吐量。bond模式最多可以添加两块网卡,team模式最多可以添加八块网卡。

一、bond模式

  • mode=0(balance-rr)(平衡轮循环策略)
    链路负载均衡,增加带宽,支持容错,一条链路故障会自动切换正常链路。交换机需要配置静态链路聚合。
    特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。

  • mode=1(active-backup)(主-备份策略)
    这个是主备模式,只有一块网卡是active,另一块是备用的standby,所有流量都在active链路上处理。
    特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N,连接交换机的两个端口不需要做LACP(链路聚合)。

  • mode=2(balance-xor)(平衡策略)
    表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy,需要交换机配置port channel)
    特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力。

  • mode=3(broadcast)(广播策略)
    表示所有包从所有网络接口发出,这个不均衡,只有冗余机制,但过于浪费资源。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。需要和交换机的聚合强制不协商方式配合。
    特点:在每个slave接口上传输每个数据包,此模式提供了容错能力。

  • mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)
    表示支持802.3ad协议,和交换机的动态链路方式配合(需要xmit_hash_policy),标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。
    特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
    外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。
    必要条件:
    条件1:ethtool支持获取每个slave的速率和双工设定
    条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
    条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

  • mode=5(balance-tlb)(适配器传输负载均衡)
    是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。该模式要求slave接口的网络设备驱动有某种ethtool支持;而且ARP监控不可用。
    特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
    必要条件:
    ethtool支持获取每个slave的速率

  • mode=6(balance-alb)(适配器适应性负载均衡)
    在5的tlb基础上增加了rlb(接收负载均衡receive load balance),不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。
    必要条件:
    条件1:ethtool支持获取每个slave的速率;
    条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管。
    其实mode=6与mode=0的区别:mode=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mode=6,会发现第一个口流量很高,第2个口只占了小部分流量。

二、bond配置

  • 网卡配置
# 有其他未使用的网卡配置需要移除或者 ONBOOT=NO,否则会影响bond网卡启动

# vim /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
TYPE=Ethernet
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# vim /etc/sysconfig/network-scripts/ifcfg-em2
DEVICE=em2
TYPE=Ethernet
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=bond
BOOTPROTO=static
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=10.10.1.112
NETMASK=255.255.255.0
GATEWAY=10.10.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8
  • 内核加载bond模块
# modprobe bonding
# lsmod |grep bond
bonding               149864  0

# 写进配置文件, miimon链路检测时间,毫秒
# cat /etc/modprobe.d/bonding.conf 
alias bond0 bonding
options bonding mode=0 miimon=100
  • 查看bond状态
# cat /proc/net/bonding/bond0
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 34:73:5a:9a:82:64
Slave queue ID: 0

Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 34:73:5a:9a:82:65
Slave queue ID: 0

三、bond桥接

  • 安装brctl命令
# 安装这个命令是为了支持网卡桥接,没有这个命令,不能桥接网卡

# yum install bridge-utils -y
  • 对 bond网卡配置桥接,em1和em2配置依旧如上
# vim /etc/sysconfig/network-scripts/ifcfg-bond0 
DEVICE=bond0
TYPE=bond
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br0

# vim /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=10.10.1.112
NETMASK=255.255.255.0
GATEWAY=10.10.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8

四、team模式

  • team 模式介绍
    链路聚合与双网卡绑定几乎相同,可以实现多网卡绑定主从荣誉,负载均衡,提高网络访问流量。但链路聚合与双网卡绑定技术(bond)不同点就在于,双网卡绑定只能使用两个网卡绑定,而链路聚合最多可将8个网卡汇聚同时做绑定,此聚合模式称之为team,team模式是有CentOS 7 才出现的。
  • team 模式种类
    1、broadcast - 广播容错
    2、roundrobin - 平衡轮询
    3、activebackup - 主备模式
    4、loadbalance - 负载均衡

五、team配置

# 本次直接使用 nmcli 命令行方式管理
# mv /etc/sysconfig/network-scripts/ifcfg-ens* /tmp/backup				#删除原有网卡配置文件 
# nmcli device status							# 查看设备状态
# systemctl restart network
# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"loadbalance"}}'		#创建链路聚合,模式为 loadbalance
# nmcli connection show							# 查看网卡状态
# nmcli connection add type team-slave con-name team0-1 ifname em1 master team0
# nmcli connection add type team-slave con-name team0-2 ifname em2 master team0
# nmcli connection up team0-1					# 开启team0-1
# nmcli connection up team0-2					# 开启team0-2
# 添加team0 网卡配置
# nmcli connection modify team0 ipv4.addresses 192.168.3.200/24 ipv4.gateway 192.168.3.254 ipv4.method manual
# nmcli connection up team0						# 开启team0
# ls /etc/sysconfig/network-scripts/            # 可以看到生成了三个有关team模式的配置文件,主接口和两个子接口配置
ifcfg-team0  ifcfg-team0-1  ifcfg-team0-2 ...
# nmcli device status
# teamdctl team0 state							# 查看team0链路状态,如果是主备模式可以查看是当前工作的网卡
# ifdown/ifup em1                               # 测试断开一个网卡,看丢包情况

六、bond和team差别

  • bond只能是双网卡绑定,team不需要手动加载相应内核模块和有更强的拓展性,最高可以绑定8块网卡。
  • 其他参数区别
Feature Bonding Team
broadcast TX policy Yes Yes
round-robin TX policy Yes Yes
active-backup TX policy Yes Yes
LACP (802.3ad) support Yes Yes
hash-based TX policy Yes Yes
TX load-balancing support (TLB) Yes Yes
VLAN support Yes Yes
LACP hash port select Yes Yes
Ethtool link monitoring Yes Yes
ARP link monitoring Yes Yes
ports up/down delays Yes Yes
configurable via Network Manager (gui, tui, and cli) Yes Yes
multiple device stacking Yes Yes
highly customizable hash function setup No Yes
D-Bus interface No Yes
ØMQ interface No Yes
port priorities and stickiness (“primary” option enhancement) No Yes
separate per-port link monitoring setup No Yes
logic in user-space No Yes
modular design No Yes
NS/NA (IPV6) link monitoring No Yes
load-balancing for LACP support No Yes
lockless TX/RX path No Yes
user-space runtime control Limited Full
multiple link monitoring setup Limited Yes
extensibility Hard Easy
performance overhead Low Very Low
RX load-balancing support (ALB) Yes Planned
RX load-balancing support (ALB) in bridge or OVS No Planned

七、总结

       在网卡绑定选项上可以根据操作系统来选择,team模式是 CentOS7 加上的,如果是 CentOS7及以上系统可选用team模式绑定,支持更多拓展性以及更节省资源。另外如果是要做桥接网络的话,目前测试只能使用bond模式,team模式无法桥接。

 
 
Reference:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 链路聚合之bond和team 的相关文章

随机推荐

  • LA@方阵相似@相似矩阵的性质@正交相似对角化

    文章目录 方阵相似 引言 相似矩阵定义 相似变换 相似变换矩阵 相似矩阵的矩阵多项式和特征值相同 推论 与对角阵相似的矩阵性质定理 相似矩阵性质 导出性质 相似矩阵的乘方性质 相似矩阵和矩阵多项式 相似对角阵 对角阵多项式的展开 小结 强矩
  • vue3 解决reactive数组对象属性更新问题

    vue3 setup中使用对象数组 const state reactive
  • Python+Selenium-自动化框架登录之验证码识别

    前言 本篇主要记录在项目登录过程中验证码的问题 基于pytesseract和PIL组件实现简单的验证码图片识别 需要自行配置pytesseract PIL环境 目标 获取验证码 自动输入实现登录 一 截取验证码图片信息并保存 访问目标界面
  • Flutter判断当前月份是第几季度、Android判断当前月份是第几季度 、根据月份判断季度方法

    一年有12个月 分为四个季度 怎样判断当前月份是第几个季度呢 方法一 if else 判断 1 flutter 当前月份 int currentMonth DateTime now month 季度 int quarter if curre
  • SpringBoot + MyBatisPlus + MySQL8 实现树形结构查询

    场景 今天在实现权限功能模块时 需要将查询的权限数据 以树形结构的方式返回给前端 功能实现 第一步 权限表结构定义及其功能演示数据 DROP TABLE IF EXISTS baoan privilege CREATE TABLE baoa
  • 3_Docker 常用命令

    进程命令 启动docker服务 systemctl start docker 停止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker 查看docker服务状态
  • 手把手教你 在linux上安装kafka

    目录 1 准备服务器 2 选一台服务器配置kafka安装包 2 1 下载安装包 2 2 解压安装包 2 3 修改配置文件 3 分发安装包到其他机器 4 修改每台机器的broker id 5 配置环境变量 6 启停kafka服务 6 1 启动
  • Linux之RedHat 7 图形界面版安装(转载)

    linuxLinux之RedHat 7 图形界面版安装的详细教程 点击跳转 转载 https blog csdn net star in shy article details 82590241
  • 进程控制块和状态——随堂笔记

    1 PCB 描述进程的数据结构 当一个进程创建以后交给操作系统管理 管理的时候要对进程的属性进行描述 1 进程的描述信息 进程的基本信息pid给每个进程的编号 名字 2 处理器状态信息 在进程执行过程中使用的处理器的各种寄存器的信息 原因
  • Linux下的时间(ZZ)

    1 Linux下的时间 1 1 Linux下的时间系统 1 2 Linux下与时间有关的数据结构 2 获得当前时间 3 延时 4 定时器 4 1 alarm 4 2 setitimer 1 Linux下的时间1 1 Linux下的时间系统
  • Linux CentOS 巡检脚本

    系统巡检脚本 有常用的检查模块 如硬盘 内存 进程等 安全性检查等 1 巡查脚本 代码如下 示例 xunjian sh bin bash 系统状态 host while do clear echo e 当前在查看 e 1 31m 主机状态信
  • 永洪科技入选“2023大数据优秀服务商”

    8月23日 2023大数据优秀服务商 发布 永洪科技入选 此次评选由DBC CIS CIW eNet研究院牵头组织 旨在遴选大数据产业各细分赛道具有代表性与创新力的企业 组织 并展现其独特价值 重点考量技术实力 业内口碑 成长性 品牌力以及
  • LeetCode 5910. 检查两个字符串是否几乎相等

    如果两个字符串 word1 和 word2 中从 a 到 z 每一个字母出现频率之差都 不超过 3 那么我们称这两个字符串 word1 和 word2 几乎相等 给你两个长度都为 n 的字符串 word1 和 word2 如果 word1
  • Vue项目封装div拖动组件,实现div拖拽

    场景 在pc端项目中会碰到弹框后多个页面重叠的场景 类似于电脑打开多个文件夹 这时想要同时完整的展示两个页面的内容 就可以拖动页面 改变位置 很多教程都是使用自定义方法在单个组件中使用 本文带大家在Vue项目中封装一个拖拽div的方法 注册
  • JavaScript 弹窗

    JavaScript弹窗是Web开发中常见的交互方式之一 弹窗可以为用户提供提示 警告或者输入框等交互方式 让用户在使用网站或应用时更加便捷 在本文中 我们将讨论JavaScript弹窗的作用 类型和用途 JavaScript弹窗的作用 J
  • JVM的核心内容

    1 JVM对于java程序员的重要性可以用一下两句话来概述 1 1 关于任何java的技术问题都可以追溯到java虚拟机里面去 1 2 一个Java程序员水平的高低就看你对Java虚拟机这个东西有多了解 2 了解JVM需要先理解jdk与jr
  • 华为某高管工资曝光:每月高达27万,众网友表示长了见识

    如果说一个人工资每个月好几万 估计很多网友都会认为很高了 能拿到这么高薪资的人肯定是非常优秀和有能力的人 近日 一名在某企业从事招聘工作的网友在网上曝光了一条内容 其称在招聘简历中 无意发现了一份华为高管的简历 其级别是21级 月工资高达2
  • 利用Fiddler 解SSL加密 数据包

    在开发互联网应用的过程中 常常会设立或利用网络接口 为了调试对网络接口的使用 往往需要查看流入和流出网络接口的网络流量或数据包 抓包工具 就是一类用于记录通过网络接口的数据的工具 我们知道 网络协议是分层设计的 OSI模型将网络协议分为了7
  • 字符串之KMP详解

    昨晚梳理了一下KMP的过程 感觉印象深刻了不少 在此写下博客加深印象 同时也希望能和大家交流 KMP这个名字来源于其三个创始人名字首字母 主要用于解决字符串的匹配问题 字符串的匹配问题 假设有两个字符串S和T 问串T是否出现在串S中 串T在
  • Linux 链路聚合之bond和team

    交换机可以配置链路聚合 提供线路的冗余的同时提高带宽吞吐 服务器也可以通过bond team技术做网口硬件层面的冗余 防止单个网口应用的单点故障以及提高带吞吐量 bond模式最多可以添加两块网卡 team模式最多可以添加八块网卡 一 bon