负载均衡软件实现与硬件实现方案Word文件下载.docx

上传人:b****2 文档编号:3641071 上传时间:2023-05-02 格式:DOCX 页数:13 大小:23.42KB
下载 相关 举报
负载均衡软件实现与硬件实现方案Word文件下载.docx_第1页
第1页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第2页
第2页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第3页
第3页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第4页
第4页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第5页
第5页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第6页
第6页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第7页
第7页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第8页
第8页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第9页
第9页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第10页
第10页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第11页
第11页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第12页
第12页 / 共13页
负载均衡软件实现与硬件实现方案Word文件下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

负载均衡软件实现与硬件实现方案Word文件下载.docx

《负载均衡软件实现与硬件实现方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《负载均衡软件实现与硬件实现方案Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。

负载均衡软件实现与硬件实现方案Word文件下载.docx

④、所有的真实服务器通过SNATIP地址61。

4访问互联网。

2软件负载均衡方案

1负载均衡软件实现方式之一—URL重定向方式

有一种用软件实现负载均衡的方式,是基于"

URL重定向”的.

先看看什么是URL重定向:

"

简单的说,如果一个网站有正规的URL和别名URL,对别名URL进行重定向到正规URL,访问同一个网址,或者网站改换成了新的域名则把旧的域名重定向到新的域名,都叫URL重定向"

很多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个URL上.”

(http:

//sysapp.

这种方式,对于简单的网站,如果网站是自己开发的,也在一定程度上可行。

但是它存在着较多的问题:

1、“例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送Location指令,Location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环.”

2、在哪里放LOCATION,也是一个问题。

很有可能用户会访问系统的很多个不同URL,这个时候做起来会非常麻烦。

并且,对URL的访问,有的时候是直接过来的,可以被重定向,有的时候是带着SESSION之类的,重定向就可能会出问题。

并且,这种做法,将负载均衡这个系统级的问题放到了应用层,结果可能是麻烦多多。

3、这种方式一般只适用于HTTP方式,但是实际上有太多情况不仅仅是HTTP方式了,特别是用户如果在应用里面插一点流媒体之类的。

4、重定向的方式,效率远低于IP隧道.

5、这种方式,有的时候会伴以对服务器状态的检测,但往往也是在应用层面实现,从而实时性大打折扣.

实际上,这种方式是一种“对付”的解决方法,并不能真正用于企业级的负载均衡应用(这里企业级是指稍微复杂一点的应用系统)可以看一下专业的负载均衡软件是如何来实现的:

http:

//www。

对比一下可以发现,专业的负载均衡软件要更适用于正规应用,而重定向方式则比较适用于一些简单的网站应用。

 

2负载均衡软件实现方式之二—基于DNS

负载均衡集群网络拓扑图

讲到负载均衡,几乎所有地方都必须要讲一下基于DNS的方式,因为这实在是最基本、最简单的方式了。

当然,也几乎所有地方都说到这种方式的种种缺点,不过,既然很基本,就还是要说明一下。

下面这段讲得很清楚:

最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。

DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态.当使用DNS负载均衡的时候,必须尽量保证不同的客户计算机能均匀获得不同的地址。

由于DNS数据具备刷新时间标志,一旦超过这个时间限制,其他DNS服务器就需要和这个服务器交互,以重新获得地址数据,就有可能获得不同IP地址。

因此为了使地址能随机分配,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过期时间设置得过短,将使DNS流量大增,而造成额外的网络问题.DNS负载均衡的另一个问题是,一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器.

尽管存在多种问题,但它还是一种非常有效的做法,包括Yahoo在内的很多大型网站都使用DNS。

引自:

负载均衡技术研究

原文:

//www.

比较一下DNS方式与专业的负载均衡软件如PCL负载均衡软件,会发现DNS的问题在于,一是往往不能根据系统与服务的状态来判断负载,二是往往不能建立较复杂的负载均衡算法,而最主要的是DNS往往有缓存,简单分配负载问题不大,如果是应用集群这个就是无法接受的。

那么,为什么象Yahoo在内的大型网站都使用DNS方式呢?

因为对于门户网站来讲,应用形态单一且简单,重要的是服务器数量与分布,而如果出现短时间对于少量用户的服务中断问题并不大(比如有100台服务器,有一台不行了,即使DNS有缓存,也关系不大,用户重新刷一下,就很可能又分配到其他机器上了)。

但是,对于应用系统而言,比如两三台服务器,跑着比较复杂的应用,DNS方式就完全不适合了,这个时候,就要用专业的负载均衡软件了。

我们可以看一个实例,这样会对专业化负载均衡软件应该支持什么样的应用有更多的理解:

36000人同时应用的负载均衡实例

2.3负载均衡软件实现方式之三—LVS

LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。

后面所附文章,讲述了LVS实现负载均衡的方法.

因为文章较长,所以在转载前,先总结一下LVS的优缺点:

优点:

1、开源,免费

2、在网上能找到一些相关技术资源

3、具有软件负载均衡的一些优点

缺点:

1、具有开源产品常有的缺点,最核心的就是没有可靠的支持服务,没有人对其结果负责

2、功能比较简单,支持复杂应用的负载均衡能力较差,如算法较少等。

3、开启隧道方式需重编译内核

4、配置复杂

5、只支持LINUX,如果应用还包括WINDOWS、SOLIRIS等就不行了

因此,建议在简单的LINUX应用中使用LVS,复杂的应用,或者重要的应用,还是应该使用专业的负载均衡软件,如富士通西门子公司的PCL负载均衡软件。

下面转载一下如何使用LVS实现负载均衡:

搭建集群负载均衡系统(原文:

http:

xxlinux。

com/linux/artic..。

p/20060707/2519.html)

  负载均衡集群是在应用服务器高负载的情况下,由多台节点提供可伸缩的,高负载的服务器组以保证对外提供良好的服务响应;

而LVS就是实现这一功能的技术。

实际上LVS是一种Linux操作系统上基于IP层的负载均衡调度技术,它在操作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的服务器,从而将一组服务器构成一个高性能、高可用的虚拟服务器。

使用三台机器就可以用LVS实现最简单的集群,如图1所示。

图1LVS实现集群系统结构简图

图1显示一台名为Director的机器是前端负载均衡器,运行LVS,目前只能在Linux下运行.可以针对web、ftp、cache、mms甚至mysql等服务做loadbalance;

后端两台机器称之为RealServer,是需要负载均衡的服务器,可以为各类系统,Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也可以作为RealServer.

本文将通过实际操作,重点介绍如何在Redhat9上用LVS构建一个负载均衡集群,关于负载均衡集群、LVS的详细内容,可参考如下信息:

//www.linuxvirtualserver。

org/

//www-900。

ibm。

com/developerWorks/。

..r/lvs/part1/index。

shtml 

安装LVS

RedHat在9。

0以后,就将ipvsadm这些套件去除,因此如果想使用LVS(LinuxVirtualServer),就得自己重新编译核心(kernel)。

下载所需软件

下载ipvs补丁包

从RedHat9开始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光盘中的KernelSource,而是需要去下载标准的内核。

所以我们从ftp:

//ftp。

kernel。

org/pub/linux/kernel/得到standardkernellinux-2。

4。

20.tar.gz 

下载ipvs管理工具ipvsadm

从http:

linuxvirtualserver。

org/得到ipvs管理工具ipvsadm-1。

21。

tar.gz,ipvsadm是设置ipvs转发方式和调度算法的工具。

开始安装

安装内核源码

把linux-2。

20。

tar.gz解压到/usr/src目录,生成了/usr/src/linux目录;

如果生成的是/usr/src/linux—2。

4.20目录,则要在/usr/src下建立一个连接ln–slinux-2.4.20linux,因为在ipvs—1.0。

9中的makefile文件中默认指定KernelSource的路径为:

KERNELSOURCE=/usr/src/linux 

把ipvs补丁Patch到内核源码中

把ipvs—1.0.9。

tar。

gz解压缩到某个目录,如/test,生成了/test/ipvs-1。

9目录;

进入/test/ipvs—1.0。

9,依次执行如下命令:

makepatchkernel、makeinstallsource,将ipvs的Patch加载到kernel的source中.

重新编译支持ipvs的内核 

进入/usr/src/linux目录,分别执行:

makemrproper为创建新的内和配置做好准备 

makemenuconfig进行配置 

这里请确保IP:

VirtualServerConfiguration中的选项设定都用M 

makedep检测是否有相关的软件包被使用 

makeclean为新内核结构准备源目录树 

makebzImage创建内核引导映像 

makemodules、makemodules_install生成模块

makeinstall安装新的内核到指定位置并重新配置grub.conf

到这里新内核就安装完毕了,请重启并用此内核引导系统

安装ipvs管理工具ipvsadm 

当使用新内核启动后,就可以安装ipvsadm:

tarxzvfipvsadm—1。

21.tar.gz 

cd./ipvsadm-1。

21 

make 

makeinstall 

安装完成后,执行ipvsadm命令,如果有如下信息出现则说明安装成功了。

[root@leonc]#ipvsadm

IPVirtualServerversion1。

9(size=65536)

ProtLocalAddress:

PortSchedulerFlags

—〉;

RemoteAddress:

Port 

ForwardWeightActiveConnInActConn

到现在为止,支持负载均衡功能的director就安装成功了,接下来我们可以通过ipvsadm来配置一个负载均衡集群。

构建负载均衡集群 

这里我们假设局域网中有两台FTP服务器,IP分别为FTP1:

10。

83.33.103,FTP2:

10.83。

33.2

所提供的资料都是相同的,这可以通过无密码SSH登录+RSYNC来保证数据一致,这非本文中电,故而略过.我们提供给用户的虚拟IP是10.83。

33。

100,而在后台为这两台FTP服务器实行LVS负载均衡的服务器的IP是10。

83.33。

83。

这三台均安装RedHat9系统.

我们最终要实现的目标是当用户输入ftp10。

83.33.100时,LVS负载均衡服务器系统会根据当时的负载情况,依据轮换策略来决定RealServer到底是FTP1还是FTP2,从而使得整个FTP服务器的负载到达均衡。

目前LVS有三种负载平衡方式,NAT(NetworkAddressTranslation),DR(DirectRouting),IPTunneling。

其中,最为常用的是DR方式,因此这里只说明DR(DirectRouting)方式的LVS负载平衡.其它两种的详细情况请参考LVS—HOWTO。

Director(即10.83.33。

83)上执行的设置

为了方便我们将所有步骤写成一个shellscript.

#!

/bin/bash

echo"

0"

〉;

/proc/sys/net/ipv4/ip_forward(关闭ip_forward)

1”〉;

/proc/sys/net/ipv4/conf/all/send_redirects(开启ICMPRedirects)

1”〉;

/proc/sys/net/ipv4/conf/default/send_redirects(开启ICMPRedirects)

1"

〉;

/proc/sys/net/ipv4/conf/eth0/send_redirects 

(开启ICMPRedirects)

ifconfigeth0:

10010.83.33.100broadcast10.83.33.100netmask255。

255.255。

255

(设置虚拟IP)

routeadd-host10。

83.33.100deveth0:

100(设置达到虚拟Ip的路由)

ipvsadm–C(清空ipvsadmtable)

ipvsadm-A-t10.83.33。

100:

21—swrr(建立servicerule,当前调度算法为加权轮叫调度)

ipvsadm-a—t10.83。

21—r10.83。

76—g—w3(建立转发规则)

ipvsadm—a-t10.83。

21-r10。

2—g—w1 

(建立转发规则)

ipvsadm(检查当前ipvsadmtable)

将此shellscript加入到/etc/rc.local中,这样在每次系统启动时都可以自动运行进行设置了。

Realserver(即10。

33.2和10.83.33.76)上的设置

这里我们必须先修正realserver上arpproblem.这是因为在使用VS/DR的时候,realserver会在一块网卡上绑定两个IP,但linux在kernel2.2.14以后就将eth0:

1的NOARPFLAG关闭,这使得eth0:

1仅仅是eth0的别名,任何对eth0:

1的操作都对eth0有效,因此如果此时使eth0:

1NOARP,则也使得eth0NOARP,这样整个网卡都不会收到数据包,具体的说就是因为我所有的机器都放在同一个网段,当该网段的Router接收到用户对虚拟IP的TCPconnection要求(即使用FTP登录服务器)时,会先在网段中利用Arprequest询问谁有VIP的地址,而包含Director与RealServers上所有的interface,只要他有那个ip,都会发送arpreply回去,造成网段内所有拥有VirtualIP的interface都会reply给Router,最后结果就是看谁的速度快,Router就将该封包送给谁,如此会造成LVS的Server并无法发挥其效果,而我们所希望的是只有Director上的VirtualIP发送arpreply回去,因此需要利用hidden这个pattch,将realserver上的VirtualIP给隐藏起来,如此他就不会对ArpRequest进行Reply,就可以解决ARP的问题.具体步骤是:

下载所需的软件包 

从http:

ssi.bg/~ja/得到hidden修正包,不同的核心使用相应的版本。

请参考下表

PatchLinux2.4Created

hidden-2.4。

28-1。

diff 

2.4.28-2.4.30 

November18,2004 

hidden-2。

26—1。

2.4。

26-2。

27 

February28,2004 

25-1.diff 

25 

February19,2004 

hidden—2。

4.20pre10-1.diff 

2。

4.20pre10-2.4.24 

October12,2002 

19pre5-1。

19pre5—2。

20pre9 

April7,2002 

hidden—2.4.5-1.diff 

2.4.5-2.4.19pre4 

June2,2001 

hidden-2.4.4-1.diff 

2.4.4 

April29,2001 

PatchLinux2。

6Created

6。

9-1.diff 

9-2.6。

11 

October19,2004 

4-1.diff 

4-2.6。

March12,2004 

hidden-2.6.3-1.diff 

5.67—1。

5.67—2.6.2 

April9,2003 

本例使用的内核版本是2.4。

20-8,因此下载hidden—2。

4.20pre10—1.diff

重新编译内核,修正arpproblem 

把hidden—2.4.20pre10—1。

diff放到/usr/src/linux下,用命令

patch—p1〈hidden-2。

4.20pre10—1.diff对kernel进行patch 

进入/usr/src/linux目录,分别执行:

makeinstall安装新的内核到指定位置并重新配置grub.conf

设置Realserver

echo”0”>

;

ifconfiglo:

10010。

100broadcast10.83.33.100netmask0xffffffffup(设置虚拟IP)

33.100devlo:

echo”1"

>

/proc/sys/net/ipv4/conf/all/hidden(开启No—ARP)

/proc/sys/net/ipv4/conf/lo/hidden 

(开启No-ARP)

测试

为了使得我们清楚地知道访问的是那一台FTP服务器,我们在FTP1上编辑/etc/vsftpd/vsftpd。

conf,设置ftpd_banner=WelcometoFTP1server,在FTP2设置ftpd_banner=WelcometoFTP2server,设置完毕后重启服务。

现在在另一台客户机开几个终端,依次输入ftp10.83。

33.100,我们可以从欢迎词上看到,每次登录的FTP服务器都不是固定的,它会在FTP1和FTP2上互相交替,试验成功!

2.4负载均衡软件实现方式之四—专业负载均衡软件

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2