1 说明
======
本配置实现的是多台机器访问的负载均衡。它使用Apache来实现动态负载均衡,并且实现了会话绑定机制,即用户第一次访问的会话将绑定在
首次访问的tomcat上,防止会话信息丢失。
该配置所运行的环境为RedHat linux7.2,实现两台机器的负载均衡,一台机器运行apache和tomcat,另外一台机器运行tomcat.该配置稍做修
改就可以配置在其他操作系统并能实现一台服务器跑多个tomcat的负载均衡,以及多于两台服务器的负载均衡。
2 需要的软件
============
Apache 1.3.26 source
http://www.apache.org/dist/httpd/apache_1.3.26.tar.gz
Precompiled Tomcat 4.0.3
http://jakarta.apache.org/builds ... tomcat-4.0.3.tar.gz
The JK module, precompiled for Linux Glibc 2.2
http://jakarta.apache.org/builds ... inux/i386/mod_jk.so
3 编译、安装和配置Apache
3.1 解包
tar fvxz apache_1.3.23.tar.gz
3.2 编译和安装
cd apache_1.3.26
./configure --enable-module=include --enable-module=so --prefix=/usr/local/apache
make install
3.3 拷贝mod_jk模块文件
拷贝文件 mod_jk.so 到路径 /usr/local/apache/libexec
3.4 在httpd.conf中配置JK 模块
编辑Apache的配置文件,该文件位于:/usr/local/apache/conf
3.4.1 加入mod_jk模块
在文件中找到"# LoadModule foo_module libexec/mod_foo.so"一行,在该行下面加入如下:
#
# Load mod_jk
#
LoadModule jk_module libexec/mod_jk.so
#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
3.4.2 设置tomcat 应用的访问代理
在 "DocumentRoot" 一行的下面加入:
JkMount /*.jsp loadbalancer
JkMount /servlet/* loadbalancer
JkMount /application/* loadbalancer
以上第三行为要访问的应用名。如广州电信邮件系统的应用名为enterprise,则application应该替换。
3.4.3 生成 workers.properties 文件
在 /usr/local/apache/conf目录下生成该文件,该文件告诉apache 每个负载均衡的tomcat服务的运行参数,如机器名和端口号等。
#
# 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=8009 //第一台tomcat服务所在机器监听端口
worker.tomcat1.host=hostname1 //第一台tomcat服务所在机器ip地址
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=8009 //第二台tomcat服务所在机器监听端口
worker.tomcat2.host=hostname2 //第二台tomcat服务所在机器ip地址
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
#
4 安装和配置Tomcat 服务器
=========================
在运行tomcat的机器上分别安装tomcat软件
tar fvxz jakarta-tomcat-4.0.3.tar.gz
mv jakarta-tomcat-4.0.3 /opt/tomcat
4.1 修改conf/server.xml文件
在跑第一个tomcat实例的机器上,在大约第100行, 替换:
<Engine name="Standalone" defaultHost="localhost" debug="0">
为:
<Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0">
对跑第二个tomcat实例的机器上,替换为 jvmRoute="tomcat2".
4.2 生成JSP测试网页 (index.jsp)
在跑tomcat1实例的机器的 /opt/tomcat/webapps/ROOT 目录生成如下内容的index.jsp文件:
<html>
<body bgcolor=red>
<center>
<h1>Tomcat 1</h1>
</body>
</html>
同理,在跑tomcat2实例的机器的 /opt/tomcat/webapps/ROOT 目录生成如下内容的index.jsp文件:
<html>
<body bgcolor=blue>
<center>
<h1>Tomcat 2</h1>
</body>
</html>
5 启动Tomcat1, Tomcat2 和Apache服务
=====================================
/opt/tomcat/bin/startup.sh
/opt/tomcat/bin/startup.sh
/usr/local/apache/bin/apachectl start
6 测试安装
===========
首先验证Apache服务器的静态页面是否正常,访问: http://hostname/.
验证tomcat和apache配置提供负载均衡,访问: http://hostname/index.jsp
如果你看到红色的页面,表示为tomcat1 服务器返回的,
如果你看到兰色的页面,表示为tomcat2 服务器返回的。这里注意的是在linux上面的apache轮询一般要返回10次tomcat1的服务后才会返
回tomcat2的服务,并且以后的访问是没有规律的,在window2000环境下则是交替的返回tomcat1和tomcat2 的服务。
现在再测试下会话绑定功能,当你重载以上(刷新页面)访问的index.jsp页面时,确信永远返回同一种颜色,即总是从同一台tomcat机器返回页面。