linux教程之Linux服务器下多网卡负载平衡的研讨
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。1弁言 当今几近各行各业外部都创建了本人的服务器,因为服务器的特别位置,它的牢靠性、可用性及其I/O速率就显得十分的主要,坚持服务器的高可用性和平安性是企业级IT情况的主要目标,个中最主要的一点是服务器收集毗连的高可用性,为完成这些请求,
如今服务器多数接纳多网卡设置,体系多数接纳如今十分盛行的Linux作为服务器事情的情况。如今带宽已不是服务质量进步的瓶颈了,绝对的收集设备和服务器的处置才能就垂垂成为新的瓶颈。为进步服务器的收集毗连的可用性和牢靠性,今朝Sun公司的Trunking手艺、3Com公司的DynamicAccess手艺、Cisco公司的Etherchannel手艺等等都在研讨将服务器的多个网卡接口绑定在一同的链路会萃手艺,链路会萃手艺将多个链路假造成一个逻辑链路进而供应了一种便宜、无效的办法扩大收集设备和服务器的带宽,进步收集的天真性与可用性。
本文先容Linux下的bonding手艺,Linux2.4.x的内核中接纳了这类手艺,使用bonding手艺能够将多块网卡接口经由过程绑定假造成为一块网卡,在用户看来这个聚合起来的设备仿佛是一个独自的以太网接口设备,普通点讲就是多块网卡具有不异的IP地点而并行毗连聚分解一个逻辑链路事情。如今在关于Linuxbonding手艺中,有几种算法来完成负载平衡的请求,此文针对这些算法,在此举行复杂剖析与研讨,会商其不敷,并提出别的一种在此基本上改善的一种基于传输协定的负载平衡完成办法。会商怎样完成多个收集接口的分在平衡及其妨碍接受。
2负载平衡手艺和高可用手艺研讨先容
2.1负载平衡手艺
负载平衡手艺的次要头脑就是怎样依据某种算法将收集的营业流量均匀分派到分歧的服务器和收集设备上往,以加重单台服务器和收集设备的包袱,从而进步全部体系的效力。负载平衡既能够由有负载平衡功效的硬件完成,也能够经由过程一些公用的软件来完成,负载平衡是一种战略,它能让多台服务器或多条链路配合承当一些沉重的盘算大概I/O义务,从而以较低的本钱打消收集瓶颈,进步收集的天真性和牢靠性。
2.2高可用手艺
完成负载平衡起首是基于收集的高可用性提出来的,高可用手艺是容错手艺的一个分支。完成体系的高可用性最复杂的一个举措就是冗余。完全的收集负载平衡和高可用性收集手艺有两个方面组成,一是多服务器的绑定和负载平衡,二是一个服务器外部的多网卡绑定的负载平衡,这里次要会商一个服务器外部的多网卡绑准时的负载平衡。
3Linux的bonding手艺中负载平衡的复杂完成
3.1Linux的bonding手艺
Linux的bonding手艺是网卡驱动程序之上、数据链路层之下完成的一个假造层,经由过程这类手艺,服务器接在互换机上的多块网卡不但被绑定为一个IP,MAC地点也被设定为统一个,进而组成一个假造的网卡,事情站向服务器哀求数据,服务器上的网卡接到哀求后,网卡依据某种算法智能决意由谁来处置数据的传输。Bonding手艺能够进步主机的收集吞吐量和可用性。
3.2Linux的几种发送平衡算法
今朝Linux的发送算法最次要的有三种:轮转算法(Round-Robin)、备份算法(Active-Backup)、MAC地点异或算法(MAC-XOR)。上面对今朝这三种次要算法举行复杂剖析。
3.2.1轮转算法
该算法是基于公允准绳举行的,它为每一个将要被发送的数据包选择发送接口,算法的次要头脑是起首第一个数据包由一个接口发送,另外一个数据包则由别的一个接口发送,上面顺次举行轮回选择。经由过程剖析我们能够看出这类算法对照对照复杂,在发送数据方面也对照公允,能包管网卡发送数据时分的负载平衡,资本使用率很高。可是我们晓得假如一个毗连大概会话的数据包从分歧的接口收回的话,半途再经由分歧的链路,在客户端很有大概会呈现数据包无序抵达的成绩,而无序抵达的数据包必要从头请求被发送,如许收集的吞吐量就会下落。
3.2.2备份算法
该算法将多个网卡接口中的一个接口设定为举动形态,其他的接口处于备用形态。当举动接口大概举动链路呈现妨碍时,启动备用链路,因而可知此算法的长处是能够供应高收集毗连的可用性,可是它的资本使用率较低,只要一个接口处于事情形态,在有N个收集接口的情形下,资本使用率为1/N。
3.2.3MAC地点异或算法
该算法的次要头脑是:由服务器的MAC地点和客户真个MAC地点配合决意每一个数据包的发送端标语,由源MAC地点和目标MAC地点举行异或盘算,并将异或了局对接口数求余盘算。因为发送到统一个客户真个数据流经由统一个链路,因而数据包可以有序抵达客户端。此算法在只要一个客户机会见服务器大概服务器和客户机不在统一子网的情形下,由算法头脑得知这类情形下负载不会平衡,在只要一个客户机会见服务器的时分,资本的使用率也是1/N(N为接口数)。
一般在一个年夜的局域网内,常常存在多个子网。其拓扑布局以下所示:
局域网拓扑图
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(都是用二进制暗示)的最初两位不不异时,算法公式的盘算了局不相称,两个毗连的数据流从分歧的接口发送进来。
(3)关于分歧子网的两个TCP毗连来讲,假定主机号和毗连的目标号port号都不异,子网号分歧。设毗连1和毗连2地点的子网号分离为subnet1和subnet2,当二者的最初两位不不异时,算法公式的盘算了局不相称,此时两个毗连的数据流从分歧的接口发送进来。
上面思索有N个网卡接口的情形,在某个工夫段内从第i个接口发送的毗连数为(i=1,2,….N),第i个接口发送的第j个毗连的数据流为,则第i个网卡接口的负载是:
②式
当②式建立时,每一个接口的负载相对平衡,因为①式可以将毗连只管分派到分歧的接口,以是一样平常情形下==……,即每一个接口的毗连数相称,可是每一个毗连的数据流量纷歧定相称,也就是说②式纷歧定建立,依据统计道理,当客户机和服务器的毗连数充足年夜而且工夫充足长时,②式是建立的。
从下面对基于传输协定的负载平衡算法剖析来看,该算法不但在收集层而且传输层都完成了各个接口的负载平衡,且包管了数占有序抵达客户端成绩,同时资本的使用率也很高。
5测试了局举行考证剖析
测试软件情况:RedHat9.0(内核2.4.20)
测试硬件设置情况:一台服务器(CPU:PIV2.8G;内存:512M;两块撑持MII形态字存放器的百兆网卡,每一个有一个接口;一台客户机(设置和服务器一样);两台(一台也可)24口千兆互换机。测试软件为netpipe,使用此软件能够测试TCP协定功能,用它顺次来对轮转算法、MAC地点异或算法和基于传输协定的发送算法的收集延时和吞吐率。这里服务器用来发送数据,客户机用来吸收数据。
服务器发送方实行:
NPtcpCtCsCh172.19.11.130Cotest.pptCp
客户机承受方实行:
NPtcpCrCs
测试了局(测试了局为均匀值)如表一所示。
从测试了局能够得出结论:因为轮转算法复杂,盘算量小,收集提早也绝对小,而基于传输协定的发送算法盘算量绝对较多,收集延时也对照年夜。因为这里是双机对测,即只要一个客户端,一个服务器端,一切MAC地点异或算法每次盘算的了局也就独一,只要一个接口被利用,吞吐率最小。绝对来讲,基于传输协定的发送算法吞吐率要年夜一些。
表一测试了局
下面测试必要申明的是:测试中服务器仅设置了两块网卡,而且只要一台客户机会见服务器,当网卡接口和客户机增添时,此文先容的基于传输协定的发送算法的上风将会很分明。在一个对照年夜的局域网中多个客户机和服务器创建毗连对话时,接纳轮转算法的统一个毗连的数据包经由分歧的链路传送,无序抵达客户真个几率就会增添,重发的次数也增添,服务器吞吐率会下降。而基于传输协定的发送算法例不存在如许的成绩,此种情形下,服务器的吞吐率绝对增添。
6停止语
Linux的bonding手艺将多个网卡接口绑定在一同,利用多个接口发送数据,算法上完成了负载平衡和妨碍迁徙与接受。它是一种不合错误称得负载平衡手艺,今朝只是研讨了发送算法,承受算法另有待于进一步的研讨,今朝的链路手艺都是将网卡接口绑定在一同来进步服务器的收集功能,可是各类完成算法包含基于传输协定的发送算法并没有思索接口的速率,这一点有需要进一步改善。
</p>
当你经过一段时间的学习后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令。 Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。 为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。? 下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。 然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。 得到到草率的回答或者根本得不到任何Linux答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。 通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。 众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。
页:
[1]