ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:50.48KB ,
资源ID:11835974      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11835974.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(07 RedHat Enterprise Linux 5网卡多路径.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

07 RedHat Enterprise Linux 5网卡多路径.docx

1、07 RedHat Enterprise Linux 5网卡多路径技术文档模板(v 120710)作者王卫锋审核分类Linux子类Network更新时间2012-07-10关键字RedHat Enterprise Linux 5,bonding摘要RedHat Enterprise Linux 5网络多路径技术bonding,可以在严格的企业环境下保证网络的持续可靠运行主要适用环境RedHat Enterprise Linux 5,或者其他kernel 2.4.x的Linux发行版版本说明版本号拟制/修改责任人拟制/修改日期修改内容/理由V120710王卫锋2012-07-10新建目录版本说明

2、 21系统和软硬件环境说明 42技术背景简介 53负载均衡技术和高可用技术介绍 54 Linux 的 bonding 技术中负载均衡的简单实现 55. 安装Bonding驱动 65.1配置并编译支持bonding的内核 65.2安装ifenslave控制工具 66. bonding驱动选项 67. 配置bonding设备 87.1使用sysconfig配置 97.1.1利用sysconfig使用DHCP 107.1.2利用Sysconfig配置多个Bonds 107.2使用Initscripts配置 107.2.1利用Initscripts使用DHCP 117.2.2 利用Initscript

3、s配置多个Bonds 117.3通过Ifenslave手动配置Bonding 127.3.1手动配置多个Bonds 127.4通过Sysfs手工配置Bonding 138. 查询Bonding配置 148.1 Bonding配置 148.2网络配置 159. 交换机配置 1510.支持802.1q VLAN 1611.链路监控 1611.1ARP监控操作 1611.2配置多ARP目的地址 1711.3 MII监控操作 1712.潜在问题缘由 1712.1路由历险记 1712.2Ethernet设备重命名 1812.3速度变慢或Miimon无法监测到链路异常 1813.SNMP代理 1914.混

4、杂模式 1915.配置Bonding用于高可靠性(High Availability,HA) 2015.1单交换机拓扑下的HA 2015.2多交换机拓扑下的HA 2015.2.1多交换机拓扑下的HA模式选择 2015.2.2多交换机拓扑下的HA链路监控选择 2116.配置Bonding用于最大吞吐量(Maximizing Throughput,MT) 2116.1单交换机拓扑下的最大吞吐量 2116.1.1单交换机拓扑下的MT Bonding模式选择 2216.1.2单交换机拓扑下的MT链路监控 2316.2 多交换机拓扑下的最大吞吐量 2316.2.1多交换机拓扑下的MT Bonding模式

5、选择 2316.1.2多交换机拓扑下的MT链路监控 2317.交换机行为的问题 2417.1链路建立和故障恢复的延时 2417.2Incoming包重复 2418.硬件相关的考量 2518.1IBM刀片服务器(BladeCenter) 2519.常见问题(FAQ) 2620.命令行配置简介 271系统和软硬件环境说明硬件环境:x86主机1台,网卡2块软件环境:RedHat Enterprise Linux 52技术背景简介现今几乎各行各业内部都建立了自己的服务器,由于服务器的特殊地位,它的可靠性、可用性及其 I/O 速度就显得非常的重要, 保持服务器的高可用性和安全性是企业级IT 环境的重要指

6、标,其中最重要的一点是服务器网络连接的高可用性,为实现这些要求,现在服务器大都采用多网卡配置,系统大都采用现在非常流行的 linux 作为服务器工作的环境。现在带宽已经不是服务质量提高的瓶颈了,相对的网络设备和服务器的处理能力就渐渐成为新的瓶颈。为提高服务器的网络连接的可用性和可靠性,目前Sun公司的Trunking技术、3Com 公司的 DynamicAccess 技术、Cisco 公司的Etherchannel技术等等都在研究将服务器的多个网卡接口绑定在一起的链路聚集技术,链路聚集技术将多个链路虚拟成一个逻辑链路进而提供了一种廉价、有效的方法扩展网络设备和服务器的带宽,提高网络的灵活性与可

7、用性。下面介绍 linux 下的 bonding 技术,linux 2.4.x 的内核中采用了这种技术,利用 bonding 技术可以将多块网卡接口通过绑定虚拟成为一块网卡,在用户看来这个聚合起来的设备好像是一个单独的以太网接口设备,通俗点讲就是多块网卡具有相同的 IP 地址而并行连接聚合成一个逻辑链路工作。现在在关于linux bonding 技术中,有几种算法来实现负载均衡的要求。3负载均衡技术和高可用技术介绍负载均衡技术负载均衡技术的主要思想就是如何根据某种算法将网络的业务流量平均分配到不同的服务器和网络设备上去,以减轻单台服务器和网络设备的负担,从而提高整个系统的效率。负载均衡既可以由

8、有负载均衡功能的硬件实现,也可以通过一些专用的软件来实现,负载均衡是一种策略,它能让多台服务器或多条链路共同承担一些繁重的计算或者 I/O 任务,从而以较低的成本消除网络瓶颈,提高网络的灵活性和可靠性。 高可用技术实现负载均衡首先是基于网络的高可用性提出来的,高可用技术是容错技术的一个分支。实现系统的高可用性最简单的一个办法就是冗余。完整的网络负载均衡和高可用性网络技术有两个方面构成,一是多服务器的绑定和负载均衡,二是一个服务器内部的多网卡绑定的负载均衡,这里主要讨论一个服务器内部的多网卡绑定时的负载均衡。4 Linux 的 bonding 技术中负载均衡的简单实现Linux的bonding技

9、术是网卡驱动程序之上、数据链路层之下实现的一个虚拟层,通过这种技术,服务器接在交换机上的多块网卡不仅被绑定为一个 IP,MAC 地址也被设定为同一个,进而构成一个虚拟的网卡,工作站向服务器请求数据,服务器上的网卡接到请求后,网卡根据某种算法智能决定由谁来处理数据的传输。 Bonding技术可以提高主机的网络吞吐量和可用性。 Linux 的发送算法最主要的有三种:轮转算法(Round-Robin) 、备份算法(Active-Backup) 、MAC 地址异或算法(MAC-XOR) .下面对目前这三种主要算法进行简单分析。 轮转算法该算法是基于公平原则进行的,它为每个将要被发送的数据包选择发送接口

10、,算法的主要思想是首先第一个数据包由一个接口发送,另一个数据包则由另外一个接口发送,下面依次进行循环选择。通过分析我们可以看出这种算法比较比较简单,在发送数据方面也比较公平,能保证网卡发送数据时候的负载均衡,资源利用率很高。但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。 备份算法该算法将多个网卡接口中的一个接口设定为活动状态,其他的接口处于备用状态。当活动接口或者活动链路出现故障时,启动备用链路,由此可见此算法的优点是可以提供高网络连接的可用性,但是

11、它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N. MAC地址异或算法该算法的主要思想是:由服务器的 MAC 地址和客户端的MAC 地址共同决定每个数据包的发送端口号,由源 MAC 地址和目的 MAC 地址进行异或计算,并将异或结果对接口数求余计算。由于发送到同一个客户端的数据流经过同一个链路,因此数据包能够有序到达客户端。此算法在只有一个客户机访问服务器或者服务器和客户机不在同一子网的情况下,由算法思想得知这种情况下负载不会均衡,在只有一个客户机访问服务器的时候,资源的利用率也是 1/N(N为接口数)。5. 安装Bonding驱动大多数目前发布的

12、Linux内核都以模块(module)方式带了bonding驱动,ifenslave工具也都已经安装好。如果你的Linux没有,或者你确实需要自己来编译bonding(比如要配置或安装自己的Linux内核),请参考如下步骤:5.1配置并编译支持bonding的内核当前版本的bonding驱动位于Linux内核源码(从http:/kernel.org下载)的drivers/net/bonding子目录中。你可以在kerenl.org下载到最新版本的内核源码。通过make menuconfig(或make xconfig make config)配置内核,在“Network device supp

13、ort”下选择“Bonding driver support”。建议将bonding驱动配置为模块(module)方式,因为如果你要给驱动传递参数或者希望配置多个bonding驱动,只有通过模块方式。编译并安装新的内核和编译出的模块,然后参照下面的步骤安装ifenslave。5.2安装ifenslave控制工具 ifenslave控制工具也在内核源码中:Documentation/networking/ifenslave.c。一般建议最好使用和内核匹配的 ifenslave(同一份源码中或同一个发布中),然而较老的内核中的ifenslave也应该能够正常工作(较新的一些功能将不能使用),不过更

14、新的内核中的ifenslave将可能不能工作。参照如下步骤以安装ifenslave:# gcc -Wall -O -I/usr/src/linux/include ifenslave.c -o ifenslave# cp ifenslave /sbin/ifenslave如果你的内核源码不在“/usr/src/linux”下,请将上面的“/usr/src/linux/include”替换成相应的正确目录。如果希望备份现有的/sbin/ifenslave,或者只是试用一下,你可以把ifenslave文件名加上内核版本信息(比如,/sbin/ifenslave-2.6.10)重要提示:如果你忽略了

15、-I参数或者指定了一个不正确的目录,你可能会得到一个和内核不兼容的ifenslave。有些发布(比如Red Hat 7.1之前的版本)没有/usr/include/linux符号链接指向当前内核的include目录。另一个重要提示:如果你打算使用sysfs来配置bonding,你不需要使用ifenslave。6. bonding驱动选项bonding驱动的选项是通过在加载时指定参数来设定的。可以通过insmod或modprobe命令的命令行参数来指定,但通常在/etc /modules.conf或/etc/modprobe.conf配置文件中指定,或其他的配置文件中。下面列出可用的bondin

16、g驱动参数。如果参数没有指定,驱动会使用缺省参数。刚开始配置bond的时候,建议在一个终端窗口中运行tail -f /var/log/messages来观察bonding驱动的错误信息。有些参数必须要正确的设定,比如miimon、arp_interval和arp_ip_target,否则在链接故障时会导致严重的网络性能退化。很少的设备不支持miimon,因此没有任何理由不使用它们。有些选项不仅支持文本值的设定,出于兼容性的考虑,也支持数值的设定,比如,mode=802.3ad和mode=4效果是一样的。具体的参数列表:arp_interval:指定ARP链路监控频率,单位是毫秒(ms)。如果A

17、PR监控工作于以太兼容模式(模式0和模式2)下,需要把switch(交换机)配置为在所有链路上均匀的分发网络包。如果switch(交换机)被配置为以XOR方式分发网络包,所有来自ARP目标的应答将会被同一个链路上的其他设备收到,这将会导致其他设备的失败。ARP监控不应该和miimon同时使用。设定为0将禁止ARP监控。缺省值为0。arp_ip_target:指定一组IP地址用于ARP监控的目标,它只在arp_interval 0时有效。这些IP地址是ARP请求发送的目标,用于判定到目标地址的链路是否工作正常。该设定值为ddd.ddd.ddd.ddd格式。多个IP地址通过逗号分隔。至少指定一个I

18、P地址。最多可以指定16个IP地址。缺省值是没有IP地址。downdelay:指定一个时间,用于在发现链路故障后,等待一段时间然后禁止一个slave,单位是毫秒(ms)。该选项只对miimon监控有效。downdelay值应该是miimon值的整数倍,否则它将会被取整到最接近的整数倍。缺省值为0。lacp_rate:指定在802.3ad模式下,我们希望的链接对端传输LACPDU包的速率。可能的选项:slow 或者 0,请求对端每30s传输LACPDU;fast 或者 1,请求对端每1s传输LACPDU,缺省值是slow。max_bonds:为bonding驱动指定创建bonding设备的数量。

19、比如,如果max_bonds为3,而且bonding驱动还没有加载,那么bond0,bond1,bond2将会被创建。缺省值为1。miimon:指定MII链路监控频率,单位是毫秒(ms)。这将决定驱动检查每个slave链路状态频率。0表示禁止MII链路监控。100可以作为一个很好的初始参考值。下面的use_carrier选项将会影响如果检测链路状态。更多的信息可以参考“高可靠性”章节。缺省值为0。mode:指定bonding的策略。缺省是balance-rr (round robin,循环)。可选的mode包括:balance-rr 或者 0:round-robin(循环)策略,按顺序传输数据

20、包,从第一个可用的slave到最后一个可用的slave。该模式提供了负载均衡和容错机制。active-backup 或者 1:active-backup(激活-备份)策略,只有一个slave是激活的(active)。其他的slave只有在当前激活的slave故障后才会变为激活的(active)。从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。在bonding 2.6.2和以后的版本中,如果在active-backup模式下出现failover,bonding将会在新的slave上发出一个或多个ARP请求,其中一个ARP请求针对bonding master接口及它

21、上面配置的每个VLAN接口,从而保证该接口至少配置了一个IP地址。针对VLAN接口的ARP请求将会被打上相应的VLAN id。该模式提供了容错机制。下面的primary选项将会影响该工作模式的行为。balance-xor 或者 2:XOR策略,基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定。该模式提供了负载均衡和容错机制。broadcast 或者 3:broadcase(广播)策略,在每个slave接口上传输每个数据包。该模式提供了容错机制。802.3ad 或者 4

22、:IEEE 802.3ad Dynamic link aggregation(动态链接聚合),创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。必要条件:1. ethtool支持获取每个slave的速率和双工设定;2. switch(交换机)支持IE

23、EE 802.3ad Dynamic link aggregation。大多数switch(交换机)需要经过特定配置才能支持802.3ad模式。balance-tlb 或者 5:自适应的传输负载均衡,不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。必要条件:ethtool支持获取每个slave的速率。balance-alb 或者 6:自适应均衡负载,该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(r

24、eceive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的

25、硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部刘翔当前的slave。这个问题通过给所有的对端发送更新(ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上。当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switc

26、h(交换机)转发延时的值,从而保证发往对端的ARP应答不会被switch(交换机)阻截。必要条件:1. ethtool支持获取每个slave的速率;2. 底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管。primary:指定哪个slave成为主设备(primary device),取值为字符串,如eth0,eth1等。只要指定的设备可用,它将一直是

27、激活的slave。只有在主设备(primary device)断线时才会切换设备。这在希望某个slave设备优先使用的情形下很有用,比如,某个slave设备有更高的吞吐率。primary选项只对active-backup模式有效。updelay:指定当发现一个链路恢复时,在激活该链路之前的等待时间,以毫秒计算。该选项只对miimon链路侦听有效。updelay应该是miimon值的整数倍,如果不是,它将会被向下取整到最近的整数。缺省值为0。use_carrier:指定miimon是否需要使用MII或者ETHTOOL ioctls还是netif_carrier_ok()来判定链路状态。MII或E

28、THTOOL ioctls更低效一些,而且使用了内核里废弃的旧调用序列;而netif_carrier_ok()依赖于设备驱动来维护状态(判断载波),大多数但不是全部设备驱动支持这个特性。如果bonding总是认为链路是通的,但实际上是断的,这有可能是由于你的网络设备驱动不支持netif_carrier_on/off。因为 netif_carrier的缺省状态是carrier on,因此如果驱动不支持netif_carrier,则会显示链路永远正常。在这种情况下,把use_carrier设为0,从而让bonding使用MII/ETHTOOL ictl来判定链路状态。该选项设为1会使用netif_

29、carrier_ok(),而设为0则会使用废弃的MII/ETHTOOL ioctls,缺省值是1。xmit_hash_policy:在balance-xor和802.3ad模式下选择不同的hash模式,以用于slave选举。可能的取值有:layer2:使用硬件MAC地址的XOR来生成hash。公式为:(源MAC地址 XOR 目的MAC地址)% slave数目,该算法会将某个网络对(network peer)上所有的流量全部分配到同一个slave上。layer3+4:该策略在可能的时候使用上层协议的信息来生成hash。这将允许特定网络对(network peer)的流量分摊到多个slave上,尽

30、管同一个连接(connection)不会分摊到多个slave上。针对未分片的TCP和UDP包的计算公式为:(源端口 XOR 目的端口) XOR (源IP XOR 目的IP) AND 0xFFFF) % slave数目;对于已分片TCP或UDP包,以及其他的IP包,源端口和目的端口的信息被忽略了;对于非IP流量,采用和layer2一样的hash策略。该策略期望模仿某些交换机的行为,比如带PFC2的Cisco交换机,以及某些Foundry和IBM的产品。该算法不完全适应802.3ad,一个单一的TCP或UDP会话同时包含有分片和未分片的包将会导致包在两个接口上传递,这将会导致投递乱序。大多数流量不

31、会满足这种条件,正如TCP很少分片,而大多数UDP流量不会在长期的会话中存在。其他的802.3ad实现有可能不能容忍这样的不适应性。缺省设置是layer2。该选项在bonding 2.6.3加入,在早期版本中,该参数不存在,只是layer2策略。7. 配置bonding设备可以使用发行包里的网络初始化脚本配置bonding,或者手动通过ifenslave或sysfs配置。发行包通常包含一到两个包来支持网络初始化脚本:initscripts或sysconfig。最近的版本已经支持bonding,而稍早的版本不支持。我们将会首先描述使用通过发行包配置bonding的选项,这将通过initscripts和sysconfig的bonding支持来实现,然后,我们会介绍如果在没有网络初始化脚本的情况下(较老版本的initscript或sysconfig)如何使用bonding功能。如果不确定是否你的发行包包含sysconfig或者initscripts,或不确定它们是否足够新,很简单,可以用下面的方法来知道。首先,执行命令:$ rpm -qf /sbin/ifup它将会返回一行文本,以initscripts或sysconfig,开头,后面跟着一串数字。这就是提供网络初始化脚本的包。下一步,为了确定你的安装是否支持bonding,执行命令:$ grep

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1