Linux配置bond(网卡绑定)

Linux配置bond(网卡绑定)

最近需要搭建测试环境,为了保证带宽不成为瓶颈,就需要使用bond来提升网络带宽

1 概念、原理、工作模式

1.1 概念:网卡捆绑

网卡绑定,也称作网卡捆绑。就是将两个或者更多的物理网卡绑定成一个虚拟网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗的讲就是说这几块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路,以达到提供负载均衡或者冗余、增加带宽的目的。

这项技术在sun和cisico中早已存在,被称为trinking(链路聚集)和etherchannel(链路捆绑)技术,在linux的2.4.X及其以上的内核中也采用了这种技术,被称为bonding。

1.2 原理:类比多个pod对外提供一个svc

类比:K8s service,多个pod对外提供一个服务,通过ingress实现负载均衡

什么是bonding需要从网卡的混杂(promise)模式说起。在正常情况下,网卡只接受目的硬件地址(MAC Address)是自身MAC的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种称为混杂模式,可以接受网络上所有的帧,比如说tcpdump,就是运行在这个模式下。Bonding也是运行在这个模式下,而且修改了驱动程序中的MAC地址,将两块网卡的MAC地址改成相同,可以接受待定MAC的数据帧。送给bond驱动程序处理。

1.3 工作模式(7种)

Bonding通过修改配置文件可以工作在以下七种工作模式:

①mode=0 round-robin 【轮询】

轮询策略(Round-robin policy),模式代号是0。该策略是按照设备顺序依次传输数据包,直到最后一个设备。这种模式提供负载均衡和容错能力。

②mode=1 active-backup 【替补】

活动备份策略(Active-backup policy),模式代号是1。该策略只有一个设备处理数据,当它宕机的时候就会由备份代替,仅提供容错能力。

③mode=2 load balancing (xor)【根据mac地址进行异或操作,来选择处理设备】

异或策略(XOR policy),模式代号是2。该策略是根据MAC地址异或运算的结果来选择传输设备,提供负载均衡和容错能力。

④mode=3 fault-tolerance (broadcast)【广播】

广播策略(Broadcast policy),模式代号是3。该策略通过全部设备来传输所有数据,提供容错能力。

⑤mode=4 lacp 【创建聚合组=》带宽翻倍】

IEEE 802.3ad 动态链接聚合(IEEE 802.3ad Dynamic link aggregation),模式代号是4。该策略通过创建聚合组来共享相同的传输速度,需要交换机也支持 802.3ad 模式,提供容错能力。该模式下,网卡带宽最高可以翻倍(如从1Gbps翻到2Gbps)。

⑥mode=5 transmit load balancing【传输负载均衡】

适配器传输负载均衡(Adaptive transmit load balancing),模式代号是5。该策略是根据当前的负载把发出的数据分给每一个设备,由当前使用的设备处理收到的数据,如果当前正用于接收数据的网卡发生故障,则由其它网卡接管,要求所用的网卡及网卡驱动可通过ethtool命令得到speed信息。本策略的通道联合不需要专用的交换机支持,提供负载均衡和容错能力。

⑦mode=6 adaptive load balancing 【传输+接受负载均衡】

适配器负载均衡(Adaptive load balancing),模式代号是6。该策略在IPV4情况下包含适配器传输负载均衡策略,由ARP协商完成接收的负载,通道联合驱动程序截获ARP在本地系统发送出的请求,用其中一个设备的硬件地址覆盖从属设备的原地址。即在策略6的基础之上,在接收数据的同时实现负载均衡,除要求ethtool命令可得到speed信息外,还要求支持对网卡MAC地址的动态修改功能。

注意事项

注意:

  • Mode参数中的0、2、3、4模式要求交换机支持“ports group”功能并能进行相应的设置,例如在cisco中要将所连接的端口设为“port-channel”。
  • 如果系统流量不超过单个网卡的带宽,请不要选择使用mode1之外的模式,因为负载均衡需要对流量进行计算,这对系统性能会有所损耗。
  • 如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用模式4以提高系统性能。【拧成一股绳】

2 实战

1. 建立bonding网卡:ifcfg-bond0

#新建bonding网卡配置文件ifcfg-bond0。
vi /etc/sysconfig/network-scripts/ifcfg-bond0
# 配置文件内容如下(IP改为自己的):
#物理设备名称
DEVICE=bond0
#启动时是否激活
ONBOOT=yes
#是否启动协议,可以是none(无须启动协议)、bootp(使用bootp协议)、dhcp(使用dhcp协议)
BOOTPROTO=none
#IP地址
IPADDR=192.168.100.21
#网络掩码
NETMASK=255.255.255.0
#是否允许非root用户控制该设备
USERCTL=no
#网卡的类型
TYPE=Ethernet
#是否在该网卡启用IPV6的功能
IPV6INIT=no
#是否运行网卡在启动时向DHCP服务器查询DNS信息,并自动覆盖/etc/resolv.conf配置文件
PEERDNS=yes

2. 配置开机自动加载bonding驱动

修改内核模块开机自动加载文件/etc/modprobe.conf(根据linux内核版本可能会存在不同,旧的版本可能是modules.conf),以使内核模块开机自动加载bonding驱动程序。

vi /etc/modprobe.conf
# 在文件最后加上:alias bond0 bonding
#miimon参数:指定网卡故障时切换时间间隔时间,以ms为单位
#mode参数:bonding模式
options bond0 miimon=100 mode=5

3. 修改配被绑定网卡配置

改所有被绑定了的网卡的配置文件(以eth2为例)

  • 比如我要把ens11f0和ens1f0这两张网卡绑定到bond0,那么这两个网卡的配置文件都需要修改。帮几张修改几张
vi /etc/sysconfig/network-scripts/ifcfg-eth0
#bonding到bond0,使该网络适配器成为bond0的附属设备
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
# 将该网卡绑定到bond0
MASTER=bond0
SLAVE=yes
USERCTL=no
TYPE=Ethernet
#原MAC地址最好不用删除,但要注释掉
#HWADDR=00:1B:21:64:32:24

4. 启动bonding

# 启动bond0
Ifup bond0     

5. 验证是否绑定成功:ifconfig查看MAC

ifconfig,查看bond0与被绑定网卡的MAC地址是否相同

  • 比如:如下我将eth2、eth3绑定到bond0
  • bond0 Link encap:Ethernet HWaddr 00:15:17:C4:8B:E0
    inet addr:192.168.110.82 Bcast:192.168.110.255 Mask:255.255.255.0
    inet6 addr: fe80::215:17ff:fec4:8be0/64 Scope:Link
    UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
    RX packets:129687 errors:0 dropped:0 overruns:0 frame:0
    TX packets:2534730 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:11516581 (10.9 MiB) TX bytes:3449545971 (3.2 GiB)
  • eth2 Link encap:Ethernet HWaddr 00:15:17:C4:8B:E0
    inet6 addr: fe80::215:17ff:fec4:8be0/64 Scope:Link
    UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:5574 errors:0 dropped:0 overruns:0 frame:0
    TX packets:634713 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:410305 (400.6 KiB) TX bytes:862488772 (822.5 MiB)
    Base address:0x5020 Memory:b9960000-b9980000
  • eth3 Link encap:Ethernet HWaddr 00:15:17:C4:8B:E0
    inet6 addr: fe80::215:17ff:fec4:8be0/64 Scope:Link
    UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:2016 errors:0 dropped:0 overruns:0 frame:0
    TX packets:633328 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:167005 (163.0 KiB) TX bytes:862342651 (822.3 MiB)
    Base address:0x5000 Memory:b9920000-b9940000

再比如:我将网卡ensssf0np0、ens33f1np1绑定到bond0

在这里插入图片描述
在这里插入图片描述

参考:https://blog.csdn.net/lqnbfx/article/details/103390268

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 200. 岛屿数量

心路历程: 在没有看图论这一章之前看这道题没什么直接的思路,在看完图论之后,学着使用DFS和BFS去套用解决。第一次自己做的时候还是遇到了很多小问题。整体思路很流畅,但是需要处理的细节第一次没怎么处理好,花了很多…

[C语言]手动实现strcat strcmp strcpy strstr strtok(静态全局指针初始化方式)代码

strcat strcmp strcpy strstr strtok这些代码均存储在c语言的头文件<string.h>中&#xff0c;如果要使用的话直接调用即可&#xff0c;但是为了增加我们对代码的理解&#xff0c;我们看一下如何手动实现这些代码吧&#xff01; strcat strcat是在字符串后面增加上自己想…

Postgresql数据库入门简介

Postgresql入门 1.Postgresql数据库简介 PostgresQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进&#xff0c;PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSql可以运行在所有主流操作系统上&#xff0c;包括Linux…

WebGIS管线在线编辑器(电力、水力、燃气、热力、热能管线)

随着GIS等信息技术的发展&#xff0c;地下管线管理也从二维平面向三维立体管理迈进。传统管线信息管理系统将管线及其附属设施抽象成二维平面内的点、要素&#xff0c;并使用各类点符号、不同颜色线段进行表达。虽能一定程度上满足城市智慧运行的需要&#xff0c;但不能很直观的…

分布式锁简单实现

分布式锁 Redis分布式锁最简单的实现 想要实现分布式锁&#xff0c;必须要求 Redis 有「互斥」的能力&#xff0c;我们可以使用 SETNX 命令&#xff0c;这个命令表示SET if Not Exists&#xff0c;即如果 key 不存在&#xff0c;才会设置它的值&#xff0c;否则什么也不做。 …

mpyboard开发板使用REPL

文章目录 WindowsMacOS XLinux使用REPL提示符重启开发板 REPL是指交互式解释器&#xff08;Read Evaluate Print Loop&#xff09;&#xff0c;就是一种命令输入交互模式&#xff0c;可以使用命令行的方式与pyboard进行交互。REPL是测试代码和运行命令最简单的方式之一&#xf…

Premiere模板|200个视频标题文字动画pr字幕模板包

Premiere模板&#xff0c;13个类别200个Pr视频标题字幕文字动画模板mogrt包。 几乎适用于任何场景。粗体标题&#xff0c;标注&#xff0c;未来主义和线条标题&#xff0c;下三分之一&#xff0c;霓虹灯&#xff0c;带数字的标题&#xff0c;倒计时&#xff0c;表格&#xff0c…

【爬虫】Selenium打开新tab页截图并关闭

如果说 你曾苦过我的甜 我愿活成你的愿 愿不枉啊 愿勇往啊 这盛世每一天 山河无恙 烟火寻常 可是你如愿的眺望 孩子们啊 安睡梦乡 像你深爱的那样 &#x1f3b5; 王菲《如愿》 在自动化测试和网页抓取中&#xff0c;Selenium WebDriver 是一个强大的工具&…

【Mock|JS】Mock的get传参+获取参数信息

mockjs的get传参 前端请求 const { data } await axios("/video/childcomments", {params: {sort: 1,start: 2,count: 5,childCount: 6,commenIndex: 0,},});后端获取参数 使用正则匹配url /*** # 根据url获取query参数* param {Url} urlStr get请求获取参数 eg:…

【RH134问答题】第十三章 运行容器(下)

系列文章 第一章 提高命令行生产效率 第二章 计划将来的任务 第三章 调优系统性能 第四章 使用ACL控制对文件的访问 第五章 管理SELinux安全性 第六章 管理基本存储 第七章 管理逻辑卷 第八章 实施高级存储功能 第九章 访问网络附加存储 第十章 控制启动过程 第十一章 管理网络…

每天学习一个Linux命令之passwd

每天学习一个Linux命令之passwd 简介 passwd是Linux下用于修改用户密码的命令。它允许系统管理员或用户修改自己的密码&#xff0c;提供了很多选项以满足不同的需求。 命令选项 passwd命令有以下可用选项&#xff1a; -a&#xff1a;显示密码的更改时间和上一次更改密码的…

画图软件diawio

Draw.io | 一款强大且支持在线编辑和导出的流程图绘制神器-CSDN博客 draw.io 免费 好用的流程图绘制软件 - 知乎 (zhihu.com) draw.io (drawio.com)

复试专业前沿问题问答合集7-2——神经网络与强化学习

复试专业前沿问题问答合集7-2——神经网络与强化学习 神经网络与强化学习相关的基础知识问答 Q1: 什么是人工神经网络(Artificial Neural Networks, ANN)? A1: 人工神经网络是一种模仿生物神经网络行为的计算模型,由大量相互连接的人工神经元组成。每个神经元接收输入,…

26. 删除有序数组中的重复项 (Swift版本)

题目描述 给你一个 非严格递增排列 的数组 nums &#xff0c;请你删除重复出现的元素&#xff0c;使每个元素只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0…

回归预测 | Matlab基于SAO-BiLSTM雪融算法优化双向长短期记忆神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于SAO-BiLSTM雪融算法优化双向长短期记忆神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SAO-BiLSTM雪融算法优化双向长短期记忆神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SAO-B…

ENISA 2023年威胁态势报告:主要发现和建议

欧盟网络安全局(ENISA)最近发布了其年度2023年威胁态势报告。该报告确定了预计在未来几年塑造网络安全格局的主要威胁、主要趋势、威胁参与者和攻击技术。在本文中&#xff0c;我们将总结报告的主要发现&#xff0c;并提供可操作的建议来缓解这些威胁。 介绍 ENISA 威胁态势报告…

CVX安装新版本Mosek求解器

在使用连续凸近似&#xff08;SCA&#xff09;求解优化问题时遇到了报错 Problem status : ILL_POSED Solution status : PRIMAL_ILLPOSED_CER并且最后给出的结果为NaN。 在CVX论坛中找到一条回答 具体链接如下&#xff1a; The status is failed 因为我使用的是CVX自带的…

垃圾回收-垃圾回收中的相关概念

目录 System.gc()的理解 内存泄漏&#xff08;Memory Leak&#xff09; 内存溢出&#xff08;OOM&#xff09; Stop The World 垃圾回收的串行、并行与并发 安全点与安全区域 强、软、弱、虚引用 强、软、弱、虚引用 终结器引用 System.gc()的理解 在默认情况下&#…

嵌入式驱动学习第四周——设备树

前言 掌握设备树是 Linux 驱动开发人员必备的技能&#xff01;因为在新版本的 Linux 中&#xff0c;ARM 相关的驱动全部采用了设备树。本篇博客重点介绍一下设备树与设备树语法。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本…

Vue3的与2的简单区别

Vue2选项式api Vue3组合式API setup方法的使用&#xff0c;最后需要return setup语法糖省略了内部的export default{} 和return 内容 以及组件的注册 reactive生成响应式对象&#xff0c;只能适用于复杂对象&#xff0c;简单类型不可 ref生成响应式数据&#xff1a;复杂类型和简…