apache+tomcat配置负载均衡
1.
相关的软件
JDK:jdk-1_5_0_05-windows-i586-p.exe
Apache:apache_2.2.11-win32-x86-no_ssl.msi
Tomcat:apache-tomcat-5.5.27(绿色).zip
Mod_jk:mod_jk-1.2.27-httpd-2.2.10.so
2.1
安装JDK,Tomcat,Apache
配置环境变量
JAVA_HOME:C:"Program Files"Java"jdk1.5.0_05(JDK的安装目录)
mod_jk配置文件
将mod_jk-1.2.27-httpd-2.2.10.so放到E:"Program Files"Apache Software Foundation"Apache2.2"modules目录下
2.2
修改Apache配置文件http.conf
在文件最后加上下面一句:
include conf/mod_jk.conf
2.3
http.conf 同目录下新建mod_jk.conf文件
内容如下
### 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk-1.2.27-httpd-2.2.10.so
### 配置 mod_jk
JkWorkersFile conf/workers.properties
#加载集群中的workers
JkMountFile conf/uriworkermap.properties
#加载workers的请求处理分配文件
JkLogFile logs/mod_jk.log
#指定jk的日志输出文件
JkLogLevel warn
#指定日志级别
2.4
在http.conf同目录下新建 workers.properties文件,内容如下
# worker列表
worker.list=controller, status
#第一个server的配置,server名为s1
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.s1.port=7009
#tomcat的主机地址,如不为本机,请填写ip地址
worker.s1.host=localhost
worker.s1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.s1.lbfactor=1
#第二个server的配置,server名为s2
worker.s2.port=9009
worker.s2.host=localhost
worker.s2.type=ajp13
worker.s2.lbfactor=1
#server名为controller,用于负载均衡
worker.controller.type=lb
worker.retries=3 #重试次数
#指定分担请求的server列表,用逗号分隔
worker.controller.balanced_workers=s1,s2
#设置用于负载均衡的server的session可否共享 有不少文章说设置为1是可以的,但是我是设置为0才可以的
worker.controller.sticky_session=0
#worker.controller.sticky_session_force=1
worker.status.type=status
2.5
在http.conf同目录下新建 uriworkermap.properties文件,内容如下
/*=controller #所有请求都由controller这个server处理
/jkstatus=status #所有包含jkstatus请求的都由status这个server处理
!/*.gif=controller #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.htm=controller
!/*.html=controller
2.6
修改tomcat1,tomcat2的配置文件server.xml如果你是水平集群,即在不同电脑上安装tomcat,tomcat的安装数量为一个,可以不必修改tomcat配置文件.我这里是在同一台电脑上安装两个tomcat,实现的是垂直集群方式,所以必须修改其中一个的设置,以避免端口冲突
(1)修改关闭Tomcat的监听端口8005
Tomcat1:
Tomcat1:
(2)修改http服务端口号8080
Tomcat1:
Tomcat2:
(3)修改AJP端口号8009
Tomcat1:
Tomcat1:
注:前面 useBodyEncodingForURI="true" 和 URIEncoding="GBK" 是用来处理URL GET时乱码问题
(4)文件目录映射
在文件底部添加静态文件目录:
3 配置集群
只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat, 集群内的tomcat都有相同的session。
3.1 修改tomcat1, tomcat2的server.xml
(1)启用集群部分配置
即对节点的在注释符删掉,并将修改tcpListenPort端口4001,以避免与tomcat冲突,当然,如果是两台电脑,是不用改端口的,去掉注释符即可
Tomcat1:
tcpListenPort="4002"
Tomcat2:
tcpListenPort="4003"
(2)配置引擎
为 Tomcat1和 Tomcat2 增加 jvmRoute
Tomcat1:
Tomcat2:
3.2 配置Session复制
在需要集群的web应用程序的web.xml中加上属性,表明该应用可多应用分流处理,能进行Session的复制
#注意:在你的应用的web.xml加入即可,如下
campus
最后jsp代码测试
Cluster App Test
Server Info:
0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("Session 列表");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"");
System.out.println( name + " = " + value);
}
%>
名称:
值:
页:
[1]