linux下网卡bonding配置

简介:

一、bonding技术

bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势。
bonding技术是linux系统内核层面实现的,它是一个内核模块(驱动)。使用它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, 一般来说都支持.
# modinfo bonding
bonding的七种工作模式: 
bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有各自的优缺点.
balance-rr (mode=0) 两块网卡都工作,但是与网卡相连的交换机端口必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.
active-backup (mode=1) 表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。 miimon是用来进行链路监测的。比如:miimon=80,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。
mode=2 表示 XOR policy 为平衡策略。此模式提供负载平衡和容错能力 
mode=3 表示 broadcast 为广播策略。此模式提供了容错能力 
mode=4 表示 IEEE 802.3ad Dynamic link aggregation 为 IEEE 802.3ad 为 动态链接聚合。该策略可以通过 xmit_hash_policy 选项从缺省的 XOR 策略改变到其他策略。 
mode=5 表示 Adaptive transmit load balancing 为适配器传输负载均衡。该 模式的必要条件:ethtool 支持获取每个 slave 的速率 
balance-alb (mode=6) 有高可用 ( 容错 )和负载均衡的功能,不需要交换机配置 (流量分发到每个接口不是特别均衡),做bonding的这两块网卡是使用不同的MAC地址
二、Centos7配置bonding

环境:
系统: Centos7
网卡: em1、em2
bond0:172.16.10.183
负载模式: mode6(adaptive load balancing)
linux下网卡bonding配置
服务器上两张物理网卡em1和em2, 通过绑定成一个逻辑网卡bond0,bonding模式选择mode6
注意: ip地址配置在bond0上, 物理网卡不需要配置ip地址。
1、关闭和停止NetworkManager服务

systemctl stop NetworkManager.service     # 停止NetworkManager服务
systemctl disable NetworkManager.service  # 禁止开机启动NetworkManager服务

ps: 一定要关闭,不关会对做bonding有干扰
2、加载bonding模块
modprobe --first-time bonding
没有提示说明加载成功, 如果出现modprobe: ERROR: could not insert 'bonding': Module already in kernel说明你已经加载了这个模块, 就不用管了
你也可以使用lsmod | grep bonding查看模块是否被加载

lsmod | grep bonding
bonding               136705  0 

3、创建基于bond0接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
修改成如下,根据你的情况:

DEVICE=bond0
TYPE=Bond
IPADDR=172.16.10.183
NETMASK=255.255.255.0
GATEWAY=172.16.10.1
DNS1=114.114.114.114
USERCTL=no
BOOTPROTO=none
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=6 miimon=100"

上面的BONDING_OPTS="mode=6 miimon=100" 表示这里配置的工作模式是mode6(adaptive load balancing), miimon表示监视网络链接的频度 (毫秒), 我们设置的是100毫秒, 根据你的需求也可以指定mode成其它的负载模式。
4、修改em1接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-em1
修改成如下:

DEVICE=em1
USERCTL=no
ONBOOT=yes
MASTER=bond0                  # 需要和上面的ifcfg-bond0配置文件中的DEVICE的值对应
SLAVE=yes
BOOTPROTO=none

5、修改em2接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-em2
修改成如下:

DEVICE=em2
USERCTL=no
ONBOOT=yes
MASTER=bond0                 # 需要和上的ifcfg-bond0配置文件中的DEVICE的值对应
SLAVE=yes
BOOTPROTO=none

6、测试
重启网络服务
systemctl restart network.service

# cat /proc/net/bonding/bond0
Bonding Mode: adaptive load balancing   // 绑定模式: 当前是ald模式(mode 6), 也就是高可用和负载均衡模式
Primary Slave: None
Currently Active Slave: em1
MII Status: up                           // 接口状态: up(MII是Media Independent Interface简称, 接口的意思)
MII Polling Interval (ms): 100           // 接口轮询的时间隔(这里是100ms)
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: em1                     // 备接口: em0
MII Status: up                           // 接口状态: up(MII是Media Independent Interface简称, 接口的意思)
Speed: 1000 Mbps                         // 端口的速率是1000 Mpbs
Duplex: full                             // 全双工
Link Failure Count: 0                    // 链接失败次数: 0 
Permanent HW addr: 84:2b:2b:6a:76:d4      // 永久的MAC地址
Slave queue ID: 0
Slave Interface: em1                     // 备接口: em1
MII Status: up                           // 接口状态: up(MII是Media Independent Interface简称, 接口的意思)
Speed: 1000 Mbps
Duplex: full                             // 全双工
Link Failure Count: 0                    // 链接失败次数: 0
Permanent HW addr: 84:2b:2b:6a:76:d5     // 永久的MAC地址
Slave queue ID: 0

三、Centos6配置bonding

Centos6配置bonding和上面的Cetons7做bonding基本一样,只是配置有些不同. 
系统: Centos6
网卡: em1、em2
bond0:172.16.10.183
负载模式: mode1(adaptive load balancing) # 这里的负载模式为1,也就是主备模式.
1、关闭和停止NetworkManager服务

service  NetworkManager stop
chkconfig NetworkManager off

ps: 如果有装的话关闭它,如果报错说明没有装这个,那就不用管
2、加载bonding模块
modprobe --first-time bonding
3、创建基于bond0接口的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
修改如下 (根据你的需要):

DEVICE=bond0
TYPE=Bond
BOOTPROTO=none
ONBOOT=yes
IPADDR=172.16.10.183
NETMASK=255.255.255.0
GATEWAY=172.16.10.1
DNS1=114.114.114.114
USERCTL=no
BONDING_OPTS="mode=6 miimon=100"

4、加载bond0接口到内核
vi /etc/modprobe.d/bonding.conf
修改成如下:
alias bond0 bonding
5、编辑em1、em2的接口文件
vim /etc/sysconfig/network-scripts/ifcfg-em1
修改成如下:

DEVICE=em1
MASTER=bond0
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none

vim /etc/sysconfig/network-scripts/ifcfg-em2
修改成如下:

DEVICE=em2
MASTER=bond0
SLAVE=yes
USERCTL=no
ONBOOT=yes
BOOTPROTO=none

6、加载模块、重启网络与测试
modprobe bonding
service network restart
7、查看bondo接口的状态
cat /proc/net/bonding/bond0

Bonding Mode: fault-tolerance (active-backup)  # bond0接口当前的负载模式是主备模式
Primary Slave: None
Currently Active Slave: em2
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: 2
Permanent HW addr: 84:2b:2b:6a:76:d4
Slave queue ID: 0

Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 84:2b:2b:6a:76:d5

Slave queue ID: 0
















本文转自lq201151CTO博客,原文链接:http://blog.51cto.com/liuqun/2044047 ,如需转载请自行联系原作者




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
4月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
2月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
345 11
|
9月前
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
672 3
|
5月前
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
305 0
|
7月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
494 11
|
6月前
|
Linux 网络安全 开发工具
在Linux下配置gitee与Github的远程仓库
注意,git push后,是输入你的账号与密码。这个步骤可以通过特殊设置省去,但是一开始还是不要太省。
367 0
|
8月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
383 10
|
9月前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
1526 21
|
8月前
|
人工智能 Kubernetes Ubuntu
linux配置IP
linux配置IP
912 1
|
9月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。