博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]Linux Bond的原理及其不足
阅读量:5748 次
发布时间:2019-06-18

本文共 1171 字,大约阅读时间需要 3 分钟。

本文转自 支持原创、尊重原创,分享知识!

 

在企业及电信Linux服务器环境上,网络配置都会使用Bonding技术做网口硬件层面的冗余,防止单个网口应用的单点故障。

Linux Bond的配置很简单,当下网络上也有很多资料,这里我们就不介绍了。我们在这篇文章中介绍Linux Bond的原理及其不足。

原理

Linux Bond有两种典型的模式:主备,负载均衡。无论哪种模式,Bonding技术都是通过更改Linux的网口驱动,来实现网口故障后平滑切换的。

主备模式:

负载均衡模式:

1. 我们先看主备模式

主备模式下,Linux Bonding实现会将Bond的两个slave网口的MAC地址改为Bond的MAC地址,而Bond的MAC地址是Bond创建启动后,主用slave网口的MAC地址。

当主用网口故障后,Bond会切换到备用网口,切换过程中,上层的应用是无感知不受影响的,因为Bond在驱动层,会接管上层应用的数据包,缓存起来等备用网卡起来后再通过备用网卡发送出去。当然,前提是切换时间很短,否则缓冲区是会溢出的,溢出后就开始丢包了。具体的时间值本人还没有验证过。

 

2. 再看负载均衡模式

负载均衡模式下,Linux Bonding实现可以保持两个slave网口的MAC地址不变,Bond的MAC地址是其中一个网卡的,Bond MAC地址的选择是根据Bond自己实现的一个算法来的,具体如何选择还没有研究。

当然,这里要重点说明的是,Bond负载均衡模式下,要求交换机做配置,是的两个slave网口能够互通,否则的话,丢包会很厉害,基本没法使用。这个是因为Bond的负载均衡模式算法,会将包在两个网口之间传输以达到负载均衡。

由于负载均衡模式下,两个slave有独立的MAC地址,你可能会想,我能否给slave网口再绑定一个IP地址,用作其他用途。
这种方法是实现不了的。
负载均衡模式下,两个slave网口在操作性系统上看到是两个独立的MAC地址,但是当你指定一个MAC地址发送包的时候,实际上发生的现象,不是你期望的。你指定MAC地址1发包,这个数据包可能到MAC地址2出去了。
这个是因为Bond对这两个网口做了手脚,改了网口的驱动。看起来他们有独立的MAC地址,实际上他们的MAC地址不是独立的,只能给Bond使用。

不足

从上面的介绍中,很容易看到Bond的一点不足:
Bond更改了网口的驱动,其网口不能被用作其他用途。

Bond还有一点不足就是其故障监测上面:

Bond默认只能做网口MII监测不能做链路监测(链路是指本机到网关的路径),也就是只能监测网口是否连接(网口是否亮);当然Bond也支持ARP协议的链路监测,但是ARP链路监测在一些场景下,太消耗资源,得不偿失。我们曾经在实际应用中使用过,效果确实不好。

转载地址:http://rchzx.baihongyu.com/

你可能感兴趣的文章
创建分区表过程
查看>>
iOS UI基础-1.0加法计算器
查看>>
java在url传输前更改字符编码
查看>>
修复ecshop商品重量BUG小数位增至五位
查看>>
maven常见问题
查看>>
Mac工具
查看>>
django复习笔记2:models
查看>>
安卓开发之玩美解决ADT和SDK不一致问题
查看>>
LR杂记 - loadrunner各项指标结果分析
查看>>
hdu 5452 Minimum Cut 树形dp
查看>>
使用 SharpSvn 执行 svn 操作的Demo
查看>>
在mysql数据库中制作千万级测试表
查看>>
js函数大全
查看>>
hdu 4831 Scenic Popularity(模拟)
查看>>
刷题笔记
查看>>
MongoDB索引创建(5)
查看>>
sql点滴39—解决数据库日志文件过大的问题
查看>>
ZH奶酪:基于ionic.io平台的ionic消息推送功能实现
查看>>
第7篇 ORACLE EBS DEMO虚拟机环境的安装
查看>>
50个提高PHP编程效率的方法
查看>>