首页 > 其他分享 >双网卡绑定-bond

双网卡绑定-bond

时间:2023-11-22 22:11:06浏览次数:31  
标签:00 bond0 绑定 ifcfg 网卡 mode ff 双网卡 bond

双网卡绑定-bond

Linux知识积累 2023-10-19 08:00 发表于山东 收录于合集 #centos71个 #双网卡绑定1个 #bond1个 #主备1个 #负载均衡1个

下述操作均在centos7.6系统下测试

1. 双网卡绑定的7种模式

一般mode=0与mode=1比较常用,mode=6负载均衡方式两块网卡都工作,不需要交换机支持,常用。

1.1 网卡负载均衡模式

网卡负载均衡模式mode=0

该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。

特点:

1.所有链路处于负载均衡状态,以轮询方式向每条链路发送报文,基于per packet方式(按数据分流)发送。

2.如在配置bond0的服务器ping baidu.com 两个网卡均会有流量发出,流量会负载到两条链路上,说明是基于per packet方式进行的轮训发送。

3.该模式的特点是增加了带宽,同时支持容错能力,当有某一链路出现问题时,会把所有流量切换到正常的链路上。

1.2 网卡容错模式

网卡容错模式mode=1

当主端口down掉时,从端口会接手主端口的状态

特点:

一个端口处于主状态,一个端口处于从状态,所有的流量都会在主链路上处理,从端口不会有任何流量。当主端口down掉时,从端口接手主状态

1.3 balance-xor需要交换机支持

需要交换机支持mode=2

通过源和目标mac做hash因子来做xor算法来选择链路

特点:

1.该模式将限定流量,以保证到达特定对端的流量总是从同一个接口是上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有 流量是通过单个路由器(比如 “网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不 是最好的选择。和网卡的负载均衡模式一样,交换机端口需要能配置为“port channel”。

2.这模式是通过源和目标mac做hash因子来做xor算法来选路的。

1.4 broadcast广播策略

广播策略mode=3

此模式需要高可靠性的网络,不允许出现任何问题。本模式提供负载均衡和容错的能力

特点:

此模式的特点是一个报文会负载两份王bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源,在所有的slave接口上传送所有的报文。本模式提供容错能力。

1.5 IEEE 802.3ad 动态链路聚合

动态链路聚合mode=4

802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。

802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。

802.3ad标准也要求帧按顺序 (一定程度上)传递,因此通常单个连接不会看到包的乱序。

802.3ad也有些缺点:标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和 除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。

此外,linux bonding的802.3ad实现通过对端来分发流量(通过MAC地址的XOR值),因此在“网关”型配置下,所有外出(Outgoing)流量将使用 同一个设备。

进入(Incoming)的流量也可能在同一个设备上终止,这依赖于对端802.3ad实现里的均衡策略。在“本地”型配置下,路两将通过 bond里的设备进行分发。

BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2" 2层模式=IP

BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2+3" 2+3层模式 =MAC+IP

BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4" 3+4层模式=IP+端口

1.6 自适应传输负载均衡模式

balance-tlb自适应传输负载均衡模式mode=5

自适应传输负载均衡:信道绑定不需要特殊的交换机支持。出口流量的分布取决于当前每个slave的负载(计算相对速度)。进口流量从当前的slave的接收。如果接收salve出错,其他的slave接管失败的slave的MAC地址继续接收。

先决条件:

每个slave的基本驱动支持Ehtool获取速率状态。

1.7 网卡虚拟化模式

网卡虚拟化mode=6

回复报文数第一个从端口1发第二个从端口2发,以此类推

特点:

此模式包含了自适应传输负载均衡模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。

接收负载均衡是通过ARP协商(地址解析协议)实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

所有端口都会收到对端的ARP请求报文,回复ARP回时,bond驱动模块会截获所发的ARP回复报文,跟进算法算到相应端口,这时会把ARP回复报文的源Mac,send源Mac都改成相应端口Mac。从抓包情况分析回复报文是第一个从端口1,第二个端口2发,以此类推。


2. bond0配置

mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。

2.1 修改两块网卡配置

# 加载bonding模块,并确认已经加载$ modprobe --first-time bonding$ lsmod | grep bondingbonding               152656  0
# 进入网卡配置目录$ cd /etc/sysconfig/network-scripts/
# 将网卡配置文件备份并删除$ mv -f ifcfg-ens34 ifcfg-ens34.bak$ mv -f ifcfg-ens38 ifcfg-ens38.bak
# 重新配置ens34与ens38网卡$ vim ifcfg-ens34BOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=ens34MASTER=bond0SLAVE=yes
$ vim ifcfg-ens38BOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=ens38MASTER=bond0SLAVE=yes

2.2 配置bond0网卡

$ vim ifcfg-bond0TYPE=UnKnownBOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=bond0IPADDR=192.168.50.100NETMASK=255.255.255.0GATEWAY=192.168.50.2DNS1=8.8.8.8DNS2=223.5.5.5BONDING_OPTS="miimon=80 mode=0"

2.3 bond配置文件

$ vim /etc/modprobe.d/bond.confalias bond0 bondingoptions bond0 miimon=100 mode=0

2.4 开机自动加载bond

$ vim /etc/rc.localmodprobe bonding miimon=100 mode=0

2.5 验证

$ systemctl restart network# 查看是否配置成功$ ip a3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000    link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000    link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000    link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff    inet 192.168.50.101/24 brd 192.168.50.255 scope global bond0       valid_lft forever preferred_lft forever    inet6 fe80::20c:29ff:fe8a:3520/64 scope link        valid_lft forever preferred_lft forever

# 模拟某块网卡down# 通过抓包来获取ping包来观察经过网卡的流量# 一个窗口ping网关地址$ ping 192.168.50.2
# 一个终端窗口抓取ens38去往网关的包# 注意观察mac地址$ tcpdump -i ens38 host 192.168.50.2tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens38, link-type EN10MB (Ethernet), capture size 262144 bytes15:44:55.723646 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 1, length 6415:44:55.723674 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 1, length 6415:44:56.726182 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 2, length 6415:44:56.726199 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 2, length 6415:44:57.727318 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 3, length 6415:44:57.727337 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 3, length 6415:44:58.728931 IP localhost.localdomain > gateway: ICMP echo request, id 23653, seq 4, length 6415:44:58.728945 IP gateway > localhost.localdomain: ICMP echo reply, id 23653, seq 4, length 64# 另一块网卡同样可以抓到
# 在虚拟机中断开ens34网卡的连接# ping 稍断即回复通信# 注意观察mac地址3: ens34: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond0 state DOWN group default qlen 1000 link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000 link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff inet 192.168.50.101/24 brd 192.168.50.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe8a:3520/64 scope link valid_lft forever preferred_lft forever

3 . bond1配置

mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。

3.1 修改两块网卡配置

# 进入网卡配置目录$ cd /etc/sysconfig/network-scripts/
# 将网卡配置文件备份并删除$ mv -f ifcfg-ens34 ifcfg-ens34.bak$ mv -f ifcfg-ens38 ifcfg-ens38.bak
# 重新配置ens34与ens38网卡$ vim ifcfg-ens34BOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=ens34MASTER=bond1SLAVE=yes
$ vim ifcfg-ens38BOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=ens38MASTER=bond1SLAVE=yes

3.2 配置bond0网卡

$ vim ifcfg-bond1TYPE=UnKnownBOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=bond1IPADDR=192.168.50.101NETMASK=255.255.255.0GATEWAY=192.168.50.2DNS1=8.8.8.8DNS2=223.5.5.5BONDING_OPTS="miimon=80 mode=1"

3.3 bond配置文件

$ vim /etc/modprobe.d/bond1.confalias bond1 bondingoptions bond1 miimon=100 mode=1

3.4 开机自动加载bond

$ vim /etc/rc.localmodprobe bonding miimon=100 mode=1

3.5 验证

# 重启网卡$ systemctl restart network# 注意观察mac地址$ ip a3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000    link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000    link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000    link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff    inet 192.168.50.101/24 brd 192.168.50.255 scope global bond0       valid_lft forever preferred_lft forever    inet6 fe80::20c:29ff:fe8a:3520/64 scope link        valid_lft forever preferred_lft forever
# 查查看bond1状态cat /proc/net/bonding/bond1Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0
Slave Interface: ens34MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:8a:35:20Slave queue ID: 0
Slave Interface: ens38MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:8a:35:2aSlave queue ID: 0

4. bond6配置

4.1 修改两块网卡配置

# 进入网卡配置目录$ cd /etc/sysconfig/network-scripts/
# 将网卡配置文件备份并删除$ mv -f ifcfg-ens34 ifcfg-ens34.bak$ mv -f ifcfg-ens38 ifcfg-ens38.bak
# 重新配置ens34与ens38网卡$ vim ifcfg-ens34BOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=ens34MASTER=bond6SLAVE=yes
$ vim ifcfg-ens38BOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=ens38MASTER=bond6SLAVE=yes

4.2 配置bond6网卡

$ vim ifcfg-bond6TYPE=UnKnownBOOTPROTO=noneONBOOT=yesUSERCTL=noDEVICE=bond6IPADDR=192.168.50.101NETMASK=255.255.255.0GATEWAY=192.168.50.2DNS1=8.8.8.8DNS2=223.5.5.5BONDING_OPTS="miimon=80 mode=6"

4.3 bond配置文件

$ vim /etc/modprobe.d/bond6.confalias bond6 bondingoptions bond6 miimon=100 mode=6

4.4 开机自动加载bond

$ vim /etc/rc.localmodprobe bonding miimon=100 mode=6

4.5 验证

# 重启网卡$ systemctl restart network# 注意观察mac地址$ ip a3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP group default qlen 1000    link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff4: ens38: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond6 state UP group default qlen 1000    link/ether 00:0c:29:8a:35:2a brd ff:ff:ff:ff:ff:ff6: bond6: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000    link/ether 00:0c:29:8a:35:20 brd ff:ff:ff:ff:ff:ff    inet 192.168.50.101/24 brd 192.168.50.255 scope global bond6       valid_lft forever preferred_lft forever    inet6 fe80::20c:29ff:fe8a:3520/64 scope link        valid_lft forever preferred_lft forever
# 查查看bond6状态cat /proc/net/bonding/bond6Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: adaptive load balancingPrimary Slave: NoneCurrently Active Slave: ens34MII Status: upMII Polling Interval (ms): 80Up Delay (ms): 0Down Delay (ms): 0
Slave Interface: ens34MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:8a:35:20Slave queue ID: 0
Slave Interface: ens38MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:8a:35:2aSlave queue ID: 0

 

  阅读 1309 Linux知识积累 ​ 喜欢此内容的人还喜欢   uboot学习过程     Linux知识积累 不看的原因   XXL-JOB 深度利用     安全绘景 不看的原因   细聊Go高级并发用法-sync.Map     我看过的号 程序员技术成长之路 不看的原因   写留言              

人划线

 

标签:00,bond0,绑定,ifcfg,网卡,mode,ff,双网卡,bond
From: https://www.cnblogs.com/cheyunhua/p/17850436.html

相关文章

  • maven插件默认绑定的phase是哪个?
    如果在pom.xml中没有指定插件的phase,那么它默认在哪个phase执行呢<plugin><groupId>org.codehaus.modello</groupId><artifactId>modello-maven-plugin</artifactId><version>1.8.1</version><executions><executi......
  • wpf 任意控件绑定Command
    <BorderBackground="White" BorderBrush="Gray" BorderThickness="1" CornerRadius="2"> <Border.InputBindings> <MouseBindingCommand="{BindingDataContext.BorderCommand,RelativeSource={RelativeS......
  • 阿里云 ecs绑定辅助网卡,一个ECS服务器绑定多个IP ,用于centos,其他系统可以参考
    1、进入实例详情,选择网络与安全->弹性网卡  2、创建网卡3、然后创建好之后,绑定实例,我图1的是已经绑定好了的  4、进入弹性公网IP:https://vpc.console.aliyun.com/eip/ap-southeast-1/eips 5、购买ip,建议选择按量付费,没有带宽限制,购买完成后绑定刚刚创建的辅助......
  • cocos如何绑定参数到编辑器
    很多cocos creator同学不知道如何绑定组件属性到编辑器上,今天我们来教大家如何绑定  1:基本数据属性绑定到编辑器   这个非常简单,模板是属性名字: 默认的值;Is_debug:false,speed:100,2:系统组件类型与节点绑定到编辑器属性名字: {   type:组件类型(cc......
  • SpringMVC参数绑定
    目录参数的绑定绑定的机制支持的数据类型使用要求使用示例基本类型和String类型作为参数POJO类型作为参数POJO类中包含集合类型参数请求参数乱码问题特殊情况自定义类型转换器使用场景使用ServletAPI对象作为方法参数参数的绑定绑定的机制我们都知道,表单中请求参数都是基于......
  • js给多个具有相同class的元素绑定同一个事件或者样式
    <buttonclass="btn1">month1</button><buttonclass="btn1">month2</button><buttonclass="btn1">month3</button>若要给上面3个都具有btn1的class的按钮,添加同样的点击事件,则如下操作:$(".btn1").each(function(){......
  • 数据双向绑定的原理
    一、双向绑定的逻辑介绍:    双向绑定是一步步实现的,现在我们来考虑,在vue中,双向绑定的事情逻辑是什么。首先,要想实现数据双向绑定就要先实现单向绑定,也就是说,就要先实现vue里的data对象中的数据,能够替代写在template模板里的插值表达式中变量名,实现插值表达式获取数据对象......
  • new绑定 ---- new一个对象所作的四件事情 新建一个对象 把this的指向指向这个对象
    下面对this对象的理解,哪些是正确的Athis总是指向函数的直接调用者(而非间接调用者);B如果有new关键字,this指向new出来的那个对象;C在事件中,this总是指向触发这个事件的对象;Dthis是函数运行时自动生成的一个内部对象,只能在函数内部使用;正确答案:B在事件中,this指向触发这个事......
  • 箭头函数不会与this进行绑定,其this指向取决于该箭头函数同级作用域的this指向,又由于对
    执行下列选项的程序,输出结果不是Window对象的是()AsetTimeout(function(){console.log(this);},1000);BfunctionStar(){console.log(this);}newStar();Cvaro={sayHi:()=>{console.log(this);}}o.sayHi();D(function(){console.log(this);}......
  • 什么是绑定域名到目录
    绑定域名到目录,又称为子网站。简单说就是为子目录绑定域名,直接通过该域名访问,使一个空间存放几个网站。不是指空间允许绑定的域名数。1、例一:如http://www.ninedns.cn/,该站根目录下有mybbs2子目录,在这上面绑定了bbs.ninedns.cn因此就可以直接通过http://bbs.ninedns.cn/访问了。2......