日期:2014-05-17  浏览次数:20993 次

转载:Apache+Tomcat集群配置负载均衡器
主 题:Apache+Tomcat集群配置负载均衡器



tomcat是开源servlet \jsp服务器,下载地点 http://jakarta.apache.org/ ;
apache 2.0.43 是开源的www服务器,下载地点 http://www.apache.org/dist/httpd/binaries/ ;
JavaGroups是一个实现集群服务实体间通信的通信协议,下载地址: http://www.javagroups.com/ ;
Tomcat 会话复制库,基于JavaGroups通信协议,完成集群服务实体间任务执行上下文的复制,下载地址: http://www.filip.net/tomcat/tomcat-javagroups.jar
jk2模块,jk 是mod_jserv的替代者,它是Tomcat-Apache插件,处理Tomcat和Apache之间的通信,在集群配置中充当负载均衡器的作用。JK2是符合apache 2.x系列的新品,下载地址: http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/release/v2.0.2/bin/。
2.2 配置负载均衡器

在apache下配置负载均衡器分为三步,注意每次修改httpd.conf和workers2.properties时不要忘了重新启动apache。

第一步,安装和调试apache
负载均衡器jk2模块是apache www 服务的插件,所以配置负载均衡器就得先安装apache。本文下载的是windows版本 2.0.43,执行setup.exe并回答一些简单问题就可完成apache的任务。值得注意的是,安装并启动apache后如果apache对http://localhost/ 地址没反应,你得修改apache安装路径下htdocs目录下的index.html.xx文件,比如把index.html.en改成index.html。

第二步,安装jk2
把下载到的 mod_jk2-2.0.43.dll改成mod_jk2.dll 放到apache的modules目录下,修改apache的httpd.conf,即在LoadModule foo_module modules/mod_foo.so 行下插入mod_jk2模块的装载信息:

# Example:

# LoadModule foo_module modules/mod_foo.so

#

LoadModule jk2_module modules/mod_jk2.dll



第三步,配置jk2
jk2的配置全在一个配置文件中,文件名为workers2.properties,和apache 的httpd.conf放在同一个目录下。以下是这个文件的内容:

#++++++++++++++++++++++++++++++++++++

# only at beginnin. In production uncomment it out

[logger.apache2]

level=DEBUG

#shm必须配

[shm]

file=D:\Program Files\Apache Group\Apache2\logs\shm.file

size=1048576

# 第一个tomcat 的地址

# Example socket channel, override port and host.

[channel.socket:tomcat1]

port=11009

host=127.0.0.1

# 定义第一个工作者指向第一个tomcat

# define the worker

[ajp13:tomcat1]

channel=channel.socket:tomcat1

#第二个tomcat 得地址

# Example socket channel, override port and host.

[channel.socket:tomcat2]

port=12009

host=10.1.36.123

# 定义第二个工作者指向第二个tomcat

# define the worker

[ajp13:tomcat2]

channel=channel.socket:tomcat2

#定义负载均衡器,使其包含两个工作者

[lb:lb1]

worker=ajp13:tomcat2

worker=ajp13:tomcat1

#指定负载均衡器完成单一地址映射,使得apache 服务所在的uri全部指向 两个tomcat 上的 root

# Uri mapping

[uri:/*]

group=lb:lb1

#++++++++++++++++++++++++++++++++++++++++++



对于jk2模块的负载均衡配置可参见相关站点,值得提及的是jk2的负载均衡还支持权重分配等优秀功能。

2.3 配置tomcat

同属于一个集群下的两个服务实体,要求功能的同一性,所以我们可先安装和配置第一个tomcat,接着拷贝形成第二个tomcat,最后配置第二个tomcat。

2.3.1 安装第一个tomcat

安装tomcat 非常简单,本文就不再描述。我们假设第一个tomcat的安装路径为d:\tomcat1。

拷贝tomcat-javagroups.jar和javagroups.jar到d:\tomcat1\ server\lib 路径下。

2.3.2 配置第一个tomcat

2.3.2.1 配置jk2

tomcat 中的jk2 connector缺省端口为8009,为了在一台机器上运行两个tomcat,修改D:\Tomcat1\conf\jk2.properties,设置jk2 connector的端口为11009,整个文件内容如下:

#++++++++++++++

channelSocket.port=11009

#++++++++++++++



2.3.2.2 修改server.conf

首先为了让一台机器上运行两个tomcat,修改server.conf的tomcat 停止指令监听端口:

<Server port="8005" shutdown="SHUTDOWN" debug="0"> 改为

<Server port="11005" shutdown="SHUTDOWN" debug="0">



然后打开JK2 AJP connector ,关闭其它connector,下面是JK2 AJP 1.3的样子,这里已把它的端口改为11009:

<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

               port="11009" minProcessors="5" maxProcessors="75"

               enableLo