li
  当前位置:主页 > 集群技术 > 文章内容
li
Linux下多网卡实现负载均衡技术(2)
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-05-09   阅读:60  
本文章共3771字,分3页,当前第2页,快速翻页:
 

  通常在一个大的局域网内,往往存在多个子网。 其拓扑结构如下所示:

图1 局域网拓扑图

  4 基于传输协议的发送算法

  上面我们对Linux中的几种实现多网卡发送负载均衡算法进行了分析,针对这些算法的不足,这里提出另外一种发送负载均衡算法。

  4.1 算法描述实现

  我们知道网络传输协议有TCP和UDP两种,其中UDP是一种无连接、不可靠的传输协议。TCP是一种提供面向连接的、可靠的字节流服务,譬如一个客户机和一个服务器在彼此交换数据前要建立一个连接。一个TCP连接或者一个UDP会话的结构大致如下:

  {source,dst,saddr,daddr}

  其中source为源端口号,dst为目的端口号,saddr为源ip地址,daddr为目的ip地址。

  基于传输协议的发送算法的主要思想是: 由目的主机号、目的主机所在子网的子网号及该会话的TCP或UDP的目的端口号共同决定某个数据包的发送接口号,此算法和MAC地址的异或算法有点类似,因为它也是一种异或计算。

  下面我们约定:

  (1)host为要发送数据包的目的主机号。

  (2)subnet为目的主机的子网的子网号。

  (3)port 为UDP或TCP连接的目的端口号。

  (4)slave_cnt为绑定的接口数。

  不失一般性,这里先考虑slave_cnt为4的情况,在这种情况下由上述几个条件异或并进行求余计算来共同确定发送的接口号,即进行下面的运算:

  (host ^ subnet ^ port ) & (0x03) % slave_cnt ①式

  上式可能的结果可能为0、1、2、3。即该算法这种情况下最多可以绑定4个网卡接口。

  该算法最大程度上将不同连接的数据包从不同的接口发送,下面分几种情况讨论:

  (1)对于同一个客户机的两个TCP连接,发送的接口号只与要连接的目的端口号有关。我们假设连接1和连接2的目的端口号分别为port1,port2,当port1(二进制)和port2(二进制)的最后两位不同时,上个算法的计算结果不相等,两个连接的数据流从不同的接口发送出去.

  (2)对于同一个子网的不同客户机的两个TCP连接来说, 上述算法式子中的subnet相同,假设连接的目的端口号port相同。但是主机号不同。设目的主机号分别为host1和host2,当host1和host2(都是用二进制表示)的最后两位不相同时,算法公式的计算结果不相等,两个连接的数据流从不同的接口发送出去。

[NextPage]

  (3)对于不同子网的两个TCP连接来说,假定主机号和连接的目的号port号都相同,子网号不同。设连接1和连接2所在的子网号分别为subnet1和subnet2, 当两者的最后两位不相同时,算法公式的计算结果不相等,此时两个连接的数据流从不同的接口发送出去。

  下面考虑有N个网卡接口的情况,在某个时间段内从第i个接口发送的连接数为 (i=1,2,….N),第i个接口发送的第j个连接的数据流为 ,则第i个网卡接口的负载是:

IXDBA.NET技术社区

②式

  当②式成立时,每个接口的负载绝对均衡,由于①式能够将连接尽量分配到不同的接口,所以一般情况下 = =…… ,即每个接口的连接数相等,但是每个连接的数据流量不一定相等,也就是说②式不一定成立,根据统计原理,当客户机和服务器的连接数足够大并且时间足够长时,②式是成立的。

  从上面对基于传输协议的负载均衡算法分析来看,该算法不仅在网络层并且传输层都实现了各个接口的负载均衡,且保证了数据有序到达客户端问题,同时资源的利用率也很高。

  5 测试结果进行验证分析

  测试软件环境:RedHat9.0(内核2.4.20)

  测试硬件配置环境:一台服务器(CPU: P IV 2.8G;内存: 512M;两块支持MII状态字寄存器的百兆网卡,每个有一个接口;一台客户机(配置和服务器一样);两台(一台也可)24口千兆交换机。测试软件为netpipe,利用此软件可以测试TCP 协议性能,用它依次来对轮转算法、MAC地址异或算法以及基于传输协议的发送算法的网络延时和吞吐率。这里服务器用来发送数据,客户机用来接收数据。



阅读更多内容<<上一页 · 1 · 2 · 3 · 下一页>>


  上一篇: ORACLE FailSafe与rac(ops)的区别   下一篇: 硬件的负载均衡器和LVS实现负载均...
li
 §相关评论  
 热点文章

·Linux RAC OCFS文件系统与INOD
·Oracle10g R2 Installing RAC
·Linux服务器集群系统(lvs)
·Linux对存储文件系统的技术架构
·linux常用集群文件系统简介
·如何选择合适的双机和集群软件
·LifeKeeper软件介绍
·纯软件方式的双机热备方案深入
·双机热备:基于共享存储与纯软
·双机热备与数据备份,数据安全的
·双机热备常见问题释疑
li
 编辑推荐
·Linux RAC OCFS文件系统与INOD
·Oracle10g R2 Installing RAC
·Linux服务器集群系统(lvs)
·Linux对存储文件系统的技术架构
·linux常用集群文件系统简介
·如何选择合适的双机和集群软件
·LifeKeeper软件介绍
·纯软件方式的双机热备方案深入
·双机热备:基于共享存储与纯软
·双机热备与数据备份,数据安全的
·双机热备常见问题释疑
li
 相关篇章
·ORACLE FailSafe与rac(ops)的区别
·ROSE HA双机软件全程图解安装配置
·集群原理:双机软件与集群软件的异...
·HACMP工作原理以及日常维护
·高性价比mysql集群配置
·利用apache代理功能实现负载均衡...
·国内linux下ha高可用软件简单介绍
·Oracle10g RAC (OCFS2)开启关闭及...
·Oracle10g RAC 关闭及启动步骤
·Oracle10g RAC ASM 环境日常管理...
·硬件的负载均衡器和LVS实现负载均...
·构建基于Linux具有高可用性的集群...
·Rose HA日常相关维护命令与技巧
·oracle 10g dataguard 在windows...
·oracle rac日常基本维护命令
·redhat linux下GFS与RHCS安装日记
·Red Hat集群(Cluster)套件介绍
·nginx简明教程负载均衡和php解释
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接