日期:2014-05-16  浏览次数:20789 次

Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
最近在开发的项目需要承受很高的并发量。综合各种情况,决定使用Apache+Tomcat+JK的方式实现负载均衡,并且作为一个统一的服务还要实现群集(同步Session)。

在网上找了很多资料,都是零零散散的,没有一个完整的过程。通过几天的努力,完成了从编译、部署到配置的整个过程,期间也遇到了一些问题。在接下来的文字中将这些过程记录下来,做个笔记同时也分享给大家。

为了重新演示整个过程,我新搭建了一个服务器,各项参数如下:

CPU:Intel Xeon 5110

内存:DDR2 1G*4

主机型号:ProLiant DL140 G3

操作系统:Red Hat Enterprise Linux Server release 5.4 x86_64版

内核版本:2.6.18

gcc版本:4.1.2

g++版本:4.1.2

java版本:1.6.0_27

[plain] view plaincopyprint?[root@lxp2 ~]# cat /etc/redhat-release  
Red Hat Enterprise Linux Server release 5.4 (Tikanga) 
[root@lxp2 ~]# uname -a 
Linux lxp2 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:41:04 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux 
[root@lxp2 ~]# gcc --version 
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46) 
Copyright (C) 2006 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions.  There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 
[root@lxp2 ~]# g++ --version 
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46) 
Copyright (C) 2006 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions.  There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 
[root@lxp2 ~]# java -version 
java version "1.6.0_27" 
Java(TM) SE Runtime Environment (build 1.6.0_27-b07) 
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode) 
[root@lxp2 ~]#  

[root@lxp2 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
[root@lxp2 ~]# uname -a
Linux lxp2 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:41:04 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
[root@lxp2 ~]# gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@lxp2 ~]# g++ --version
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@lxp2 ~]# java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
[root@lxp2 ~]# gcc、g++和java是必须的,如果运行上述命令提示command not found,则需要安装。具体安装方法这里不做介绍,请参阅相关文档。



接下来要准备的是apache服务器、tomcat服务器和JK连接器

1.下载apache服务器源码包

apache服务器官方没有发布编译好的linux二进制包,只能通过下载源代码,然后自己编译。因此需要先下载源码。

访问网址http://httpd.apache.org/download.cgi,可以看到apache服务器目前放出的版本信息,推荐使用稳定版的release。



然后选择Unix版源码:



2.下载tomcat服务器源码包

目前tomcat服务器个人还是觉得6.0比较稳定。7.0毕竟是新出的东西,需要一定的生产实践考验才能达到理想的状态。因此这里选择tomcat 6.0。

访问网址http://tomcat.apache.org/download-60.cgi,可以看到目前稳定的版本为6.0.33:



这里强烈建议下载tar.gz格式的压缩包。在Linux下,文件访问有着严格的权限限制。一个文件是否允许以二进制或者脚本的形式执行,完全取决于其是否拥有执行缺陷,这与Windows识别文件后缀名(.exe、.bat)的方式不同。zip格式的压缩包中是不保留文件的权限信息的,而tar.gz格式的压缩包是保存有文件的权限信息的。

3.下载JK连接器源码包

作为apache与tomcat连接的桥梁,JK连接器使用C语言编写,与apache紧密结合,作为模块装载到apache服务器中,通过配置实现与特定的tomcat服务器进行通信,从而实现负载均衡的功能。

访问网址http://tomcat.apache.org/download-connectors.cgi,可以找到最新最稳定的JK连接器版本:



这里还是推荐下载tar.gz格式的源码。原因同上。

4.解压

apache服务器、tomcat服务器和JK连接器都已经下载好了,如下图所示:



然后将这三个包都解压出来:



5.编译a