您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程tomcatapache负载均衡linux服务器最近在开发的项目需要承受很高的并发量。综合各种情况,决定使用Apache+Tomcat+JK的方式实现负载均衡,并且作为一个统一的服务还要实现群集(同步Session)。在网上找了很多资料,都是零零散散的,没有一个完整的过程。通过几天的努力,完成了从编译、部署到配置的整个过程,期间也遇到了一些问题。在接下来的文字中将这些过程记录下来,做个笔记同时也分享给大家。为了重新演示整个过程,我新搭建了一个服务器,各项参数如下:CPU:IntelXeon5506*2内存:DDR34G*4主机型号:DellPowerEdgeR710操作系统:CentOSrelease5.7x86_64版内核版本:2.6.18gcc版本:4.1.2g++版本:4.1.2java版本:1.6.0_30[plain]viewplaincopy1.[root@lxp2~]#cat/etc/redhat-release2.CentOSrelease5.7(Final)3.[root@lxp2~]#uname-a4.Linuxku62.6.18-274.18.1.el5#1SMPThuFeb912:45:44EST2012x86_64x86_64x86_64GNU/Linux5.[root@lxp2~]#gcc--version6.gcc(GCC)4.1.220080704(RedHat4.1.2-54)7.Copyright(C)2006FreeSoftwareFoundation,Inc.8.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNO9.warranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.10.11.[root@lxp2~]#g++--version12.g++(GCC)4.1.220080704(RedHat4.1.2-54)13.Copyright(C)2006FreeSoftwareFoundation,Inc.14.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNO15.warranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.16.17.[root@lxp2~]#java-version18.javaversion1.6.0_3019.Java(TM)SERuntimeEnvironment(build1.6.0_30-b12)20.JavaHotSpot(TM)64-BitServerVM(build20.5-b03,mixedmode)21.[root@lxp2~]#gcc、g++和java是必须的,如果运行上述命令提示commandnotfound,则需要安装。具体安装方法这里不做介绍,请参阅相关文档。接下来要准备的是apache服务器、tomcat服务器和JK连接器1.下载apache服务器源码包apache服务器官方没有发布编译好的linux二进制包,只能通过下载源代码,然后自己编译。因此需要先下载源码。访问网址,可以看到apache服务器目前放出的版本信息,推荐使用稳定版的release。然后选择Unix版源码:2.下载tomcat服务器源码包目前tomcat服务器个人还是觉得6.0比较稳定。7.0毕竟是新出的东西,需要一定的生产实践考验才能达到理想的状态。因此这里选择tomcat6.0。访问网址,可以看到目前稳定的版本为6.0.33:这里强烈建议下载tar.gz格式的压缩包。在Linux下,文件访问有着严格的权限限制。一个文件是否允许以二进制或者脚本的形式执行,完全取决于其是否拥有执行缺陷,这与Windows识别文件后缀名(.exe、.bat)的方式不同。zip格式的压缩包中是不保留文件的权限信息的,而tar.gz格式的压缩包是保存有文件的权限信息的。3.下载JK连接器源码包作为apache与tomcat连接的桥梁,JK连接器使用C语言编写,与apache紧密结合,作为模块装载到apache服务器中,通过配置实现与特定的tomcat服务器进行通信,从而实现负载均衡的功能。访问网址,可以找到最新最稳定的JK连接器版本:这里还是推荐下载tar.gz格式的源码。原因同上。4.解压apache服务器、tomcat服务器和JK连接器都已经下载好了,如下图所示:然后将这三个包都解压出来:5.编译apache服务器首先编译apache服务器。在编译之前需要执行其自带的检测配置脚本。对于不同发行版本的Linux,默认安装的库都有所差别,即便是同一个发行版本,由于用户安装软件的软件不同,也会导致系统内包含的库有所区别。因此apache作为开源服务器,在编译前需要了解系统的库安装情况,某些模块需要依赖于特定的库,如果这些库不存在,配置脚本将自动忽略这些库的编译。经过检测时候会生成合适的MakeFile文件。这里特别提醒一句,如果直接执行配置脚本,是不会编译额外的模块的,我们希望使用额外模块时,需要在运行配置脚本命令后加入参数,让其尽最大可能编译可用的库。关于这方面的介绍可以参阅我的另外一篇文章“Linux下编译apache服务器modules文件夹缺少模块(.so)的问题”()。下面进入apache服务器源码目录并执行配置脚本:[plain]viewplaincopy1.[root@lxp2Downloads]#cdhttpd-2.2.212.[root@lxp2httpd-2.2.21]#./configure--enable-so--enable-mods-shared=most--with-mpm=worker加入--with-mpm=worker是修改apache服务器的工作模式。默认模式是prefork。prefork采用预派生子进程方式,用单独的子进程来处理不同的请求,进程之间彼此独立。相对于prefork,worker是全新的支持多线程和多进程混合模型的MPM(多路处理模块)。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。如果配置过程中出现[plain]viewplaincopy1.configure:error:CannotuseanexternalAPRwiththebundledAPR-util这样的错误信息,说明本机没有安装apr运行库,需要下载并安装。访问网址:,下载apr和apr-util:解压apr和apr-util[plain]viewplaincopy1.[root@lxp2Downloads]#tar-xfapr-1.4.5.tar.gz2.[root@lxp2Downloads]#tar-xfapr-util-1.3.12.tar.gz进入apr,并编译[plain]viewplaincopy1.[root@lxp2Downloads]#cdapr-1.4.52.[root@lxp2apr-1.4.5]#ls3.apr-config.inbuild.confhelpersmemoryshmem4.apr.depbuild-outputs.mkincludemiscstrings5.apr.dspCHANGESlibapr.depmmapsupport6.apr.dswconfig.layoutlibapr.dspnetwork_iotables7.apr.makconfigurelibapr.makNOTICEtest8.apr.pc.inconfigure.inlibapr.rcNWGNUmakefilethreadproc9.apr.specdocsLICENSEpasswdtime10.atomicdsolockspolluser11.buildemacs-modeMakefile.inrandom12.buildconffile_ioMakefile.winREADME13.[root@lxp2apr-1.4.5]#./configure生成了MakeFile后直接编译[plain]viewplaincopy1.[root@lxp2apr-1.4.5]#ls2.apr-1-configbuildconfdsolockspoll3.apr-config.inbuild.confemacs-modeMakefilerandom4.apr.depbuild-outputs.mkfile_ioMakefile.inREADME5.apr.dspCHANGEShelpersMakefile.winshmem6.apr.dswconfig.layoutincludememorystrings7.apr.makconfig.loglibapr.depmiscsupport8.apr.pcconfig.nicelibapr.dspmmaptables9.apr.pc.inconfig.statuslibapr.maknetwork_iotest10.apr.specconfigurelibapr.rcNOTICEthreadproc11.atomicconfigure.inlibtoolNWGNUmakefiletime12.builddocsLICENSEpasswduser13.[root@lxp2apr-1.4.5]#make编译好之后使用root权限安装:[plain]viewplaincopy1.[root@lxp2apr-1.4.5]#sudomakeinstall然后使用类似的方法配置apr-util:[plain]viewplaincopy1.[root@lxp2Downloads]#cdapr-util-1.3.122.[root@lxp2apr-util-1.3.12]#./configure--with-apr=/usr/local/apr编译apr-util:[plain]viewplaincopy1.[root@lxp2apr-util-1.3.12]#make编译好之后使用root权限安装:[plain]viewplaincopy1.[root@lxp2apr-util-1.3.12]#sudomakeinstall当然如果你在配置apache服务器编译的时候没有提示缺少“APR”,请忽略上面关于APR编译的几步。回到apache服务器源码所在目录,开始编译:[plain]viewplaincopy1.[root@lxp2httpd-2.2.21]#make编译过程大概不到十分钟,完成之后使用root权限进行安装[plain]viewplaincopy1.[root@lxp2httpd-2.2.21]#sudomakeinstall如果不出意外,至此apache就安装成功了。来测试一下:进入apache服务器的bin目录,并启动服务器:[plain]viewplaincopy1.[root@lxp2httpd-2.2.21]#cd/usr/local/apache2/bin/2.[root@lxp2bin]#sudo./apac
本文标题:Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
链接地址:https://www.777doc.com/doc-4580872 .html