Linux双网卡链路聚合
- 格式:docx
- 大小:542.36 KB
- 文档页数:10
Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP 地址而并行链接聚合成一个逻辑链路工作。
其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。
bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。
下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。
我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。
但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。
bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。
然后把相应的数据帧传送给bond驱动程序处理。
绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片1.创建虚拟网卡编辑虚拟网络接口配置文件,指定网卡IPvi /etc/sysconfig/ network-scripts/ ifcfg-bond0[root@rhas5 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0 2.编辑虚拟网卡和物理网卡#vi ifcfg-bond0将第一行改成DEVICE=bond0# cat ifcfg-bond0DEVICE=bond0BOOTPROTO=staticIPADDR=172.31.0.13NETMASK=255.255.252.0BROADCAST=172.31.3.254ONBOOT=yesUSERCTL=noTYPE=Ethernet这里要注意,不要指定单个网卡的IP 地址、子网掩码或网卡ID。
Linux下双⽹卡绑定(bonding技术)2013-08-20 15:39:31现在很多服务器都⾃带双千兆⽹⼝,利⽤⽹卡绑定既能增加⽹络带宽,同时⼜能做相应的冗余,⽬前应⽤于很多的场景。
linux操作系统下⾃带的⽹卡绑定模式,Linux bonding驱动提供了⼀个把多个⽹络接⼝设备捆绑为单个⽹络接⼝设置来使⽤,⽤于⽹络负载均衡及⽹络冗余。
当然现在⽹卡产商也会出⼀些针对windows操作系统⽹卡管理软件来做⽹卡绑定(windows操作系统没有⽹卡绑定功能需要第三⽅⽀持)。
我们公司是做分布式⽂件系统的,很多项⽬都⽤到⽹卡绑定来提⾼性能。
在⽹络找了很多资料,也做了⼤量的测试,下⾯就⽹卡绑定谈⼀下⾃⼰的看法。
⼀、 Bonding的应⽤1、⽹络负载均衡对于bonding的⽹络负载均衡是我们在⽂件服务器中常⽤到的,⽐如把三块⽹卡,当做⼀块来⽤,解决⼀个IP地址,流量过⼤,服务器⽹络压⼒过⼤的问题。
如果在内⽹中,⽂件服务器为了管理和应⽤上的⽅便,⼤多是⽤同⼀个IP地址。
对于⼀个百M的本地⽹络来说,⽂件服务器在多个⽤户同时使⽤的情况下,⽹络压⼒是极⼤的,为了解决同⼀个IP地址,突破流量的限制,毕竟⽹线和⽹卡对数据的吞吐量是有限制的。
如果在有限的资源的情况下,实现⽹络负载均衡,最好的办法就是bonding 。
2、⽹络冗余对于服务器来说,⽹络设备的稳定也是⽐较重要的,特别是⽹卡。
⼤多通过硬件设备的冗余来提供服务器的可靠性和安全性,⽐如电源。
bonding 也能为⽹卡提供冗余的⽀持。
把⽹个⽹卡绑定到⼀个IP地址,当⼀块⽹卡发⽣物理性损坏的情况下,另⼀块⽹卡也能提供正常的服务。
⼆、 Bonding的原理什么是bonding需要从⽹卡的混杂(promisc)模式说起。
我们知道,在正常情况下,⽹卡只接收⽬的硬件地址(MAC Address)是⾃⾝Mac的以太⽹帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。
但是⽹卡也⽀持另外⼀种被称为混杂promisc的模式,可以接收⽹络上所有的帧,⽐如说tcpdump,就是运⾏在这个模式下。
Linux网卡聚合linux多网卡绑定聚合之bond模式的原理是什么Linux网卡聚合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配置文件vi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0 --物理设备名字IPADDR=192.168.1.2 --IP地址NETMASK=255.255.255.0 --子网掩码GATEWAY=192.168.1.1 --网关DNS=8.8.8.8 --DNSONBOOT=yes --随机启动NAME=bond0BOOTPROTO=noneUSERCTL=no --是否允许非root用户控制该设备2.修改被绑定的eth0和eth1的配置文件vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"USERCTL=noONBOOT=yesMASTER=bond0SLAVE=yesBOOTPROTO=noneHWADDR=00:15:17:CC:FC:35eth1的配置文件与之相同,只是device的值改为eth1即可。
一、L inux bonding研究及实现Linux Bonding本文介绍Linux(具体发行版本是CentOS5.6)下的双卡绑定的原理及实现。
Linux双网卡绑定实现是使用两块网卡虚拟成为一块网卡设备,这简单来说,就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。
这项技术在Sun和Cisco中分别被称为Trunking和Etherchannel技术,在Linux的2.4.x及其以后的内核则称为Bonding技术。
bonding的前提条件:网卡应该具备自己独立的BIOS芯片,并且各网卡芯片组型号相同。
同一台服务器上的网卡毫无疑问是是符合这个条件的。
Bonding原理bonding的原理:在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身MAC的以太网帧,过滤别的数据帧,以减轻驱动程序的负担;但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,bonding就运行在这种模式下,而且修改了驱动程序中的mac地址,将两块网卡的MAC地址改成相同,可以接收特定MAC的数据帧。
然后把相应的数据帧传送给bond驱动程序处理。
为方便理解bonding的配置及实现,顺便阐述一下Linux的网络接口及其配置文件。
在Linux 中,所有的网络通讯都发生在软件接口与物理网络设备之间。
与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于/etc/sysconfig/netwrok-scripts/ 目录下。
网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络设备的控制。
当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如何对这些接口进行配置。
接口配置文件的名称通常类似于ifcfg-<name>,其中<name> 与配置文件所控制的设备的名称相关。
在所有的网络接口中,最常用的就是以太网接口ifcfg-eth0,它是系统中第一块网卡的配置文件。
Linux系统配置双⽹卡绑定bond01、bonding简述双⽹卡配置设置虚拟为⼀个⽹卡实现⽹卡的冗余,其中⼀个⽹卡坏掉后⽹络通信仍可正常使⽤,实现⽹卡层⾯的负载均衡和⾼可⽤性。
现在⼀般的企业都会使⽤双⽹卡接⼊,这样既能添加⽹络带宽,同时⼜能做相应的冗余,可以说是好处多多。
⽽⼀般企业都会使⽤linux操作系统下⾃带的⽹卡绑定模式,当然现在⽹卡产商也会出⼀些针对windows操作系统⽹卡管理软件来做⽹卡绑定(windows操作系统没有⽹卡绑定功能需要第三⽅⽀持)。
1.1 bonding原理⽹卡⼯作在混杂(promisc)模式,接收到达⽹卡的所有数据包,tcpdump⼯作⽤的也是混杂模式(promisc),将两块⽹卡的MAC地址修改为相同接收特定MAC的数据帧,然后把相应的数据帧传送给bond驱动程序进⾏处理。
1.2 Bonding模式(bonding mode)轮询策略(round robin),mode=0,按照设备顺序依次传输数据包,提供负载均衡和容错能⼒主备策略(active-backup),mode=1,只有主⽹卡处于⼯作状态,备⽹卡处于备⽤状态,主⽹卡坏掉后备⽹卡开始⼯作,提供容错能⼒异或策略(load balancing (xor)),mode=2,根据源MAC地址和⽬的MAC地址进⾏异或计算的结果来选择传输设备,提供负载均衡和容错能⼒⼴播策略(fault-tolerance (broadcast)),mode=3,将所有数据包传输给所有接⼝通过全部设备来传输所有数据,⼀个报⽂会复制两份通过bond下的两个⽹卡分别发送出去,提供⾼容错能⼒动态链接聚合(lacp),mode=4,按照802.3ad协议的聚合⾃动配置来共享相同的传输速度,⽹卡带宽最⾼可以翻倍,链路聚合控制协议(LACP)⾃动通知交换机聚合哪些端⼝,需要交换机⽀持 802.3ad协议,提供容错能⼒输出负载均衡模式(transmit load balancing),mode=5,输出负载均衡模式,只有输出实现负载均衡,输⼊数据时则只选定其中⼀块⽹卡接收,需要⽹卡和驱动⽀持ethtool命令输⼊/输出负载均衡模式(adaptive load balancing),mode=6,输⼊和输出都实现负载均衡,需要⽹卡和驱动⽀持ethtool命令2、⽹卡配置⽂件的配置2.1 配置环境 环境:系统CentOS 6.7 + 虚拟机 VMware 12 ⾄少两块物理⽹卡(VMware上添加eth0,eth1) 2.2 需要添加或修改的配置⽂件有5个(mode=1) 这5个配置⽂件是: /etc/sysconfig/network-scripts/ifcfg-eth{0,1} /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/modprobe.d/dist.conf /etc/rc.local2.2.1 /etc/sysconfig/network-scripts/ifcfg-{eth0,eth1,bonding0}修改或添加提⽰:先备份好eth0和eth1,再修改这⼏个⽂件以下是修改好的三个⽹卡配置⽂件的参数[root@ant network-scripts]# vimdiff ifcfg-eth0 ifcfg-eth1 ifcfg-bond02.2.2 修改/etc/modprobe.d/dist.conf⽂件在此⽂件中添加以下内容:alias bond0 bonding,表⽰系统在启动时加载bonding模块,对外虚拟⽹络接⼝设备为 bond0miimon=100,表⽰系统每100ms监测⼀次链路连接状态,如果有⼀条线路不通就转⼊另⼀条线mode=1,表⽰绑定模式为1primary=eth0,系统⾸先eth0作为bond0接⼝与外界信息的传输接⼝2.2.3 修改配置⽂件/etc/rc.local在此⽂件中添加以下内容:modprobe bonding miimon=100 mode=12.2.4 重启⽹络(service network restart),并查看三个接⼝的mac地址使⽤ifconfig命令显⽰,bond0,eth1,eth2物理地址相同,提⽰三个⽹卡均通过⼀个ip主机端⼝与外界通信但是,我们可以看到,在mode=1的情况下,当前bond0采⽤eth0通信,实际的物理⽹卡地址见下图:3、验证⽹络的连通性没有丢包,⽹络连通性可。
服务器多网卡绑定与交换机链路聚合对接探讨--综合支持部王光明目前服务器的多网卡绑定技术在企业网中得到了广泛应用,常见为双网卡绑定,绑定后既能增加网络带宽,同时又能做相应的冗余,可以说是好处多多。
因为linux下的双网卡绑定无需第三方的驱动支持,所以一般企业都会使用linux操作系统下自带的网卡绑定模式。
当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(例如intel网卡驱动)。
以下我们对linux多网卡绑定的原理及交换机则需要作的配置进行探讨。
linux有七种网卡绑定模式:1.round robin2.active-backup3.load balancing (xor)4.fault-tolerance (broadcast)cp(802.3ad)6.transmit load balancing7.adaptive load balancing。
第一种:mode 0 Round robin标准文档定义:round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.特点:所有链路处于负载均衡状态,轮询方式往每条链路发送报文,基于per packet方式发送。
这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。
多张网卡采用同一个IP,同一个MAC工作。
因为是per packet方式,所以当数据到达对端可能会产生乱序。
为了尽量避免乱序,此模式只允许相同速率的网卡进行绑定。
对应交换机的配置:从实现原理上看,两条链路所使用的是同一个IP,同一个MAC,那么交换机记录表项时,必须将两个物理口当做一个口来记录,所以需要配置静态的链路聚合(port channel或port trunk)来与服务器配合。
Linux双网卡绑定实现.txt*一篇一篇的翻着以前的的签名,那时候的签名有多幼稚就有多么的幼稚。
你连让我报复的资格都没有-〞好想某天来电显示是你的号码。
好想某天你的状态是为我而写。
有些人,我们明知道是爱的,也要去放弃,因为没结局Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。
其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux 的2.4.x的内核中也采用这这种技术,被称为bonding。
bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。
下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。
我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。
但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。
bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。
然后把相应的数据帧传送给bond驱动程序处理。
说了半天理论,其实配置很简单,一共四个步骤:实验的操作系统是Redhat Linux Enterprise 3.0绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。
1.编辑虚拟网络接口配置文件,指定网卡IPvi /etc/sysconfig/ network-scripts/ ifcfg-bond0[root@redflag root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0 2 #vi ifcfg-bond0将第一行改成 DEVICE=bond0# cat ifcfg-bond0DEVICE=bond0BOOTPROTO=staticIPADDR=172.31.0.13NETMASK=255.255.252.0BROADCAST=172.31.3.254ONBOOT=yesTYPE=Ethernet这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。
在linux下如何做双网卡绑定实现冗余?一、Linux Channel Bonding目前在各个发行版本的 Linux 中,使用最普遍的内核版本应该就是 2.4.x的版本了,而Linux Channel Bonding,在 Linux 2.4 的内核中,就提供了 bonding 的驱动,可以支持把多个网络适配器集合在一起,当作一个网络适配器来使用。
在 Linux 下,网卡的高可用性是通过 MII 或者 ETHTOOL 的状态监测来实现的,所以,需要检查系统中的网络适配器是否支持 MII 或者 ETHTOOL 的连状态监测。
可以用命令 "ethtool eth0" 来检查,如果显示的 "Link detected:" 信息与实现的连接状态一致,就没有问题。
如果系统中的网络适配器不支持 MII 或者 ETHTOOL 状态监测,当连接失效时,系统就不能检测到,同时,在 bonding 驱动加载时,会记录一条不支持 MII 和 ETHTOOL 的警告信息。
下面简单介绍一下实现的基本方法:首先,我们需要打开内核对 bonding 支持。
设置内核 "make menuconfig/xconfig/config",在"Network device support"区段中选择"Bonding driver support",建议设置该驱动程序为模块,这样才能支持给驱动传递参数和设置多个bonding设备。
生成并安装新的内核和模块。
Bonding 的设置我们需要在 /etc/modules.conf 中加入两行,这样才可以在设置了 bond 设置后,系统启动的时候自动加载 bonding 的驱动程序alias bond0 bondingoptions bond0 miimon=100 mode=1当mode=1时为主备模式,mode=0时为负载均衡模式。
LINUX系统下双网卡双网关设置(含五篇)第一篇:LINUX系统下双网卡双网关设置由于电信和网通之间互联互通的问题,很多人选择双线路机房,所谓双线路机房就是拥有两条出口,一条电信一条网通。
最近在一个双线路机房测试一台服务器,打算作为论坛的数据库服务器使用,服务器操作系统为Linux。
计划配置为双IP,双域名,使得浏览者通过电信和网通两条线路都能正常访问服务器,而且各走各的,互不影响。
在配置网络的时候遇到了问题,由于Linux默认只有一个网关,在网络上查询了很久,找到一个解决方案,因此整理了一下。
感谢原文作者jac003ke。
服务器操作系统RedHat linux 9,设置两张路由表1.vi /etc/iproute2/rt_tables,增加网通和电信两个路由表251 tel电信路由表252 cnc 网通路由表2.给网卡绑定两个地址用于电信和网通两个线路ip addr add 192.168.0.2/24 dev eth0ip addr add 10.0.0.2/24 dev eth13、分别设置电信和网通的路由表电信路由表:#确保找到本地子网ip route add 192.168.0..0/24 via 192.168.0.2 dev eth0 table tel#内部回环网络ip route add 127.0.0.0/8 dev lo table tel#192.168.0.1为电信网络默认网关地址ip route add default via 192.168.0.1 dev eth0 table tel网通线路路由表:#确保找到本地子网ip route add 10.0.0.0/24 via 10.0.0.2 dev eth1 table cnc#内部回环网络ip route add 127.0.0.0/8 dev lo table cnc#10.0.0.1是网通的默认网关ip route add default via 10.0.0.1 dev eth1 table cnc4、电信和网通各有自己的路由表,制定策略,让192.168.0.2的回应数据包走电信的路由表路由,10.0.0.2的回应数据包走网通的路由表路由ip rule add from 192.168.0.1 table telip rule add from 10.0.0.1 table cnc第二篇:双网卡连接内网外网--默认网关设置问题双网卡连接内网外网--默认网关设置问题2010年06月07日星期一14:36首先你的机器需要有两块网卡,分别接到两台交换机上,internet地址:192.168.1.8,子网掩码:255.255.255.0,网关:192.168.1.1内部网地址:172.23.1.8,子网掩码:255.255.255.0,网关:172.23.1.1如果按正常的设置方法设置每块网卡的ip地址和网关,再cmd下使用 route print查看时会看到Network Destination Netmask Gateway Interface Metric0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.80.0.0.0 0.0.0.0 172.23.1.1 172.23.1.8即指向0.0.0.0的有两个网关,这样就会出现路由冲突,两个网络都不能访问。
Linux双网卡链路聚合Linux双网卡链路聚合共有两种方式,bond模式与team模式。
1.bond链路聚合(英语:Link Aggregation)将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各成员端口的负荷分担。
网卡的链路聚合就是将多块网卡连接起来,当一块网卡损坏,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,同时也可以提高网络访问速度。
网卡的链路聚合一般常用的有"bond"和"team"两种模式,"bond"模式最多可以添加两块网卡,"team"模式最多可以添加八块网卡。
bond的七种模式介绍:mode=0(balance-rr)(平衡抡循环策略)mode=1(active-backup)(主-备份策略)mode=2(balance-xor)(平衡策略)mode=3(broadcast)(广播策略)mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)mode=5(balance-tlb)(适配器传输负载均衡)mode=6(balance-alb)(适配器适应性负载均衡)bond模式介绍(支持多块网卡聚合)mode=0(balance-rr)交换机需要配置链路聚合表示负载分担,并且是轮询的方式,比如第一个包走eth0,第二个包走eth1,直到数据包发送完毕。
优点:流量提高一倍缺点:需要接入交换机做端口聚合,否则可能无法使用mode=1(active-backup)同时只有1块网卡在工作。
优点:冗余性高缺点:链路利用率低,两块网卡只有1块在工作mode=2(balance-xor)(平衡策略)交换机需要配置链路聚合表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。
(需要xmit_hash_policy,需要交换机配置port channel)特点:基于指定的传输HASH策略传输数据包。
缺省的策略是:(源MAC地址XOR 目标MAC地址) % slave数量。
其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力mode=3(broadcast)(广播策略)表示所有包从所有网络接口发出,这个不均衡,只有冗余机制,但过于浪费资源。
此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。
需要和交换机的聚合强制不协商方式配合。
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)不常用,且不同厂商的LCAP报文协商不成功表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy).标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。
特点:创建一个聚合组,它们共享同样的速率和双工设定。
根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。
需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。
不同的实现可能会有不同的适应性。
必要条件:条件1:ethtool支持获取每个slave的速率和双工设定条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation 条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式mode=5(balance-tlb)(适配器传输负载均衡)是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。
该模式要求slave接口的网络设备驱动有某种ethtool支持;而且ARP监控不可用。
特点:不需要任何特别的switch(交换机)支持的通道bonding。
在每个slave 上根据当前的负载(根据速度计算)分配外出流量。
如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
应用拓扑同mode 0,和mode 2一样,不过这种模式除了配置port channel 之外还要在port channel聚合口下开启LACP功能,成功协商后,两端可以正常通信。
否则不能使用mode=6(balance-alb)(适配器适应性负载均衡)在5的tlb基础上增加了rlb(接收负载均衡receive load balance).不需要任何switch(交换机)的支持。
接收负载均衡是通过ARP协商实现的.特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。
接收负载均衡是通过ARP协商实现的。
bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
来自服务器端的接收流量也会被均衡。
当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。
当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。
使用ARP协商进行负载均衡的一个问题是:每次广播ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。
这个问题可以通过给所有的对端发送更新(ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。
当新的slave加入到bond中时,或者某个未激活的slave重新激活时,接收流量也要重新分布。
接收的负载被顺序地分布(round robin)在bond 中最高速的slave上当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个client发起ARP应答。
下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答不会被switch(交换机)阻截。
必要条件:条件1:ethtool支持获取每个slave的速率;条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。
如果curr_active_slave出故障,它的硬件地址将会被新选出来的curr_active_slave接管其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。
而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量。
总结:mode 1、5、6不需要交换机设置mode 0、2、3、4需要交换机设置常用的模式 mode 0 1 62.teamteam模式介绍(最大支持2-8块网卡聚合)team模式的工作模式与bond模式不同,有5种,分别是"broadcast"广播容错、"roundrobin"平衡轮询、"activebackup"主备和"loadbalance"负载均衡,以及lacp。
在添加team模式时命令中的工作模式命令也不同,team模式的命令格式是’{“runner”:{“name”:“工作模式”}}’,这点需要注意。
runner 方式:【mode 0】roundrobin负载均衡 (balance-rr)特点:1)从头到尾顺序的在每一个slave接口上面发送数据包,轮询方式往每条链路发送报文,基于per packet方式发送。
服务上ping 一个相同地址:1.1.1.1 双网卡的两个网卡都有流量发出。
负载到两条链路上,说明是基于per packet方式,进行轮询发送。
2)提供负载均衡和容错的能力,当有链路出问题,会把流量切换到正常的链路上。
交换机端需要配置聚合口。
【mode 1】activebackup活动-备份(主备)策略特点:一个端口处于主状态,一个处于从状态,所有流量都在主链路上处理,从链路不会有任何流量。
当主端口down掉时,从端口接手主状态。
不需要交换机端支持。
【mode 2】loadbalance限定流量特点:该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。
既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。
如果所有流量是通过单个路由器(比如“网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。
),那该模式就不是最好的选择。
和balance-rr一样,交换机端口需要能配置为“port channel”。
这模式是通过源和目标mac做hash因子来做xor算法来选路的。
交换机端需要配置聚合口。
【mode 3】broadcast广播策略特点:这种模式一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。
此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题适用于拓扑,两个接口分别接入两台交换机,并且属于不同的vlan,当一边的网络出现故障不会影响服务器另一边接入的网络正常工作。
而且故障过程是0丢包【mode 4】lacp (implements the 802.3ad Link Aggregation ControlProtocol)特点:802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。
802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。
802.3ad 标准也要求帧按顺序(一定程度上)传递,因此通常单个连接不会看到包的乱序。
总结mode 0 3 4 需要交换机配置mode 1 不需要交换机配置常用模式 mode 0 11、网卡链路聚合配置网卡配置参数解读:MASTER=bond0 指定虚拟网口的名字(主人)SLAVE=yes 备用(从设备)con-name 指定连接名字,没有特殊要求,ipv4.methmod 指定获取IP地址的方式ifname 指定网卡设备名,既就是次配置所生效的网卡autoconnect 指定是否自动启动ipv4.addresses 指定IPv4地址gw4指定网关前提:a.检查linux环境是否支持bondingmodinfo bondingb.加载bonding模块(重启系统后就不用手动加载了)modprobe bondingc.确认模块是否加载成功lsmod | grep bonding链路聚合配置:1.查询网卡连接状态,两种状态,连接或者未连接nmcli device status2.查询网口带宽ethtool ens33 | grep -i speed3. 创建一块虚拟网卡bond0,并配置模式设置bond模式mode=1,设置链路检测时间miimon=100ms.a.不设置链路检测时间,执行如下命令,默认为0msnmcli connection add con-name bond0 ifname bond0 type bond mode 1b.如果要设置链路检测时间,执行如下命令nmcli connection add con-name bond0 ifname bond0 type bond mode 1 miimon 1004. 将接口ens38、ens39加到bond0里去网卡配置文件目录:cd /etc/sysconfig/network-scriptsa:网卡已有配置文件,执行下面命令, 将接口ens33、ens37加到bond0里去nmcli connection add type bond-slave ifname ens38 master bond0 nmcli connection add type bond-slave ifname ens39 master bond0b:网卡无配置文件,执行下面命令, 为ens224和ens256两块网卡创建配置文件并将两块网卡作为bond0网卡的slavenmcli connection add con-name bond0-port1 ifname ens224 type bond-slave master bond0nmcli connection add con-name bond0-port2 ifname ens256 type bond-slave master bond05.配置bond0口静态ip地址、网关nmcli connection modify bond0 ipv4.addresses 192.168.3.201/24 ipv4.gateway 192.168.3.16.将IP地址获取方式改为手动(manual)获取nmcli connection modify bond0 ipv4.method manual7.重载并激活bond0网卡nmcli connection reload bond0nmcli connection up bond08.验证是否成功a.查看bond0网卡的带宽ethtool bond0 | grep -i speedb.查看bond0网卡的ip地址和两块物理网卡的状态ip addc.nmcli connection showd.查看bond0的详细信息cat /proc/net/bonding/bond02、删除网卡链路聚合1.直接删除bond0网卡配置文件,以及产生的虚拟网卡配置文件。