Apache+Tomcat+JK 实现集群、负载均衡
2011-02-18 15:26
726 查看
Apache+Tomcat+JK
实现集群、负载均衡
1.
软件说明
apache_2.2.10-win32-x86-no_ssl.msi
mod_jk-1.2.27-httpd-2.2.10.so
jakarta-tomcat-5.5.9
(注:
windows xp
系统)
2.
配置
一、
负载均衡
1.
安装
apche,tomcat
http://httpd.apache.org/
下载
Apache
http://tomcat.apache.org/
下载
Tomcat
http://tomcat.apache.org/download-connectors.cgi
下载
JK
这里使用的都是
windows
下的版本。
安装
Apache
和
Tomcat,
将下载的
mod_jk-1.2.27-httpd-2.2.10.so
文件复制到
apache
安装目录
modules
目录
下
2.
修改
Apache
配置文件
在
apache
安装目录下
conf
目录中找到
http.conf
,在文件最后加上下面一句:
http.conf
在
conf
目录中新建
mod_jk.conf
文件,内容如下:
mod_jk.conf
接着在
conf
目录下新建
workers.properties
文件,内容如下:
workers.properties
接着在
conf
目录下新建
uriworkermap.properties
文件,内容如下:
uriworkermap.properties
3.
修改
tomcat
配置文件
修改
tomcat
的
conf
目录下的
server.xml
文件。如果你在不同电脑上安装
tomcat,tomcat
的安装数量为一个,可以不必修改
tomcat
配置文件,我这里是在同一台电脑上安装两
个
tomcat
,所以需要更改其中一个的设置打开
tomcat2/conf/server.xml
文件:
4.
编写测试项目
test
test.jsp
把
test
放到
tomcat1,tomcat2
的
webapps
下的
test
应用中
5.
启动
apache tomcat
进行测试
通过
http://localhost/test/test.jsp
访问,查看
tomcat1
的窗口,可以看到打印了一行
"============"
,再刷新一次,
tomcat2
也打印了一条,再刷新,可以看到请求会被
tomcat1,tomcat2
轮流处理
,
实现了负载均衡
二、
配置集群
只配置负载均衡还不行,还要
session
复制,也就是说其中任何一个
tomcat
的添加
的
session
,是要同步复制到其它
tomcat
,
集群内的
tomcat
都有相同的
session
。
1.
修改
tomcat1, tomcat2
的
server.xml
将集群部分配置的在注释符删掉
,
并将
tomcat2
的
4001
端口改为
4002
,以避免与
tomcat
冲突,当然,如果是两台电脑,是不用改端口的,去掉注释符即可
在
Engine
标签中添加
jvmRoute=’tomcat1’
。
jvmRoute
名称必须和
worker.properties
中的
tomcat
实例名称一致,不然无法实现
session_stricky(
粘性
session)
。同时还要将
apache/conf/workers.properties
文件中
worker.controller.sticky_session=true
2.
修改测试项目
test
修改
test.jsp
,
内容如下:
test.jsp
然后在
test
新建
WEB-INF
目录,
WEB-INF
下新建
web.xml,
内容如下:
web.xml
web.xml
配置文件加上
<distributable/>
节点,此配置说明当前
Web
工程处于分布式部署环境。如果不进行这个配置,每次访问页面
tomcat
都会产生一个新的
sessionid
3.
测试
讲
test
应用复制到
tomcat1,tomcat2
的
webapps
下,重启
apache,tomcat1,tomcat2
,
输入网址
http://localhost/test/test.jsp
,表单输入
songsp ,
值为
test
的
session,
提交查询,
Tomcat1
处理请求。如下图:
将
Tomcat1
服务关闭。在输入
bbbb,aaaaa
提交,由于
Tomcat1
关闭,
Tomcat2
来处理请求,并且
session
同步的。如下图:
实现集群、负载均衡
1.
软件说明
apache_2.2.10-win32-x86-no_ssl.msi
mod_jk-1.2.27-httpd-2.2.10.so
jakarta-tomcat-5.5.9
(注:
windows xp
系统)
2.
配置
一、
负载均衡
1.
安装
apche,tomcat
http://httpd.apache.org/
下载
Apache
http://tomcat.apache.org/
下载
Tomcat
http://tomcat.apache.org/download-connectors.cgi
下载
JK
这里使用的都是
windows
下的版本。
安装
Apache
和
Tomcat,
将下载的
mod_jk-1.2.27-httpd-2.2.10.so
文件复制到
apache
安装目录
modules
目录
下
2.
修改
Apache
配置文件
在
apache
安装目录下
conf
目录中找到
http.conf
,在文件最后加上下面一句:
http.conf
# 指定 mod_jk 配置文件的位置 Include conf/mod_jk.conf |
conf
目录中新建
mod_jk.conf
文件,内容如下:
mod_jk.conf
# 加载 mod_jk Module LoadModule jk_module modules/mod_jk-1.2.27-httpd-2.2.10.so # 指定 workers.properties 文件路径 JkWorkersFile conf/workers.properties # url 请求的配置文件路径 JkMountFile conf/uriworkermap.properties |
conf
目录下新建
workers.properties
文件,内容如下:
workers.properties
worker.list=controller # server 列表,分发控制器 注意不要放 tomcat 实例 # Tomcat1 实例配置 这里要和 Tomcat 配置文件 service.xml 的 jvmRoute 保持一致 worker.tomcat1.port=8009 #ajp13 端口号,在 tomcat 下 server.xml 配置 , 默认 8009 worker.tomcat1.host=localhost # tomcat 的主机地址,如不为本机,请填写 ip 地址 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 # server 的加权比重,值越高,分得的请求越多 # Tomcat2 实例配置 worker.tomcat2.port=9009 worker.tomcat2.host=localhost worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 # 负载均衡分发控制器 worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2 # 指定分担请求的 tomcat worker.controller.sticky_session=false # 关闭 粘性 session( 默认是 true 打开的 ) |
conf
目录下新建
uriworkermap.properties
文件,内容如下:
uriworkermap.properties
# 指定那些请求交给 tomcat 处理 ,"controller" 为在 workers.propertise 里指定的负载分配控制器 /*.jsp=controller |
修改
tomcat
配置文件
修改
tomcat
的
conf
目录下的
server.xml
文件。如果你在不同电脑上安装
tomcat,tomcat
的安装数量为一个,可以不必修改
tomcat
配置文件,我这里是在同一台电脑上安装两
个
tomcat
,所以需要更改其中一个的设置打开
tomcat2/conf/server.xml
文件:
4.
编写测试项目
test
test.jsp
<% System.out.println("==========================="); %> |
test
放到
tomcat1,tomcat2
的
webapps
下的
test
应用中
5.
启动
apache tomcat
进行测试
通过
http://localhost/test/test.jsp
访问,查看
tomcat1
的窗口,可以看到打印了一行
"============"
,再刷新一次,
tomcat2
也打印了一条,再刷新,可以看到请求会被
tomcat1,tomcat2
轮流处理
,
实现了负载均衡
二、
配置集群
只配置负载均衡还不行,还要
session
复制,也就是说其中任何一个
tomcat
的添加
的
session
,是要同步复制到其它
tomcat
,
集群内的
tomcat
都有相同的
session
。
1.
修改
tomcat1, tomcat2
的
server.xml
将集群部分配置的在注释符删掉
,
并将
tomcat2
的
4001
端口改为
4002
,以避免与
tomcat
冲突,当然,如果是两台电脑,是不用改端口的,去掉注释符即可
在
Engine
标签中添加
jvmRoute=’tomcat1’
。
jvmRoute
名称必须和
worker.properties
中的
tomcat
实例名称一致,不然无法实现
session_stricky(
粘性
session)
。同时还要将
apache/conf/workers.properties
文件中
worker.controller.sticky_session=true
2.
修改测试项目
test
修改
test.jsp
,
内容如下:
test.jsp
<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> Server Info: <% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> <% out.println("<br> ID " + session.getId()+"<br>"); // 如果有新的 Session 属性设置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.print("<b>Session 列表</b>"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"<br>"); System.out.println( name + " = " + value); } %> <form action="index.jsp" method="POST"> 名称:<input type=text size=20 name="dataName"> <br> 值:<input type=text size=20 name="dataValue"> <br> <input type=submit> </form> </body> </html> |
test
新建
WEB-INF
目录,
WEB-INF
下新建
web.xml,
内容如下:
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/j2ee " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " version="2.4"> <display-name>TestDemo</display-name> <distributable/> </web-app> |
配置文件加上
<distributable/>
节点,此配置说明当前
Web
工程处于分布式部署环境。如果不进行这个配置,每次访问页面
tomcat
都会产生一个新的
sessionid
3.
测试
讲
test
应用复制到
tomcat1,tomcat2
的
webapps
下,重启
apache,tomcat1,tomcat2
,
输入网址
http://localhost/test/test.jsp
,表单输入
songsp ,
值为
test
的
session,
提交查询,
Tomcat1
处理请求。如下图:
将
Tomcat1
服务关闭。在输入
bbbb,aaaaa
提交,由于
Tomcat1
关闭,
Tomcat2
来处理请求,并且
session
同步的。如下图:
相关文章推荐
- Apache + Tomcat +mod_jk- win7与linux下实现负载均衡与集群-
- 使用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡出现的无法加载mod_jk.conf文件的问题
- Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
- 利用Apache+JK+Tomcat实现负载均衡和集群
- Apache + Tomcat +mod_jk- win7与linux下实现负载均衡与集群-
- apache以mod_jk方式实现tomcat的负载均衡集群
- apache httped 与tomcat 通过jk实现负载均衡
- Apache + Tomcat + mod jk 来实现负载均衡
- Apache+tomcat实现负载均衡集群和session共享、tengine+tomcat实现web动静分离
- Apache Http Server与Tomcat实现负载均衡和集群
- 解说Apache+Tomcat+JK实现Tomcat的负载和集群 推荐
- Apache Http Server与Tomcat实现负载均衡和集群
- Apache+Tomcat实现负载均衡及集群(session同步)--一、前言
- Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
- 安装集群apache+tomcat实现负载均衡与集群的配置
- 如何编译Apache的JK模块基于AJP协议连接Tomcat,实现负载均衡。
- Apache+Tomcat实现负载均衡及集群(session同步)--二、环境准备(1)
- Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(1)使用内存复制
- apache下jk_mod负载均衡的实现整合tomcat
- Apache + tomcat实现高并发负载均衡方案(二)----stickysession的集群