Apache配置tomcat集群
2015-10-29 14:57
447 查看
1、环境准备
Apache:Apache是http服务器,我们利用其对Tomcat进行负载均衡,下载地址http://httpd.apache.org/download.cgi#apache22,这里使用的版本是Apache
HTTP Server 2.0.64;
Tomcat:Tomcat7.0.6;
JK:JK是Tomcat提供给http服务器的插件,这里使用的版本是tomcat-connectors-1.2.37-windows-i386-httpd-2.0.x,下载地址http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/;
系统:win7。
2. 软件安装
2.1 Apache
下载完成之后,直接安装apache,安装完成之后,在浏览器中输入http://localhost/,能够看到下图则说明安装成功:
![](https://img-blog.csdn.net/20151029143621460?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.2 Tomcat
解压下载好的tomcat压缩包,复制三分解压好的tomca文件夹,分别重命名为tomcat1,tomcat2,tomcat3。
3.配置过程
3.1apache配置修改
修改httpd.conf
我的Apache安装在D:\Apache24,找到conf目录下的httpd.conf,在文件的最后一行添加:
Include "conf/mod_jk.conf"
新建mod_jk.conf文件
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkMount /*.jsp controller
注:第一行最后的文件名为jk的文件名,根据下载的jk的名字不同而不同。第二行表示指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名,第三行表示可以进行集群的文件类型,这里写*.jsp表示集群的文件只能是jsp文件,如果不区分文件类型,则直接写成JkMount /* controller即可。
jk
解压下载的jk文件,将里面的so文件复制到Apache安装目录的modules目录下,这里下载的jk文件名为mod_jk.so。
新建并编辑workers.properties文件
在conf文件夹下新建workers.properties,内容如下:
如果需要配置远程的tomcat服务器的话,只需要将worker.tomcat3.host=localhost中的localhost改为远程服务器的IP地址即可。本次配置都是本地的tomcat,并且在一台机器上,所以端口号都不相同,如果在不同服务器上,端口号则不需要更改。
3.2tomcat配置
前面已经将tomcat复制了三份,修改每一份中的server.xml配置,打开conf/server.xml文件,修改如下图:
tomcat1:
![](https://img-blog.csdn.net/20151029144755708?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
tomcat2:
![](https://img-blog.csdn.net/20151029144933966?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
tomcat3:
![](https://img-blog.csdn.net/20151029145045002?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注:由于我这三个tomcat全是本地的,并且在一台服务器上,所以需要修改三种类型的端口号,如果是远程服务器,则只需要修改AJP13的connector的port,其他端口号不需要修改。不论是本地服务器还是远程服务器,AJP13的connector的jvmRoute名称和workers.properties中配置都必须对应。
4。结果测试
在tomcat下面的项目文件夹中修改web.xml,如这里使用test项目,则修改三个tomcat下面的test项目中的web.xml,在每个web.xml的<display-name>节点后添加新的节点<distributable/>。
在每个test项目文件夹下新建test.jsp,内容如下:
4.1session测试
项目部署好之后,启动三个tomcat以及Apache,启动顺序随意,然后再浏览器中输入http://localhost/test/test.jsp,结果如下图:
![](https://img-blog.csdn.net/20151029145304543?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
刷新页面
![](https://img-blog.csdn.net/20151029145405882?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
再次刷新页面
![](https://img-blog.csdn.net/20151029145447328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4.2节点插拔测试
关闭Tomcat
关闭tomcat3,刷新页面,可以不断访问tomcat1和tomcat2,再关闭tomcat2,只能够访问tomcat1,说明节点关闭时运行正常。
启动tomcat
如果重启Tomcat2,无论怎么刷新,始终访问Tomcat3,无法访问tomcat2,这时利用另外台机器访问页面,发现Tomcat2正常,然后在刷本地页面,又可以访问Tomcat2了。对于每个新来的session,Apache按照节点配置中的lbfactor比重选择访问节点,如果某节点node1不能访问,则寻找下一可访问节点,并且将此node1就在该访问session的访问黑名单中,以后该session的访问直接不考虑node1,即使node1又可以访问了。而新来的session是无黑名单的,如果新的session能够访问到node1了,则会将node1在其他所有session访问的黑名单删除,这样其他session就又能访问node1节点了。经过以上测试,说明Tomcat集群和负载均衡已经实现了。
Apache:Apache是http服务器,我们利用其对Tomcat进行负载均衡,下载地址http://httpd.apache.org/download.cgi#apache22,这里使用的版本是Apache
HTTP Server 2.0.64;
Tomcat:Tomcat7.0.6;
JK:JK是Tomcat提供给http服务器的插件,这里使用的版本是tomcat-connectors-1.2.37-windows-i386-httpd-2.0.x,下载地址http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/;
系统:win7。
2. 软件安装
2.1 Apache
下载完成之后,直接安装apache,安装完成之后,在浏览器中输入http://localhost/,能够看到下图则说明安装成功:
2.2 Tomcat
解压下载好的tomcat压缩包,复制三分解压好的tomca文件夹,分别重命名为tomcat1,tomcat2,tomcat3。
3.配置过程
3.1apache配置修改
修改httpd.conf
我的Apache安装在D:\Apache24,找到conf目录下的httpd.conf,在文件的最后一行添加:
Include "conf/mod_jk.conf"
新建mod_jk.conf文件
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkMount /*.jsp controller
注:第一行最后的文件名为jk的文件名,根据下载的jk的名字不同而不同。第二行表示指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名,第三行表示可以进行集群的文件类型,这里写*.jsp表示集群的文件只能是jsp文件,如果不区分文件类型,则直接写成JkMount /* controller即可。
jk
解压下载的jk文件,将里面的so文件复制到Apache安装目录的modules目录下,这里下载的jk文件名为mod_jk.so。
新建并编辑workers.properties文件
在conf文件夹下新建workers.properties,内容如下:
#server worker.list = controller #========tomcat1======== worker.tomcat1.port=11009 worker.tomcat1.host=localhost worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #========tomcat2======== worker.tomcat2.port=12009 worker.tomcat2.host=localhost worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #========tomcat3======== worker.tomcat3.port=13009 worker.tomcat3.host=localhost worker.tomcat3.type=ajp13 worker.tomcat3.lbfactor = 1 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3 worker.controller.sticky_session=false worker.controller.sticky_session_force=1 #worker.controller.sticky_session=1
如果需要配置远程的tomcat服务器的话,只需要将worker.tomcat3.host=localhost中的localhost改为远程服务器的IP地址即可。本次配置都是本地的tomcat,并且在一台机器上,所以端口号都不相同,如果在不同服务器上,端口号则不需要更改。
3.2tomcat配置
前面已经将tomcat复制了三份,修改每一份中的server.xml配置,打开conf/server.xml文件,修改如下图:
tomcat1:
tomcat2:
tomcat3:
注:由于我这三个tomcat全是本地的,并且在一台服务器上,所以需要修改三种类型的端口号,如果是远程服务器,则只需要修改AJP13的connector的port,其他端口号不需要修改。不论是本地服务器还是远程服务器,AJP13的connector的jvmRoute名称和workers.properties中配置都必须对应。
4。结果测试
在tomcat下面的项目文件夹中修改web.xml,如这里使用test项目,则修改三个tomcat下面的test项目中的web.xml,在每个web.xml的<display-name>节点后添加新的节点<distributable/>。
在每个test项目文件夹下新建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.println("<b>Session 列表</b><br>"); System.out.println("============================"); 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="test.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>
4.1session测试
项目部署好之后,启动三个tomcat以及Apache,启动顺序随意,然后再浏览器中输入http://localhost/test/test.jsp,结果如下图:
刷新页面
再次刷新页面
4.2节点插拔测试
关闭Tomcat
关闭tomcat3,刷新页面,可以不断访问tomcat1和tomcat2,再关闭tomcat2,只能够访问tomcat1,说明节点关闭时运行正常。
启动tomcat
如果重启Tomcat2,无论怎么刷新,始终访问Tomcat3,无法访问tomcat2,这时利用另外台机器访问页面,发现Tomcat2正常,然后在刷本地页面,又可以访问Tomcat2了。对于每个新来的session,Apache按照节点配置中的lbfactor比重选择访问节点,如果某节点node1不能访问,则寻找下一可访问节点,并且将此node1就在该访问session的访问黑名单中,以后该session的访问直接不考虑node1,即使node1又可以访问了。而新来的session是无黑名单的,如果新的session能够访问到node1了,则会将node1在其他所有session访问的黑名单删除,这样其他session就又能访问node1节点了。经过以上测试,说明Tomcat集群和负载均衡已经实现了。
相关文章推荐
- Apache Isis 1.4.0 发布,领域驱动开发框架
- Linux快速构建apache web服务器
- Awstats处理多apache日志
- 安装perl模块小窍门
- PHP+Apache在Windows 9x下的安装和配置
- Apache服务器配置全攻略
- Apache Web让JSP“动”起来
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- apache 环境下 php 的配置注意事项
- 在RedHat下安装apache jserv 1.1.2方法
- windows中PHP5.2.14以及apache2.2.16安装配置方法第1/2页
- 在Windows XP下安装Apache+MySQL+PHP环境
- 解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
- apache rewrite防盗链三例
- Apache 配置详解(最好的APACHE配置教程)
- Apache+php+mysql在windows下的安装与配置(图文)第1/2页
- apache rewrite_module模块使用教程
- Apache rewrite重写规则的常见应用
- 关于Apache默认编码错误 导致网站乱码的解决方案