当前位置:首页 >>新应用 >> 2007年12月07日

负载均衡软件实现方式

推荐者:地中海 (积分 3987) | 原作者:胭脂熊
负载均衡软件实现方式之一 - URL重定向方式 有一种用软件实现负载均衡的方式,是基于"URL重定向"的. 先看看什么是URL重定向: "简单的说,如果一个网站有正规的URL和别名URL,对别名URL进行重定向到正规URL,访问同一个网址,或者网站改换成了新的域名则把旧的域名重定向到新的域名,都叫URL重定向" (http://www.focuschina.com/service/host_faq.php) "很多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个URL上。" (http://sysapp.51cto.com/art/200604/25388.htm) 这种方式,对于简单的网站,如果网站是自己开发的,也在一定程度上可行.但是它存在着较多的问题: 1、“例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送Location指令,Location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。” 2、在哪里放LOCATION,也是一个问题。很有可能用户会访问系统的很多个不同URL,这个时候做起来会非常麻烦。并且,对URL的访问,有的时候是直接过来的,可以被重定向,有的时候是带着SESSION之类的,重定向就可能会出问题。并且,这种做法,将负载均衡这个系统级的问题放到了应用层,结果可能是麻烦多多。 3、这种方式一般只适用于HTTP方式,但是实际上有太多情况不仅仅是HTTP方式了,特别是用户如果在应用里面插一点流媒体之类的。 4、重定向的方式,效率远低于IP隧道。 5、这种方式,有的时候会伴以对服务器状态的检测,但往往也是在应用层面实现,从而实时性大打折扣。 实际上,这种方式是一种“对付”的解决方法,并不能真正用于企业级的负载均衡应用(这里企业级是指稍微复杂一点的应用系统) 可以看一下专业的负载均衡软件是如何来实现的:http://www.ha999.com/pcl/pcl_sis_theory.htm 对比一下可以发现,专业的负载均衡软件要更适用于正规应用,而重定向方式则比较适用于一些简单的网站应用。 负载均衡软件实现方式之二 - 基于DNS 讲到负载均衡,几乎所有地方都必须要讲一下基于DNS的方式,因为这实在是最基本、最简单的方式了。当然,也几乎所有地方都说到这种方式的种种缺点,不过,既然很基本,就还是要说明一下。 下面这段讲得很清楚:    最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。    DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的客户计算机能均匀获得不同的地址。由于DNS数据具备刷新时间标志,一旦超过这个时间限制,其他DNS服务器就需要和这个服务器交互,以重新获得地址数据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过期时间设置得过短,将使DNS流量大增,而造成额外的网络问题。DNS负载均衡的另一个问题是,一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。    尽管存在多种问题,但它还是一种非常有效的做法,包括Yahoo在内的很多大型网站都使用DNS。   引自:负载均衡技术研究   原文:http://www.ha999.com/loadbalance/lb_tech.htm   比较一下DNS方式与专业的负载均衡软件如PCL负载均衡软件,会发现DNS的问题在于,一是往往不能根据系统与服务的状态来判断负载,二是往往不能建立较复杂的负载均衡算法,而最主要的是DNS往往有缓存,简单分配负载问题不大,如果是应用集群这个就是无法接受的。   那么,为什么象Yahoo在内的大型网站都使用DNS方式呢?因为对于门户网站来讲,应用形态单一且简单,重要的是服务器数量与分布,而如果出现短时间对于少量用户的服务中断问题并不大(比如有100台服务器,有一台不行了,即使DNS有缓存,也关系不大,用户重新刷一下,就很可能又分配到其他机器上了)。   但是,对于应用系统而言,比如两三台服务器,跑着比较复杂的应用,DNS方式就完全不适合了,这个时候,就要用专业的负载均衡软件了。   我们可以看一个实例,这样会对专业化负载均衡软件应该支持什么样的应用有更多的理解:36000人同时应用的负载均衡实例 负载均衡软件实现方式之三 - LVS LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡. 后面所附文章,讲述了LVS实现负载均衡的方法. 因为文章较长,所以在转载前,先总结一下LVS的优缺点: 优点: 1、开源,免费 2、在网上能找到一些相关技术资源 3、具有软件负载均衡的一些优点 缺点: 1、具有开源产品常有的缺点,最核心的就是没有可靠的支持服务,没有人对其结果负责 2、功能比较简单,支持复杂应用的负载均衡能力较差,如算法较少等。 3、开启隧道方式需重编译内核 4、配置复杂 5、只支持LINUX,如果应用还包括WINDOWS、SOLIRIS等就不行了 因此,建议在简单的LINUX应用中使用LVS,复杂的应用,或者重要的应用,还是应该使用专业的负载均衡软件,如富士通西门子公司的PCL负载均衡软件。 下面转载一下如何使用LVS实现负载均衡: 搭建集群负载均衡系统 (原文:http://www.xxlinux.com/linux/artic ... p/20060707/2519.html)   负载均衡集群是在应用服务器高负载的情况下,由多台节点提供可伸缩的,高负载的服务器组以保证对外提供良好的服务响应;而LVS就是实现这一功能的技术.实际上LVS是一种Linux操作系统上基于IP层的负载均衡调度技术,它在操作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的服务器,从而将一组服务器构成一个高性能、高可用的虚拟服务器。使用三台机器就可以用LVS实现最简单的集群,如图1所示。 图1 LVS实现集群系统结构简图 图1显示一台名为Director的机器是前端负载均衡器,运行LVS,目前只能在Linux下运行.可以针对web、ftp、cache、mms甚至mysql等服务做load balance;后端两台机器称之为Real Server,是需要负载均衡的服务器,可以为各类系统,Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也可以作为Real Server. 本文将通过实际操作,重点介绍如何在Redhat 9上用LVS构建一个负载均衡集群,关于负载均衡集群、LVS的详细内容,可参考如下信息: http://www.linuxvirtualserver.org/ http://www-900.ibm.com/developerWorks/ ... r/lvs/part1/index.shtml 安装LVS RedHat在 9.0以后,就将ipvsadm这些套件去除,因此如果想使用LVS(Linux Virtual Server),就得自己重新编译核心(kernel)。 下载所需软件 下载ipvs补丁包 从RedHat 9开始ipvs不再被预先编译到了RedHat发行版的内核中,我们需要从http://www.linuxvirtualserver.org/software/kernel-2.4下载新版的ipvs, 这里我们使用ipvs-1.0.9.tar.gz这个版本. 下载内核linux-2.4.20.tar.gz 这里需要强调的是由于所有的ipvs的补丁包都是为标准内核开发的,所以安装ipvs时不能使用RedHat光盘中的Kernel Source,而是需要去下载标准的内核。所以我们从ftp://ftp.kernel.org/pub/linux/kernel/ 得到standard kernel linux-2.4.20.tar.gz 下载ipvs管理工具ipvsadm 从http://www.linuxvirtualserver.org/ 得到ipvs管理工具ipvsadm-1.21.tar.gz, ipvsadm是设置ipvs转发方式和调度算法的工具. 开始安装 安装内核源码 把linux-2.4.20.tar.gz解压到/usr/src目录,生成了/usr/src/linux目录;如果生成的是/usr/src/linux-2.4.20目录,则要在/usr/src下建立一个连接 ln –s linux-2.4.20 linux,因为在ipvs-1.0.9中的makefile文件中默认指定Kernel Source的路径为:KERNELSOURCE = /usr/src/linux 把ipvs补丁Patch到内核源码中 把ipvs-1.0.9.tar.gz解压缩到某个目录,如/test,生成了/test/ipvs-1.0.9目录;进入/test/ipvs-1.0.9,依次执行如下命令:make patchkernel、make installsource,将ipvs的Patch加载到kernel的source中。 重新编译支持ipvs的内核 进入/usr/src/linux目录,分别执行: make mrproper 为创建新的内和配置做好准备 make menuconfig 进行配置 这里请确保IP:Virtual Server Configuration中的选项设定都用M make dep 检测是否有相关的软件包被使用 make clean 为新内核结构准备源目录树 make bzImage 创建内核引导映像 make modules、make modules_install 生成模块 make install安装新的内核到指定位置并重新配置grub.conf 到这里新内核就安装完毕了,请重启并用此内核引导系统 安装ipvs管理工具ipvsadm 当使用新内核启动后,就可以安装ipvsadm: tar xzvf ipvsadm-1.21.tar.gz cd ./ipvsadm-1.21 make make install 安装完成后,执行ipvsadm命令,如果有如下信息出现则说明安装成功了。 [root@leon c]# ipvsadm IP Virtual Server version 1.0.9 (size=65536) Prot LocalAddress:Port Scheduler Flags ->; RemoteAddress:Port Forward Weight ActiveConn InActConn 到现在为止,支持负载均衡功能的director就安装成功了,接下来我们可以通过ipvsadm来配置一个负载均衡集群。 构建负载均衡集群 这里我们假设局域网中有两台FTP服务器,IP分别为FTP1:10.83.33.103,FTP2: 10.83.33.2 所提供的资料都是相同的,这可以通过无密码SSH登录+RSYNC来保证数据一致,这非本文中电,故而略过.我们提供给用户的虚拟IP是10.83.33.100,而在后台为这两台FTP服务器实
[ 关键词:负载均衡 URL重定向方式 DNS  原文/来源链接 ]


1楼楼长: (抢沙发奖牌 ) 在 2009-09-14 13:21:02 评价道:
顶一个呀.3727381
验证码:
                 
1、请不要在评论中发广告,如需增加外链请注册成个人会员试用个人签名与自助广告。
2、把《负载均衡软件实现方式》推荐给您的好友