Apache 2.x + Tomcat 4.x + 负载平衡配置

本文主要介绍了如何使用AJP13 connectors和负载平衡器构建一个Apache 2.x web服务器,其中由Apache处理静态内容,并且将JSP (Java Server Pages) 和 Servlet分发给两个Tomcat处理。主要内容参考http://www.ubeans.com/tomcat翻译而来,在redhat9.0下完成调试,并作了部分修改!               

Apache 2.0是一套兼容性强、快速并且成熟的web服务器,他擅长处理静态内容(比如静态HTML页面和图片)。Tomcat web服务器处JSP和servlets的能力非常强,但是他处理静态内容却没有Apache快速。为了构建一套快速的可扩展的web应用程序,Apache 服务器使用mod_jk(Apache module)将外部发送过来的需要JSP and servlet服务的请求分发给多个tomcat,mod_jk实现负载平衡的同时还包含了session affinity,也被称作"sticky" sessions。Session affinity的意思是,当一个客户浏览器第一次发送JSP页面请求时,负载平衡器将请求转向到两个tomcat服务器中的一个,当该客户浏览器发送更多请求时,这些请求会自动被转发到同一个tomcat服务器中,因此,这个用户的session是被保留的。这篇文档描述了怎样配置一个Apache 2.x将JSP和servlet requests请求发送到监听端口不同的两个Tomcat 4.x。


1. 需要用到的软件包
· Apache 2.x Binaries (如果需要使用ssl, 再这里获取 source)
· Tomcat 4.x Binaries
· The JK module


2. 编译, 安装及配置Apache
2.1 安装Apache


参考http://httpd.apache.org/docs/2.0/install.html进行安装,具体步骤如下:
下载 http://www.apache.org/dist/httpd/httpd-2.0.58.tar.gz到/usr/local目录

参考 http://httpd.apache.org/docs/2.0/install.html 进行安装,具体步骤如下:
下载
http://www.apache.org/dist/httpd/httpd-2.0.58.tar.gz 到/usr/local目录


$ tar xzvf httpd-2.0.58.tar z
$ cd httpd-2.0.58
$ ./configure --prefix=/usr/local/apache --enable-mods-shared=most
$ make
$ make install


下载JK 1.2.15 Source 到/usr/local目录


$ tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz
$ cd jakarta-tomcat-connectors-1.2.15-src/jk/native
$ chmod 755 buildconf.sh
$ ./buildconf.sh
$ ./configure -with-apxs=/usr/local/apache/bin/apxs
$ make
$ make install
$ cd /usr/local/jakarta-tomcat-connectors-1.2.15-src/jk/native/apache-2.0/
$ cp mod_jk.so /usr/local/apache/modules


2.2 在httpd.conf中配置JK Module

编辑 Apache 服务器配置文件httpd.conf ,他的路径为/usr/local/apache/conf 

2.2.1 在"# LoadModule foo_module modules/mod_foo.so",下面加入以下几行:
#
# Load mod_jk
#
LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info

2.2.2 在"DocumentRoot" 那行下面加入如下两行:
JkMount /*.jsp loadbalancer
JkMount /*.do loadbalancer

2.3 创建 workers.properties 文件
创建一个名为worker.properties的文件, 将他放在/usr/local/apache/conf目录下。worker.properties 文件告诉Apache有不同的多个Tomcat服务器正在运行,同时告诉他们运行时监听的端口。 这里我将两个tomcat服务器装在同一台机器的两个不同目录里,当然也可以将他们放到不同的服务器中。将第一个Tomcat服务器的AJP13 connector监听端口由默认的8009改为11009,第二个的改为12009。并将两个tomcat服务器命名为tomcat1 和tomcat2。
创建的文件如下:
#
# workers.properties
#

# In Unix, we use forward slashes:
ps=/

# list the workers by name

worker.list=tomcat1, tomcat2, loadbalancer

# ------------------------
# First tomcat server
# ------------------------
worker.tomcat1.port=11009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13

# Specify the size of the open connection cache.
#worker.tomcat1.cachesize

#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#  ----> lbfactor must be > 0
#  ----> Low lbfactor means less work done by the worker.
worker.tomcat1.lbfactor=100


# ------------------------
# Second tomcat server
# ------------------------
worker.tomcat2.port=12009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13

# Specify the size of the open connection cache.
#worker.tomcat2.cachesize

#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#  ----> lbfactor must be > 0
#  ----> Low lbfactor means less work done by the worker.
worker.tomcat2.lbfactor=100


# ------------------------
# Load Balancer worker
# ------------------------

#
# The loadbalancer (type lb) worker performs weighted round-robin
# load balancing with sticky sessions.
# Note:
#  ----> If a worker dies, the load balancer will check its state
#        once in a while. Until then all work is redirected to peer
#        worker.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2

#
# END workers.properties
#


3. 安装配置Tomcat服务器
将tomcat服务器安装到/usr/local/目录下
   tar fvxz jakarta-tomcat-4.x.tar.gz
   mv jakarta-tomcat-4.x /usr/local/tomcat1
   cp -R /usr/local/tomcat1 /usr/local/tomcat2

两个tomcat的配置文件都要做修改。


3.1 修改 catalina.sh
根据经验总结,为了避免环境变量出现问题,我们将在catalina.sh直接设置JAVA_HOME and CATALINA_HOME variables变量。
在32行, "# ----- Verify and Set Required Environment Variables " 之前加入以下两行:
    JAVA_HOME=/usr/local/jdk1.4 ; export JAVA_HOME
    CATALINA_HOME=/usr/local/tomcat1 ; export CATALINA_HOME

(tomcat2也需要设置)


3.2 修改conf/server.xml


3.2.1 给Catalina engine加入唯一的 jvmRoute
在100行附近, 替换:
    <Engine name="Standalone" defaultHost="localhost" debug="0">
为:
    <Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0">
tomcat2, 加入jvmRoute="tomcat2".


3.2.2 修改控制端口
 在13行, 替换:
    <Server port="8005"
为:
    <Server port="11005"
tomcat2 替换端口 8005 为12005. 这样可以避免两个服务器发生冲突。


3.2.3 修改 AJP13 端口
在 75行, 在 AJP 13 connector 定义里, 替换:
    port="8009"
为:
    port="11009"
tomcat2替换端口8009 为 12009.


3.2.4 禁用 standalone HTTP 端口
我们不需要我们的tomcat服务器直接响应http请求,所以我们注释掉HttpConnector 那一段配置。
例如:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<!--
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
               port="8080" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="60000"/>
-->

注:如果你没有注释掉该部分,你需要修改端口号以避免冲突!


3.2.5 禁用 WARP connector
在314行, 注释掉 <Connector...WarpConnector...> 标签。
例如:
<Service name="Tomcat-Apache">
<!--
    <Connector className="org.apache.catalina.connector.warp.WarpConnector"
     port="8008" minProcessors="5" maxProcessors="75"
     enableLookups="true" appBase="webapps"
     acceptCount="10" debug="0"/>
-->


3.3 创建JSP 页面 (index.jsp)
3.3.1 创建 index.jsp 并将其放入/usr/local/tomcat1/webapps/ROOT目录下:
<html>
<body bgcolor="red">
<center>
<%= request.getSession().getId() %>
<h1>Tomcat 1</h1>
</body>
</html>

3.3 创建JSP 页面 (index.jsp)
3.3.1 创建 index.jsp 并将其放入/usr/local/tomcat1/webapps/ROOT目录下:
<html>
<body bgcolor="red">
<center>
<%= request.getSession().getId() %>
<h1>Tomcat 1</h1>
</body>
</html>


3.3.2创建index.jsp 将他放入/usr/local/tomcat2/webapps/ROOT目录下:
<html>
<body bgcolor="blue">
<center>
<%= request.getSession().getId() %>
<h1>Tomcat 2</h1>
</body>
</html>


4.启动Tomcat1, Tomcat2 和 Apache
    /usr/local/tomcat1/bin/startup.sh
    /usr/local/tomcat2/bin/startup.sh
    /usr/local/apache2/bin/apachectl start


5. 测试
现在测试是否安装成功。 首先,检查Apache处理静态页面。
点击:http://localhost/.。你应该看到Apache默认的index.html页面。
现在测试tomcat ( Tomcat 1 或者Tomcat 2) 处理 Java Server Pages。
点击:http://localhost/index.jsp
如果你看到红色页面,表示是从tomcat1 得到的,如果看到蓝色页面,则是从tomcat2得到的。
然后,检查session affinity是否生效。 sessions 是在 load balancer 中运行的。重复刷新"http://localhost/index.jsp",如果得到同一页面,表示安装成功。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值