apache+tomcat集群配置文档(2014-02-21)
一、配置环境:
系统环境:windows2003系统,
jdk安装:jdk1.6版本(如果是jdk1.7的话,配置成功后启动一个tomcat时,不会报错,当启动两个或两个以上的话,就会抛出异常---java.net.SocketException: Invalidargument: no further information,具体原因未知)。
apache版本: httpd-2.2.25-win32-x86-no_ssl.msi。
下载地址:
http://pan.baidu.com/share/link?shareid=2493398705&uk=1361801351&fid=2223994582
tomcat版本:apache-tomcat-6.0.35-windows-x86.zip
下载地址:http://tomcat.apache.org/download-60.cgi
mod_jk版本:tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip
下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
二、安装步骤:
1、jdk安装:
1.1、jdk安装。。。略
1.2、环境变量的配置:
(1) 新建 JAVA_HOME设值: E:\Java\jdk1.6.0 (即jdk安装的位置)
(2)新建CLASSPATH 设值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(3)编辑PATH 在最后面添加: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
2、apache安装
2.1、程序安装
点击安装程序,下一步、下一步 。。。在Apache的安装过程中要设置Network Domain和Server Name为Localhost,设置你的Email地址(这个一定要设置,不然Apache启动不起来)。
2.2、出现的问题
在安装完成以后,弹出dos界面,提示的是80端口被占用了,如图:
解决办法:找到安装apache的位置(我的是:F:\Apache2.2\conf),conf文件夹下的httpd.conf文件。用文本编辑器打开,找到如图的位置(ctrl+f查找,汗。。。):
把listen 80 修改为 listen 1989(即一个没有被占用的端口号就可以)。保存
查看端口号是否被占用的方法:
打开cmd
输入命令:netstat –aon|findstr ‘你要查看的端口号,例如80’,即
netstat –aon|findstr“80”
在浏览器地址栏中输入:http://localhost:1989,显示如下图,即说明apache安装成功
恭喜你,在通往架构师的路上迈出了历史性的一步!^_^
3、集群的配置
3.1、tomcat的title修改
首先解压两份tomcat,放到同一个文件夹下(我的是:F:\Tomcat Group)
如图:
在此路径下:F:\Tomcat Group\apache-tomcat-6.0.35-1\的bin文件夹下找到catalina.bat文件,用文本编辑器打开,找到如下图的位置
即设置tomcat启动后,dos窗口显示的名称Tomcat1,是第一个tomcat;tomcat2是第二个tomcat。效果图:
这样做的好处是:当启动多个tomcat时,可以很容易分辨。当然,也可以不用修改。
3.2、tomcat的server.xml文件的修改
在此路径下:F:\Tomcat Group\apache-tomcat-6.0.35-1\的conf文件下,找到server.xml文件,用文本编辑器打开。
需要修改的地方一共有三个地方:
1、<Server port="8005"shutdown="SHUTDOWN">
2、<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3、<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
4、<Engine name="Catalina"defaultHost="localhost">
前3修改因为是多个tomcat,同样的端口号就会出现端口号冲突。第4处的修改是为后面的配置服务,
我的修改是:tomcat1
1、<Server port="8105"shutdown="SHUTDOWN">
2、<Connector port="8180" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3、<Connector port="8109" protocol="AJP/1.3"redirectPort="8443" />
4、<Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat1">
我的修改是:tomcat2
1、<Server port="8205"shutdown="SHUTDOWN">
2、<Connector port="8280" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3、<Connector port="8209" protocol="AJP/1.3"redirectPort="8443" />
4、<Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat2">
注:只要端口号不冲突,是可以随意设值的。jvmRoute的值也是可以随意设置的
多个tomcat的session共享的修改:
在server.xml文件中找到:
<!—
< Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
把注释拿掉,即可。
3.3、apache的httpd.conf修改
在此路径下F:\Apache2.2\conf,即conf文件夹下,找到httpd.conf文件,用文本编辑器打开
在最后面添加:
include “F:\Apache2.2\conf\mod_jk.conf”
3.4、建立mod_jk.conf文件
即在conf文件夹下用文本文档建立一个名为mod_jk.conf的文件。用文本编辑器打开,在里面添加如下内容:
#加载mod_jk Module
LoadModule jk_modulemodules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFileconf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
#把所有的请求除*.html、*.htm外都交给controller
JkMount /* controller
JkUnMount /*.html controller
JkUnMount /*.htm controller
#指定jk的日志输出文件
JkLogFile logs/mod_jk.log
#指定日志级别
JkLogLevel debug
3.5、mod_jk.so文件
解压tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip压缩文件,把文件mod_jk.so文件拷贝到F:\Apache2.2\modules文件夹里
3.6、建立workers.properties文件
在F:\Apache2.2\conf文件夹下,建立名为workers.properties文件,在里面添加如下内容:
# worker列表,controller和mod_jk.conf文件里的controller对应,
worker.list=controller,tomcat1,tomcat2
#第一个server的配置,server名为tomcat1
#ajp13 端口号,和tomcat的第3项修改对应
worker.tomcat1.port=8109
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat1.lbfactor=1
#第二个server的配置,server名为tomcat2
worker.tomcat2.port=8209
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#server名为controller,用于负载均衡
worker.controller.type=lb
#指定分担请求的server列表,用逗号分隔
worker.controller.balanced_workers=tomcat1,tomcat2
#1.worker.controller.sticky_seesion如果设为true则说明会话具有“粘性”,也就是如果一个用户在一个Tomcat中建立了会话后则此后这个用户的所有操做都由这个Tomcat服务器承担。
#集群系统不会进行会话复制。如果设为false则下面的 sticky_session_force无意义。
worker.controller.sticky_session=false
#2.sticky_session_force:假设sticky_session设为true,用户会话具有了粘性,
#当当前Tomcat服务器停止服务后,如果sticky_session_force为true也就是强制会话与当前Tomcat关联,那么会报500错误,如果设为false则会转到另外的Tomcat服务器。
worker.controller.sticky_session_force=false
3.7、web项目的web.xml文件的修改
在web.xml文件里的web_app标签里面添加
<distributable/>
实现session共享
OK,到此处。整个集群就配置完成啦。可以建立项目进行测试了,如需转载,请标明出处.