用apache和tomcat搭建集群,实现负载均衡_第1页
用apache和tomcat搭建集群,实现负载均衡_第2页
用apache和tomcat搭建集群,实现负载均衡_第3页
用apache和tomcat搭建集群,实现负载均衡_第4页
用apache和tomcat搭建集群,实现负载均衡_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务 器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透 明化呢?由如下问题需要解决。一. Session的复制二. 如何将请求发送到正常的服务器针对以上问题,可以使用群集和负载均衡来解决,整体架构如下:来自:)中间由一台服务器做负载均衡(Load Balancer),它将所有请求,根据一定的负载均衡规则发送给指定的群集服务器(Cluster),群集服务器拥有着相同的状态和相同的应用程序,并且他们的Session是相互复制的,这样,不管访问哪台服务器都具有相同的结果

2、,即使一台服务器崩溃掉以后,可以由其他集群服务器继续 负责应用程序的运行。Tomcat中如何配置群集 我们假设有如下场景,一台负载均衡服务器负责请求的均 衡,群集服务器A和群集服务器B组成一个群集,当某个群集服务器崩溃后,另外一台继续负责应用程序 的运行。一. 配置Tomcat5.5.12群集服务器 A修改Tomcat配置文件server.xml1 .群集服务器 A的端口号与 B不冲突,即使Server Port,Connector,Coyote/JK2 AJP Connector的端口号唯一2. 在Host元素下增加以下内容:<Cluster className="org.a

3、pache.catalina.cluster.tcp.SimpleTcpCluster"managerClassName="org.apache.catalina.cluster.session.DeltaManager"expireSessiuseDirtyFlag="true"notifyListeners><!-每个群集服务器都需要有相同的Membership配置-><MembershipclassName="org.apache.catalina.cluster.mcast.McastService&q

4、uot;mcastAddr="”mcastPort="45564"mcastFrequency="500"mcastDropTime="3000"/><!-tcpListenAddress :本机IP地址服务器将此地址广播给其他群集服务器-><ReceiverclassName="org.apache.catalina.cluster.tcp.ReplicationListener"tcpListenAddress="45”tcpLi

5、stenPort="4001"tcpSelectorTimeout="100"tcpThreadCount="6"/><SenderclassName="org.apache.catalina.cluster.tcp.ReplicationTransmitter"replicatiackTimeout="15000"waitForAck="true"/><Valve className="org.apache.catalina.cluster

6、.tcp.ReplicationValve"filter=".*.gif;.*.js;.*.jpg;.*.png;.*.htm;.*.html;.*.css;.*.txt;"/><Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"

7、;watchEnabled="false"/><ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/></Cluster>3.修改 Web应用程序配置文件 web.xml在web.xml文件中<web-app>元素下增加以下内容:<!-此应用将与群集服务器复制Session-<distributable/>二. 配置Tomcat5.5.12群集服务器 B与群集服务器A配置基本

8、相同,唯一不同的地方就是server.xml文件中<ReceiverclassName="org.apache.catalina.cluster.tcp.ReplicationListener"tcpListenAddress="45”tcpListenPort="4002"tcpSelectorTimeout="100"tcpThreadCount="6”/>tcpListenAddress应为本机地址,如果两台群集服务器在一台机器上,则端口号要不同 注意:B的其他端口不要与 A冲

9、突。三. 群集服务器具体配置结果配置参数群集服务器A群集服务器BServer Port900510005Connector908010080Coyote/JK2 AJP Connector900910009Cluster mcastAddr228,0. 0. 4228. 0. 0. 4Cluster mcastPort4556445564tcpListenAddress本机IP弛址本机IP地址Cluster tcpListenPort40014002Mcast*用于广播,所有群集服务器需要填写相同的配置tcpListen*本机的IP,群集服务器启动时,会将自己的 IP和端口号广播出去,其他群集

10、服务器收到后,响 应广播发出者。四. 测试群集启动群集服务器A,再启动群集服务器 B会显示群集服务器的信息,表示群集服务器配置成功五. 配置负载均衡服务器Apache2.2.3现在虽然群集已经有了相同的状态,但需要不同的IP地址才能访问到服务器A与B,现在我们配置一台负载均衡服务器来实现统一的入口访问,和负载的均衡。下载Apache服务器2.2.3。修改httpd.conf文件将以下Module的注释去掉LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_balancer_module modules/mod_proxy_b

11、alancer.soLoadModule proxy_http_module modules/mod_proxy_http.so并增加以下元素ProxyRequests OffProxyPass /helloworld balancer:/mycluster stickysession=jsessionid nofailover=On<Proxy balancer:/mycluster>BalancerMember 45:9080/helloworldBalancerMember 45:10080/helloworld

12、 smax=1 loadfactor=20</Proxy><Location /balancer-manager>SetHandler balancer-managerOrder Deny,AllowDeny from allAllow from all</Location><Location /server-status>SetHandler server-statusOrder Deny,AllowDeny from allAllow from all</Location>其中ProxyPass /helloworld balan

13、cer:/mycluster stickysession=jsessionid nofailover=On<Proxy balancer:/mycluster>BalancerMember 45:9080/helloworldBalancerMember 45:10080/helloworld smax=1 loadfactor=20</Proxy>ProxyPass为代理转发的 Url,即将所有访问/helloworld的请求转发到群集 balancer:/myclusterBalancerMember为

14、群集的成员,即群集服务器A或B,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember o(可以同时配置几个站点)配置好后,启动 Apahce服务器,访问localhost/hellworld就会看到群集服务器中应用返回的结果。恭喜你, 负载均衡和群集已经配置成功了。、集群和负载均衡的概念(一)集群的概念集群(Cluster )是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障 恢复能力。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群

15、集节点都是 运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统, 协同起来向用户提供应用程序、系统资源和数据。除了作为单一系统提供服务,集群系统还具有恢复服务 器级故障的能力。集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并 通过系统级的冗余提供固有的可靠性和可用性。(二)集群的分类1、高性能计算科学集群:以解决复杂的科学计算问题为目的的IA集群系统。是并行计算的基础,它可以不使用专门的由十至上万个独立处理器组成的并行超级计算机,而是采用通过高速连接来链接的一组1/2/4 CPM勺IA服务器,并且在公共消息传递层上进行通信以运

16、行并行应用程序。这样的计算集群,其处理能力与真正超级并行机相 等,并且具有优良的性价比。2、负载均衡集群:负载均衡集群为企业需求提供更实用的系统。该系统使各节点的负载流量可以在服务器集群中尽可能 平均合理地分摊处理。该负载需要均衡计算的应用程序处理端口负载或网络流量负载。这样的系统非常适 合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态分配负 载,以实现平衡。对于网络流量也如此。通常,网络服务器应用程序接受了大量入网流量,无法迅速处理, 这就需要将流量发送给在其它节点。负载均衡算法还可以根据每个节点不同的可用资源或网络的特殊环境 来进行优化。3、高可用性集

17、群:为保证集群整体服务的高可用,考虑计算硬件和软件的容错性。如果高可用性群集中的某个节点发生 了故障,那么将由另外的节点代替它。整个系统环境对于用户是一致的。实际应用的集群系统中,这三种基本类型经常会发生混合与交杂。(三)典型集群科学计算集群:1、Beowulf当谈到Linux 集群时,许多人的第一反映是 Beowulf。那是最著名的Linux科学软件集群系统。实际上, 它是一组适用于在Linux内核上运行的公共软件包的通称。其中包括流行的软件消息传递API ,如“消息传送接口 ”(MPI)或“并行虚拟机” (PVM),对 Linux内核的修改,以允许结合几个以太网接口、高性能 网络驱动器,对

18、虚拟内存管理器的更改,以及分布式进程间通信(DIPC)服务。公共全局进程标识空间允许使用DIPC机制从任何节点访问任何进程。2、MOSIXBeowulf类似于给系统安装的一个支持集群的外挂软件,提供了应用级的集群能力。而MOSIX是彻底修改Linux的内核,从系统级提供了集群能力,它对应用而言是完全透明的,原有的应用程序,可以不经改动, 就能正常运行在 MOSIX系统之上。集群中的任何节点都可以自由地加入和移除,来接替其它节点的工作, 或是扩充系统。MOSIX使用自适应进程负载均衡和内存引导算法使整体性能最大化。应用程序进程可以在 节点之间实现迁移,以利用最好的资源,这类似于对称多处理器系统可

19、以在各个处理器之间切换应用程序。由于MOSIX!过修改内核来实现集群功能,所以存在兼容性问题,部分系统级应用程序将无法正常运行。负载均衡/高可用性集群3、LVS ( Linux Virtual Server )这是一个由国人主持的项目。它是一个负载均衡/高可用性集群,主要针对大业务量的网络应用(如新闻服务、网上银行、电子商务等), LVS是建立在一个主控服务器(通常为双机)(director )及若干真实服务器(real-server )所组成的集群 之上。real-server负责实际提供服务,主控服务器根据指定的调度算法对real-server 进行控制。而集群的结构对于用户来说是透明的,

20、客户端只与单个的IP (集群系统的虚拟IP)进行通信,也就是说从客户端的视角来看,这里只存在单个服务器。N54537Real-server 可以提供众多服务,如 ftp, http, dns, telnet, nntp, smtp等。主控服务器负责对Real-Server进行控制。客户端在向 LVS发出服务请求时,Director会通过特定的调度算法来指定由某个 Real-Server来应答请求,而客户端只与Load Balancer的IP (即虚拟IP , VIP)进行通信。其他集群:现在集群系统可谓五花八门,绝大部分的OS开发商,服务器开发商都提供了系统级的集群产品,最典型的是各类双机系统

21、,还有各类科研院校提供的集群系统。以及各类软件开发商提供的应用级别的集群系统, 如数据库集群,Application Server 集群,Web Server集群,邮件集群等等。(四) 负载均衡1、概念由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和 计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量 的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬 件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。针对此情况而衍生出来的一种廉价有效透明的方法以

22、扩展现有网络设备和服务器的带宽、增加吞吐量、力口 强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡( Load Balance )。2、特点和分类负载均衡(Server Load Balance)一般用于提高服务器的整体处理能力,并提高可靠性,可用性,可维护性,最终目的是加快服务器的响应速度,从而提高用户的体验度。负载均衡从结构上分为本地负载均衡(Local Server Load Balance)和地域负载均衡(Global ServerLoad Balance)(全局负载均衡),一是指对本地的服务器群做负载均衡,另一是指对分别放置在不同的地理 位置、有不同的网络及服务器群之间

23、作负载均衡。地域负载均衡有以下的特点:(1) 解决网络拥塞问题,服务就近提供,实现地理位置无关性(2) 对用户提供更好的访问质量(3) 提高服务器响应速度(4) 提高服务器及其他资源的利用效率(5) 避免了数据中心单点失效3、负载均衡技术主要应用(1) DNS负载均衡 最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因 而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前 运行状态。(2) 代理服务器负载均衡 使用代理服务器,可以将请

24、求转发给内部的服务器,使用这种加速模式显然可 以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服 务器,从而达到负载均衡的目的。(3) 地址转换网关负载均衡支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。(4) 协议内部支持负载均衡除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能, 例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层。(5) NAT负载均衡 NAT (Network Address Translation网络地址转

25、换)简单地说就是将一个 IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP 地址间进行转换。适用于解决Internet IP 地址紧张、不想让网络外部知道内部网络结构等的场合下。(6) 反向代理负载均衡普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必 须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy )方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给interne

26、t上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。(7) 混合型负载均衡 在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差 异,我们可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均 衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳 的性能。我们将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量 连接请求的情况下。

27、二、搭建集群和实现负载平衡(一) 前期准备我的系统用的是 windowsXP专业版,我要做的是,用一个 apache和多个(这里以两个作为示例)tomcat ,通过jk方式,构造一个集群。以下是要首先准备的东西:1、jdk,我用的版本是jdk1.5.0_06 ,下载地址是 16/ECom/EComTicketServlet/BEGIND597A309654D73D910E051D73D539D5F/-21474836 48/2438196255/1/852050/851882/2438196255/2ts+/westCoastFSEND/jdk-1.5.0_

28、13-oth-JPR/jdk-1.5.0_ 13-oth-JPR:3/jdk-1_5_0_13-windows-i586-p.exe2、 apache,我用的版本是2.2.4 ,下载地址是 /httpd/binaries/win32/apache_2.2.4-win32-x86-openssl-0.9.8d.msi3、 tomcat,我用的版本是5.5的解压版本,这里要注意:不能用安装的版本,因为一台机器上装两个一样 的tomcat ,是会出错误的。下载地址是http:/apache.mirror.phpchina.cOm/tomcat/tomca

29、t-5/v5.5.25/bin/apache-tomcat-5.5.25.zip4、 jk,这个jk的版本,本来有两个的,但是版本 2已经被废弃掉了,目前可用的 jk版本是1.2.25。每 个apache的版本,都会有一个特定的 jk与之对应,所以这里要用的 jk也必须是为apache-2.2.4 开发的 那个才行。它的下载地址是http:/www.apache.Org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.25/mod_jk-apach e-2.2.4.so有了这四样东西,我们就可以开始做集群了。(二)安装1、 相信需要

30、看这篇文章的人,JDK的安装一定不会陌生,这里不在赘述。只是需要提醒一下:环境变量别 忘记配置了。2、安装apache也没有什么难度,就是在安装过程中要配置域名、网址和管理员邮箱之类的信息,这个信息完全可以按照提示,然后修改下填入即可,之后想修改的话直接到配置文件中改就行了。除了这个地方,还要保证机器上的80端口没有被其他程序占用。至于安装路径,完全取决于个人爱好。其他的默认就行了。安装成功后,系统右下角的托盘区会有个图标,我们可以通过这个启动 apache,如果那个小红点变成绿色,说明服务已经正常启动了(如果服务没有启动起来,说明安装过程中的配置有错误,建议卸载后重装)。如果按照默认,端口是

31、80的话,那打开浏览器,输入:http:/localhost/ ,应该可以看到”It works "的 字样。这样就可以进入下一步了。3、 解压缩tomcat ,记得要做两份。这里不妨将两个 tomcat命名为:tomcat-5.5.25_1 和tomcat-5.5.25_2 , 其实这两个文件夹中的东西是完全一样的。但是我为了在同一台机器上做集群,那就要保证两个tomcat运行起来不会在端口上起冲突。进入 tomcat-5.5.25_1/conf目录,用文本编辑器打开并修改server.xml ,将该tomcat的默认8080端口改为8088 (其实没必要改,我改这个是因为我机器上

32、还有其他tomcat占用着8080端口)。然后进入tomcat-5.5.25_2/conf 目录,同样将8080修改掉,至于改成多少没多大关系, 只要不占用其他程序的端口,应该不会出什么问题。这样, tomcat就算安装好了。4、 jk这东西是一个连接模块,不用安装,直接将 mod_jk-apache-2.2.4.so这个文件拷贝到 apache安装 目录下的modules文件夹下面就行了。这样,安装完成,下面开始配置(三) 配置这个地方才是搭建集群的关键所在,我也会尽我的可能写的详细点。1、配置 tomcat为防止冲突,进入第二个tomcat主目录,然后进入conf目录,打开server.x

33、ml修改配置。主要是修改端 口,我这里把所有的端口信息,都在原有基础上加1000,即原端口是8009,我改为9009o当然,你不必和我一样,只要保证不冲突就 OK这些配置在apache的配置中可能会用到。2、酉己置 apache(1)进入apache的主目录,然后进入 conf文件夹,用文本编辑器打开httpd.conf ,在该文件末尾加上如下几行:#加载 mod_jk 模块LoadModule jk_module modules/mod_jk-apache-2.2.4.so加载集群中的 workers加载workers的请求处理分配文件指定jk的日志输出文件指定日志级别# 配置 mod_jk

34、JkWorkersFile conf/perties #JkMountFile conf/perties #JkLogFile logs/mod_jk.log#JkLogLevel warn#(2)不要改变目录,新建一个文件: 容如下:perties,该文件用来配置 web容器的信息。该文件的内# worker 列表 worker.list=controller, status #第一个server的配置,server名为s1#ajp13 端口号,在 tomcat 下 server.xml配置,默认 8009worker.s1.port=8009#tomcat的主机地址,如不为本机,请填写 ip地址worker.s1.host=localhostworker.s1.type=ajp13#server的加权比重,值越高,分得的请求越多worker.s1.lbfactor=1#第二个server的配置,server名为s2worker.s2.port=9009worker.s2.host=localhostworker.s2.type=ajp13worker.s2.lbfactor=1#server名为controller

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论