Linux下通过bonding技术实现网络负载均衡及冗余

上传人:ji****72 文档编号:37520771 上传时间:2018-04-17 格式:DOC 页数:9 大小:45KB
返回 下载 相关 举报
Linux下通过bonding技术实现网络负载均衡及冗余_第1页
第1页 / 共9页
Linux下通过bonding技术实现网络负载均衡及冗余_第2页
第2页 / 共9页
Linux下通过bonding技术实现网络负载均衡及冗余_第3页
第3页 / 共9页
Linux下通过bonding技术实现网络负载均衡及冗余_第4页
第4页 / 共9页
Linux下通过bonding技术实现网络负载均衡及冗余_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Linux下通过bonding技术实现网络负载均衡及冗余》由会员分享,可在线阅读,更多相关《Linux下通过bonding技术实现网络负载均衡及冗余(9页珍藏版)》请在金锄头文库上搜索。

1、Linux Bonding一、什么是一、什么是 bondingLinux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置 来使用,用于网络负载均衡及网络冗余二、二、bonding 应用方向应用方向1、网络负载均衡、网络负载均衡对 于 bonding 的网络负载均衡是我们在文件服务器中常用到的,比如把三块网 卡,当做一块来用,解决一个 IP 地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如 NFS 或 SAMBA 文件服务器,没有任何一个管理 员会把内部网的文件服务器的 IP 地址弄很多个来解决网络负载的问题。如果在 内网 中,文件服务器为了管理和应用

2、上的方便,大多是用同一个 IP 地址。对 于一个百 M 的本地网络来说,文件服务器在多 个用户同时使用的情况下,网 络压力是极大的,特别是 SAMABA 和 NFS 服务器。为了解决同一个 IP 地址, 突破流量的限制,毕竟网线和网卡对数据的吞吐量 是有限制的。如果在有限的 资源的情况下,实现网络负载均衡,最好的办法就是 bonding 2、网络冗余、网络冗余对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的 系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备 的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗 余的支持。把多块网

3、卡绑定到一个 IP 地址,当一块网卡发生物理性损坏的情况 下,另一块网卡自动启用,并提供正常的服务,即:默认情况下只有一块网卡 工作,其它网卡做备份三、三、bonding 实验环境及配置实验环境及配置1、实验环境、实验环境系统为:CentOS,使用 4 块网卡(eth0、eth1 = bond0;eth2、eth3 = bond1)来实现 bonding 技术2、bonding 配置配置第一步:先查看一下内核是否已经支持第一步:先查看一下内核是否已经支持 bonding1)如果内核已经把 bonding 编译进内核,那么要做的就是加载该模块到当前内核;其次查看 ifenslave 该工具是否也

4、已经编译 modprobe -l bond* 或者 modinfo bonding modprobe bonding lsmod | grep bonding echo modprobe bonding & /dev/null /etc/rc.local(开机自动加载 bonding 模 块到内核) which ifenslave 注意:默认内核安装完后就已经支持 bonding 模块了,无需要自己手动编译2)如果 bonding 还没有编译进内核,那么要做的就是编译该模块到内核 (1)编译 bonding tar -jxvf kernel-XXX.tar.gz cd kernel-XXX m

5、ake menuconfig 选择 “ Network device support “ - “ Bonding driver support “ make bzImage make modules & make modules_install make install (2)编译 ifenslave 工具 gcc -Wall -O -I kernel-XXX/include ifenslave.c -o ifenslave第二步:主要有两种可选择(第二步:主要有两种可选择(第 1 种:实现网络负载均衡,第 2 种:实现网络 冗余)例例 1:实现网络冗余(即:实现网络冗余(即:mod=1 方式

6、,使用方式,使用 eth0 与与 eth1)(1)编辑虚拟网络接口配置文件(bond0),并指定网卡 IP vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.254 BROADCAST=192.168.0.255 NETMASK=255.255.255.0 NETWORK=192.168.0.0 GATEWAY=192.168.0.1 USERCTL=no TYPE=Ethernet 注意:建议不要指定 MAC 地址vi /etc/sys

7、config/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes 注意:建议不要指定 MAC 地址vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes 注意:建议不要指定 MAC 地址(2)编辑模块载入配置文件(/etc/modprobe.conf),开机自动加载 bond

8、ing 模 块到内核 vi /etc/modprobe.conf alias bond0 bonding options bond0 miimon=100 mode=1 alias net-pf-10 off #关闭 ipv6 支持 说明:miimon 是用来进行链路监测的。 比如:miimon=100,那么系统每 100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode 的值表 示工作模式,他共有 0,1,2,3,4,5,6 六种模式,常用为 0,6,1 三种, 具体后面会介绍 mode=0,表示 load balancing (round-robin)为负载均衡方式,

9、两块网卡都工作, 但是与网卡相连的交换必须做特殊配置( 这两个端口应该采取聚合方式),因 为做 bonding 的这两块网卡是使用同一个 MAC 地址 mode=6,表示 load balancing (round-robin)为负载均衡方式,两块网卡都工作, 但是该模式下无需配置交换机,因为做 bonding 的这两块网卡是使用不同的 MAC 地址 mode=1,表示 fault-tolerance (active-backup)提供冗余功能,工作方式是主备的 工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份 注意:bonding 只能提供链路监测,即从主机到交换机的链路是否接通。

10、如果只 是交换机对外的链路 down 掉了,而交换机本身并没有故障,那么 bonding 会认 为链路没有问题而继续使用(4)重启并测试 第一:由于 bonding 使用的模式为 mod=1(网络冗余),所以 eth0、eth1 与虚 拟的 bond0 同一个 MAC 地址注意:对比上面这两个图,可知 mode=1 模式下,eth0 与 eth1 这两块网卡,只 有一块网卡在工作(即:eth0),因为 eth1 网卡的 RX 与 TX 都没有在发生变 化第二:测试,用 ping 指令 ping 虚拟网卡设备 bond0 的 IP 地址 (192.168.0.254),然后禁用 eth0 设备看

11、一下能够继续 ping 的通说明:如上图可得到,断开 eth0(上图的右下角),还是可以 ping 的通的例例 2:实现网络负载均衡和网络冗余(即:实现网络负载均衡和网络冗余(即:mod=0 方式,使用方式,使用 eth0 与与 eth1) 注意:VM 中只能做 mode=1 的实验,其它的工作模式得用真机来实践跟例 1 的步骤一样,只需要修改模块载入配置文件(/etc/modprobe.conf),如 下: alias bond0 bonding options bond0 miimon=100 mode=0(1)测试如下 #目前两块网卡都处于连接状态 rootWeb:# ifconfig

12、| grep eth | awk print $1 eth0 eth1 #禁用了网卡 eth0,用 ping 指令测试反之,也是一样的!例例 3:实现网络负载均衡和网络冗余(即:实现网络负载均衡和网络冗余(即:mod=6 方式,使用方式,使用 eth0 与与 eth1,其,其 中中 eth0 设置为设置为 primay)跟例 1 的步骤一样,只需要修改模块载入配置文件(/etc/modprobe.conf),如 下: alias bond0 bonding options bond0 miimon=100 mode=6上图可知:mode=6 时,eth0 与 eth1 所使用的 MAC 是不一

13、样的(1)测试如下 #目前两块网卡都处于连接状态 rootWeb:# ifconfig | grep eth | awk print $1 eth0 eth1 #禁用了网卡 eth0,用 ping 指令测试四、四、bonding 运用的注意事项运用的注意事项1、bonding 的模式:0-6,即:7 种模式第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略) 特点:传输数据包顺序是依次传输(即:第 1 个包走 eth0,下一个包就走 eth1. 一直循环下去,直到最后一个传输完毕), 此模式提供负载平衡和容错能力;此模式提供负载平衡和容

14、错能力; 但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再 经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略) 特点:只有一个设备处于活动状态,当 一个宕掉另一个马上由备份转换为主设 备。mac 地址是外部可见得,从外面看来,bond 的 MAC 地址是唯一的,以避 免 switch(交换机)发生混乱。此模式只提供了容错能力;此模式只提供了容错能力;由此可见此算法的优点 是可以提供高网络

15、连接的可用性,但是它的资源利用率较低,只有一个接口处 于工作状态,在有 N 个网络接口的情况下,资源利用率为 1/N第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略) 特点:基于指定的传输 HASH 策略传输数据包。缺省的策略是:(源 MAC 地址 XOR 目标 MAC 地址) % slave 数量。其他的传输策略可以通过 xmit_hash_policy 选项指定,此模式提供负载平衡和容错能力第四种模式:mod=3,即:broadcast(广播策略) 特点:在每个 slave 接口上传输每个数据包,此模式提供了容错能力第五种模式:mod=4,即:(802

16、.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合) 特点:创建一个聚合组,它们共享同样的速率和双工设定。根据 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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号