Linux Bonding配置详解

   一、什么是bonding

  多块网卡绑在一起,作为一个网卡用,实现负载均衡和提高带宽,linux双网卡绑定一个IP地址,实质工作就是使用两块网卡虚拟为一块,使用同一个IP地址,是我们能够得到更好的更快的服务。

  二、配置过程

  配置很简单,一共四个步骤:

  实验的操作系统是Redhat Linux Enterprise 3.0

  绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。

  1.编辑虚拟网络接口配置文件,指定网卡IP

  代码如下:

  vi /etc/sysconfig/ network-scripts/ ifcfg-bond0

< p>[root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0

 

  2 #vi ifcfg-bond0

  将第一行改成 DEVICE=bond0

  代码如下:

  # cat ifcfg-bond0

< p>DEVICE=bond0

 

< p>BOOTPROTO=static

 

< p>IPADDR=172.31.0.13

 

< p>NETMASK=255.255.252.0

 

< p>BROADCAST=172.31.3.254

 

< p>ONBOOT=yes

 

< p>TYPE=Ethernet

 

  这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。

  代码如下:

  [root@rhas-13 network-scripts]# cat ifcfg-eth0

< p>DEVICE=eth0

 

< p>ONBOOT=yes

 

< p>BOOTPROTO=dhcp

 

< p>[root@rhas-13 network-scripts]# cat ifcfg-eth1

 

< p>DEVICE=eth0

 

< p>ONBOOT=yes

 

< p>BOOTPROTO=dhcp

 

  3 # vi /etc/modules.conf

  编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0

  加入下列两行

  代码如下:

  alias bond0 bonding

< p>options bond0 miimon=100 mode=1

 

  说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。

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

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

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

  4 # vi /etc/rc.d/rc.local

  加入两行

  代码如下:

  ifenslave bond0 eth0 eth1

< p>route add -net 172.31.3.254 netmask 255.255.255.0 bond0

 

  到这时已经配置完毕重新启动机器.

  重启会看见以下信息就表示配置成功了

  ................

  Bringing up interface bond0 OK

  Bringing up interface eth0 OK

  Bringing up interface eth1 OK

  Bonding的工作模式

  Linux Bonding默认使用轮转策略。

  基本类别是主备模式与负载均衡两种模式:

  balance-rr (mode=0)

  轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力。

  active-backup(mode=1)

  活动-备份(主备)策略:在绑定中,只有一个slave被激活。当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见。在bongding的2.6.2及其以后的版本中,主备模式下发生一次故障迁移时,bonding将在新激活的slave上会送一个或者多个gratuitous ARP.bonding的主salve接口上以及配置在接口上的所有VLAN接口都会发送gratuitous ARP,只要这些接口上配置了至少一个IP地址。VLAN接口上发送的的gratuitous ARP将会附上适当的VLAN id。本模式提供容错能力,primary option,documented below会影响本模式的行为。

  balance-xor(mode=2)

  XOR策略:基于所选择的传送hash策略。

  本模式提供负载均衡和容错的能力。

  broadcast(mode=3)

  广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力。

  802.3ad(mode=4)

  IEEE 802.3ad 动态链路聚合。创建共享相同的速率和双工模式的聚合组。能根据802.3ad规范利用所有的slave来建立聚合链路。Salve的出站选择取决于传输的hash策略,默认策略是简单的XOR策略,而hash策略则可以通xmit_hash_policy选项加以改变。需要注意的是:不是所有的传输策略都与802.3ad兼容,尤其是802.3ad标准的43.2.4章节中关于 packet mis-ordering要求的地方。不同个体的实现往往出现很大的不兼容。

  先决条件:

  1. 每个slave的基本驱动支持Ehtool获取速率和双工状态。

  2.交换机支持IEEE 802.3ad动态链路聚合。大多数的交换机都需要使用某种配置方式来启用802.3ad模式。

  balance-tlb(mode=5)

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

  先决条件:

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

  balance-alb(mode=6)

  自适应负载均衡:包括balance-tlb(模式5)以及用于IPV4流量的接收负载均衡,并且不需要特殊的交换机支持。接收负载均衡通过ARP协商实现。bonding的驱动拦截本机发出的ARP Replies(ARP回应报文),并且用bond的某一个slave的硬件地址改写ARP报文的源地址,使得本服务器对不同的设备使用不同的硬件地址。本服务器建立的连接的接收流量也是负载均衡的。当本机发送ARP Request时,bonding驱动通过ARP报文复制并保存节点的IP信息。当从其他节点接收到ARP Reply,bonding驱动获取节点的硬件地址并且会回应一个包含绑定好的slave的硬件地址的ARP Reply给发送的节点。用ARP协商的负载均衡的有一个问题是每次用bond的硬件地址广播ARP报文,那么其他节点发送的数据全部集中在一个slave上,处理ARP更新给其他所有节点的时候,每个节点会重新学习硬件地址,导致流量重新分配。当新加入一个slave或者一个非激活的slave重新激活的时候也会导致接收流量重新分配。接收流量负载是串行(轮转)的分配在bond的一组速率最高的slave上。

  当一个链路重连或者一个新的slave加入的时候,bond会重新初始化ARP Replies给所有的客户端。updelay参数的值必须等于或者大于交换机的forwarding delay,以免ARP Replies被交换机阻塞。

  先决条件:

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

  2. 基本驱动支持当设备打开时重新设置硬件地址。也要求每一个slave具有唯一的硬件地址。如果curr_active_slave失败,它的硬件地址被新选上的curr_active_slave硬件地址来替换

时间: 2025-01-02 21:39:05

Linux Bonding配置详解的相关文章

Linux NTP配置详解 (Network Time Protocol)

Network Time Protocol (NTP) 也是RHCE新增的考试要求. 学习的时候也顺便复习了一下如何设置Linux的时间,现在拿出来和大家分享 设置NTP服务器不难但是NTP本身是一个很复杂的协议. 这里只是简要地介绍一下实践方法 和上次一样,下面的实验都在RHEL5上运行   1. 时间和时区 如果有人问你说现在几点? 你看了看表回答他说晚上8点了. 这样回答看上去没有什么问题,但是如果问你的这个人在欧洲的话那么你的回答就会让他很疑惑,因为他那里还太阳当空呢. 这里就有产生了一

zabbix监控Linux主机配置详解

配置客户端 安装agent Linux.UX上的agent是编译好了的,不用安装 #useradd zabbix #cd /usr/local/zabbix #tar zxvf zabbix_agents_1.8.linux2_6.i386.tar.gz 取一份server上的zabbix_agnetd.conf到本地,然后按说明修改,我们只需修改如下参数: Hostname=本机名 Server=Zabbix Server IP LogFile=本机agentd日志保存文件 修改完成后,运行a

linux网卡配置详解

  以下各值常见于所有的基本配置文件中: * DEVICE=name,这里name是物理设备的名字(动态分配的PPP设备应当除外, 它的名字是"逻辑名". * IPADDR=addr, 这里addr是IP地址. * NETMASK=mask, 这里mask是网络掩码. * NETWORK=addr, 这里addr是网络地址. * BROADCAST=addr, 这里addr是广播地址. * GATEWAY=addr, 这里addr是网关地址. * ONBOOT=answer, 这里an

Linux网络配置详解

搭建LAMP的形式分为: ①:rpm---->系统自带的软件(二进制软件包) ②:.tar.gz----> 源码的压缩文件   配置网络信息:/etc/sysconfig/network-scripts/ifcfg-eth0这个文件属于计算机第一块网卡的配置文件DEVICE:设备ONBOOT:系统启动时是否自动启用网卡,一般情况设置为yesBOOTPROTO:表示获取ip方式static.dhcpIPADDR;IP地址NETMASK:子网掩码GETWAY:网关 启动网络服务:service n

Linux服务器下nginx的安全配置详解_nginx

Nginx是一个轻量级,高性能的Web服务器/反向代理和电子邮件 代理(IMAP/POP3),它可以运行在UNIX,GNU/Linux,BSD变种,MAC OS X,Solaris和Microsoft Windows上.根据Netcraft的调查数据显示,互联网上6%的域名都使用了Nginx Web服务器.Nginx是解决C10K问题的服务器之一,与传统服务器不一样,Nginx不依赖于线程处理请求,相反,它使用了一个更具扩展性的事件驱 动(异步)架构.Nginx在很多高流量网站上得到了应用,如W

Centos6.5搭建java开发环境配置详解_Linux

一.安装jdk 1.查看Linux自带的JDK是否已安装 java –version 如果出现openjdk,最好还是先卸载掉openjdk,在安装sun公司的jdk. 2.查看jdk信息 rpm -qa|grep java 3.卸载OpenJDK,执行以下操作: rpm -e --nodeps tzdata-java-2012c-1.el6.noarch rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-1.45.1.11.1.el6.x86_64 4.新

Linux桌面系统字体配置详解(二)

字体配置实战 下面,将以Fedora 20为例,自己动手将它配置为正确的显示效果.目前,在Linux系统上配置字体的工具是Fontconfig. 为什么是Fontconfig 感谢这个时代,曾经混乱不堪的字体配置方法终于被Fontconfig一统江湖.在Linux中,字体配置曾经各自为政.混乱不堪,XServer.Xft.GTK.GTK2.QT等等各自采用不同的配置手段,字体引擎也有Type1.FreeType等.目前,可以认为在Linux系统中只需要配置FontConfig即可. XOrg的官

Linux下Tomcat catalina.out自动归档,以及logrotate 配置详解

Linux下Tomcat catalina.out自动归档 如果 catalina.out 日志达到 2GB 大小的时候,Tomcat 因为缓存问题,便没有办法继续输出日志了.  为了避免这种情况,你需要及时对 catalina.out  进行归档.  实际上 Tomcat 自身也会对日志内容进行归档,但是归档后,Tomcat 不会清理 catalina.out 的内容,这将会导致 catalina.out 越来越大.  下面的方法能够使用在 linux/unix 的机器上.  如果我们期望每天

Linux系统Memcache安装配置详解

安装Memcached服务端 memcached依赖于libevent,需要先安装libevent. 安装 libevent # tar zxvf libevent-2.0.21-stable.tar.gz # cd libevent-2.0.21-stable # ./configure --prefix=/usr/local/libevent # make && make install 安装memcached服务端 # wget http://www.memcached.org/fi