linux多网卡绑定聚合——bond技术

简介:

  将多个Linux网络端口绑定为一个,可以提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据,如果使用单个的千兆网口将会是很严重的瓶颈。其它的应用,比如ftp服务器,高负载的下载网站, 都有类似的问题。因此使用Linux teaming或bond来绑定多个网卡作为一个逻辑网口,配置单个的IP地址,会大幅提升服务器的网络吞吐(I/O)。  

  Linux的多网卡绑定功能使用的是内核中的"bonding"模块,关于此模块可以参考Linux Ethernet Bonding Driver文档, 但是目前发布各个Linux版本内核均已包含了此模块,大多数情况下不需要重新编译内核。 Linux 的 bonding 驱动提供了绑定/集成(bond)多个网卡为一个虚拟逻辑网口的功能。并请注意绑定的网口(bonded)有多种工作模式; 一般来说,分为热后备(hot standby) 和负载均衡(load balancing). 在Redhat/Fedora和其它类Redhat Linux中是比较容易配置的。

1.创建bond0配置文件(注意大小写)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi  /etc/sysconfig/network-scripts/ifcfg-bond0  
DEVICE=bond0             --物理设备名字 
NAME=bond0
TYPE=Bond
BONDING_MASTER= yes
IPADDR=192.168.1.1          --IP地址 
NETMASK=255.255.255.0         --子网掩码 
NETWORK=192.168.1.0          --所属子网 
BROADCAST=192.168.1.255          --广播地址 
GATEWAY=192.168.1.254          --网关 
ONBOOT= yes                 --随机启动 
BOOTPROTO=none  
USERCTL=no                 --是否允许非root用户控制该设备
BONDING_OPTS= "mode=1 miimon=100"

2.修改被绑定的eth0和eth1的配置文件(注意大小写) 

1
2
3
4
5
6
7
8
9
vi  /etc/sysconfig/network-scripts/ifcfg-eth0         #针对不同的服务器,可以为em1或ens6f0
TYPE=Ethernet  
DEVICE=eth0                                           
BOOTPROTO=none   
ONBOOT= yes 
USERCTL=no 
MASTER=bond0    
SLAVE= yes      
#HWADDR=00:15:17:CC:FC:35

eth1的配置文件与之相同,只是device的值改为eth1即可。

3.装在bond模块驱动

编辑/etc/modprobe.conf或者/etc/modules.conf文件,加入如下内容,使系统启动时加载bonding模块驱动 (如果没有文件,则手动创建) 

1
2
3
vi  /etc/modules .conf
alias  bond0 bonding  
options bond0 miimon=100 mode=1

4.验证是否成功做到了冗余的效果:

ifdown eth0或者ifdown eth1,然后ping 192.168.1.1


  说明: 

  1).miimon=100 用来进行链路监测的。即每100ms监测一次链路状态,如果有一条线路不通就转入另一条线路。bonding只监测主机与交换机之间链路。如  果交换机出去的链路出问题而本身没有问题,那么bonding认为链路没有问题而继续使用。 

  2).mode=1 表示提供冗余功能。除此之外还可以为0、2、3,共四种模式。0表示负载均衡  

  mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。需根据交换机可提供的工作模式选择。  

  mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。  

  mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。

 引用 

  a、bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认   为链路没有问题而继续使用。 

  b、设置的模式要与交换机设置的模式一致。

4.在/etc/rc.d/rc.local文件中加入如下语句,使得系统启动自动运行  

ifenslave bond0 eth0 eth1 

route add -net 192.168.1.254 netmask 255.255.255.0  bond0    #如有需要才加该路由  

5.检测、验证配置 

首先执行命令装载bonding模块:modprobe bonding 

重启网络服务,并确认bond0正确启动:service network restart 

确认设备已经正确加载:less /proc/net/bonding/bond0 

列出所有网口:ifconfig  

至此,bond 的设置就基本结束了



本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/2071140

相关文章
|
14天前
|
机器学习/深度学习 自然语言处理 Linux
【专栏】Linux 中的机器学习:Whisper适用于语音助手、翻译等领域,随着技术发展,其应用前景广阔
【4月更文挑战第28天】本文探讨了在Linux环境下,先进自动语音识别系统Whisper的运用与实现高效ASR。Whisper基于PyTorch,支持多语言识别,具有高准确性和实时性。文中介绍了安装配置Whisper的步骤,包括安装依赖、下载代码、配置环境变量及编译安装。通过数据准备、模型训练和识别,可实现语音识别功能。Whisper适用于语音助手、翻译等领域,随着技术发展,其应用前景广阔。
|
15天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
12天前
|
前端开发 Linux iOS开发
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
【4月更文挑战第30天】Flutter扩展至桌面应用开发,允许开发者用同一代码库构建Windows、macOS和Linux应用,提高效率并保持平台一致性。创建桌面应用需指定目标平台,如`flutter create -t windows my_desktop_app`。开发中注意UI适配、性能优化、系统交互及测试部署。UI适配利用布局组件和`MediaQuery`,性能优化借助`PerformanceLogging`、`Isolate`和`compute`。
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
|
13天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
|
1月前
|
Linux 开发者
Linux技术基础(6)——文件管理
这是一个关于文件管理的实验指南,涵盖了`cat`, `cmp`, `diff`, `file`和`find`五个Linux命令。`cat`用于查看和操作文件内容,例如打印、连接和清空文件。`cmp`比较两个文件的差异,`diff`同样比较文件差异但提供更详细输出。`file`识别文件类型,而`find`则在指定目录中搜索文件。实验可在阿里云开发者平台的给定链接进行。
|
1月前
|
安全 Linux Shell
Linux技术基础(5)——文件与权限
ls命令用于显示目录内容,使用-a选项可以展示隐藏文件。pwd命令给出当前工作目录的路径。cd命令用于切换目录,其中.代表当前目录,而..代表父目录。touch命令用于创建或更新文件的时间戳,同时也可以用来新建文件。mkdir命令用于创建目录,添加-p选项可递归创建嵌套目录。rm命令删除文件或目录,使用-rf选项可强制删除。cp命令复制文件或目录,而mv命令则用于移动或重命名文件。rename命令批量重命名文件。 ls -l命令以详细列表形式显示文件权限,第一列信息表示文件类型和访问权限。chmod命令用于修改文件权限,例如u+x表示为文件所有者添加执行权限。chown和chgrp命令分别用
|
2月前
|
存储 Linux Shell
Linux技术基础(4)——磁盘管理
在阿里云开发者平台的实验中,了解Linux磁盘管理涉及`df`、`du`和`fdisk`命令。`df`用于查看文件系统的磁盘空间,如`df`显示总体使用情况,`df -i`查看inode使用,`df -h`以人类可读的单位显示。`du`则用于查看文件和目录的磁盘占用,例如`du -a`列出所有文件和目录的大小,`du -sh`以人类可读单位显示当前目录总大小。`fdisk`用于磁盘分区,`fdisk -l`列出分区信息,通过交互模式对磁盘进行分区操作。
|
1天前
|
安全 网络协议 Linux
linux必学的60个命令
Linux是一个功能强大的操作系统,提供了许多常用的命令行工具,用于管理文件、目录、进程、网络和系统配置等。以下是Linux必学的60个命令的概览,但请注意,这里可能无法列出所有命令的完整语法和选项,仅作为参考
|
1天前
|
监控 Linux 数据处理
|
1天前
|
编解码 Ubuntu Linux