bond技术及mode模式详解

2024-04-20 00:20
文章标签 技术 模式 详解 mode bond

本文主要是介绍bond技术及mode模式详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:
​ 一般企业内用于提供NFS服务、samba服务或者vsftpd服务时,要求系统必须提供7*24小时的网络传输服务。它所能提供的最大网络传输速度为100MB/s,但是当访问的用户数量特别多时,服务器的访问压力非常大,网络传输速率特别慢。
 因此我们可以采用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.1 mode 0 (平衡抡循环策略)
特点

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

实现功能

实现了负载平衡

提供容错能力

缺点

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

2.2 mode 1(主-备份策略)
特点

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

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

实现功能

提供容错能力

提供高网络连接的可用性

缺点

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

2.3 mode 2(平衡策略)
特点

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

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

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

实现功能

实现了负载平衡

提高了容错能力

2.4 mode 3(广播策略)
特点

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

实现功能

只提供容错能力

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

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

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

必要条件

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

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

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

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

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

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

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

必要条件

ethtool支持获取每个slave的速率

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

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

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

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

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

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

必要条件

① ethtool支持获取每个slave的速率

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

2.7.1 mode 5与mode 0的区别
mod 6:会先把ens33/eth0流量占满,再占ens36/eth1,….;

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

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

这篇关于bond技术及mode模式详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918835

相关文章

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

详解Java中的敏感信息处理

《详解Java中的敏感信息处理》平时开发中常常会遇到像用户的手机号、姓名、身份证等敏感信息需要处理,这篇文章主要为大家整理了一些常用的方法,希望对大家有所帮助... 目录前后端传输AES 对称加密RSA 非对称加密混合加密数据库加密MD5 + Salt/SHA + SaltAES 加密平时开发中遇到像用户的

Springboot使用RabbitMQ实现关闭超时订单(示例详解)

《Springboot使用RabbitMQ实现关闭超时订单(示例详解)》介绍了如何在SpringBoot项目中使用RabbitMQ实现订单的延时处理和超时关闭,通过配置RabbitMQ的交换机、队列和... 目录1.maven中引入rabbitmq的依赖:2.application.yml中进行rabbit

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab