Apache +tomcat集群
安装环境
系统cenos4.6,jdk,tomcat5.5,
安装包准备
apache-tomcat-5.5.26.tar
httpd-2.2.10.tar
jdk-6u2-linux-i586-rpm
tomcat-connectors-1.2.25-src.tar
1.安装jdk环境
安装包
jdk-6u2-linux-i586-rpm.bin
chmod u+x jdk-6u2-linux-i586-rpm.bin //增加可执行权限
./jdk-6u2-linux-i586-rpm.bin
一直翻到最后一页,选择Y,即可完成安装
cd /usr/java
ln -s jdk1.6.0_02 jdk
ln -s jdk1.6.0_02/jre /usr/local/jre
cd /usr/bin
rm -rf java
rm -rf javac
然后在usr/bin
ln -s /usr/java/jdk1.6.0_02/bin/java /usr/bin/java
ln -s /usr/javac/jdk1.6.0_02/bin/javac /usr/bin/javac
设置环境变量 vi /etc/profile
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin
export PATH
TOMCAT_HOME=/usr/local/tomcat
export TOMCAT_HOME
2. 安装tomcat
直接解压缩apache-tomcat-5.5.26.tar
tar xzvf apache-tomcat-5.5.26.tar
mv apache-tomcat-5.5.26 /usr/local
cd /usr/local
ln -s apache-tomcat-5.5.26 tomcat1
安装第一个tomcat
然后直接
cp -rf apache-tomcat-5.5.26 apache-tomcat-5.5.26-2
ln -s apache-tomcat-5.5.26-2 tomcat2
设置tomcat1的环境变量
export CATALINA_HOME=/usr/local/tomcat
export TOMCAT_HOME=/usr/local/tomcat
设置tomcat 自启动
vi /etc/rc.d/init.d/tomcat1
#--------------------------------------------------------
#!/bin/sh
export JAVA_HOME=/usr/java/default
export CATALINA_HOME=/usr/local/tomcat
case "$1" in
'start')
/usr/local/tomcat/bin/startup.sh
touch /var/lock/subsys/tomcat
;;
'stop')
/usr/local/tomcat/bin/shutdown.sh
rm -f /var/lock/subsys/tomcat
;;
'restart')
$0 stop
$0 start
;;
*)
echo "Usage: tomcat { start | stop | restart }"
exit 1
esac
exit 0
#-----------------------------------------------------
vi /etc/rc.d/init.d/tomcat2
#--------------------------------------------------------
#!/bin/sh
export JAVA_HOME=/usr/java/default
export CATALINA_HOME=/usr/local/tomcat2
case "$1" in
'start')
/usr/local/tomcat2/bin/startup.sh
touch /var/lock/subsys/tomcat2
;;
'stop')
/usr/local/tomcat2/bin/shutdown.sh
rm -f /var/lock/subsys/tomcat2
;;
'restart')
$0 stop
$0 start
;;
*)
echo "Usage: tomcat2 { start | stop | restart }"
exit 1
esac
exit 0
#-----------------------------------------------------
chmod u+x /etc/rc.d/init.d/tomcat1
chmod u+x /etc/rc.d/init.d/tomcat2
此时两个tomcat就都装成功了
3.安装apache环境
安装包是 httpd-2.2.8.tar.gz
安装包在/install/下面
tar -xzvf httpd-2.2.8.tar.gz
目录 httpd-2.2.8
---------------------------------------------------
cd /install/httpd-2.2.8
cd srclib/apr
./configure --prefix=/usr/local/apr
make
make install
---------------------------------------------------
cd srclib/apr-util
./configure --prefix=/usr/local/apr-util /
> --with-apr=/usr/local/apr
make
make install
--------------------------------------------------
cd /install/httpd-2.2.8/
./configure --prefix=/usr/local/apache /
> --enable-so /
> --enable-rewrite=share /
> --enable-deflate /
> --with-mpm=worker /
> --with-apr=/usr/local/apr /
> --with-apr-util=/usr/local/apr-util /
> --with-java-home=/usr/local/jdk
-----------------------------------------------------
-----------------------------------------------------
加载jk模块
安装包是jakarta-tomcat-connectors-1.2.15-src.tar.gz
tar -xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz
压缩后文件:tomcat-connectors-1.2.25-src
cd /home/install/tomcat-connectors-1.2.25-src
cd native/
./configure --with-apxs=/usr/local/apache/bin/apxs
make
make install
//此时查看/usr/local/apache/modules 下面有没有mod_jk.so
--------------------------------------------------------
查看
/usr/local/apache/bin/httpd -l //看看是否有mod_deflate.c 和 worker.c模块,如果有说明安装成功
新建自启动
vi /etc/rc.d/init.d/httpd
#-----------------------------------------------------
#!/bin/sh
case "$1" in
'start')
/usr/local/apache/bin/apachectl start
touch /var/lock/subsys/httpd
;;
'stop')
/usr/local/apache/bin/apachectl stop
rm -f /var/lock/subsys/httpd
;;
'restart')
$0 stop
$0 start
;;
*)
echo "Usage: httpd { start | stop | restart }"
exit 1
esac
exit 0
#-----------------------------------------------------
chmod a+x /etc/rc.d/init.d/httpd
启动apache
service httpd start
ps ux
查看服务已经启动
------------------------------------------------------
3. 配置apache
cd /usr/local/apache/conf
vi httpd.conf
-------------------------------------------------------
在最后新增
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /usr/local/apache/conf/jk/workers.properties
JkShmFile logs/mod_jk.shm
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel info
JkMount /*.jsp controller
JkMount /*.html controller
JkMount /*.do controller
JkMount /*.* controller
JkMount / controller
JkMount /*/ controller
------------------------------------------------------
配置JK
vi /usr/local/apache/conf/jk/workers.properties
添加如下
#workers.tomcat_home=/usr/local/tomcat //如果tomcat都在 一台机器上不用此条
workers.java_home=/usr/local/jdk
ps=/
worker.list=controller
#------配置tomcat1-------------
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#-----配置tomcat2--------------
worker.tomcat2.port=9009
worker.tomcat2.host=192.168.1.240
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#-----配置controller负载均衡
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
#注:tomcat1和 tomcat2 须是tomcat中server.xml中的jvmRoute="tomcat1"指定的名字
----------------------------------------------------------------
tomcat集群配置,session同步配置
---------------------------------------------------------------------------------
tomcat1配置
vi /usr/local/tomcat1/conf/server.xml
修改Engine节点,找到<Engine name="Catalina" defaultHost="localhost">
修改为<Engine name="Catalina" defaultHost="localhost",jvmRoute="tomcat1">
如果上面还有Engine 节点,就注释掉
找到cluster节点,把整个cluster的注释去掉
然后修改
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastBindAddress="192.168.1.240"
mcastAddr="224.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="192.168.1.240"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
#192.168.1.240 为本机IP地址
-------------------------------------------------------------------------------------
tomcat2配置
1. tomcat为本机
vi /usr/local/tomcat2/conf/server.xml
修改Engine节点,找到<Engine name="Catalina" defaultHost="localhost">
修改为<Engine name="Catalina" defaultHost="localhost",jvmRoute="tomcat2">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastBindAddress="192.168.1.240"
mcastAddr="224.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="192.168.1.240"
tcpListenPort="4002" //这一步一定要做
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
#192.168.1.240 为本机IP地址
修改端口8005,8080,8009,8082分别更改为
9005,9080,9009,9082
------------------------------------------------------------------------------------
2.tomcat为另外一台机器
vi /usr/local/tomcat2/conf/server.xml
修改Engine节点,找到<Engine name="Catalina" defaultHost="localhost">
修改为<Engine name="Catalina" defaultHost="localhost",jvmRoute="tomcat2">
修改
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastBindAddress="192.168.1.238"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="192.168.1.238"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
3. 添加应用
WEB_INF 下面的web.xml里面必须添加<distributable/>
只要添加在</web-app>之前就可以
--------------------------------------------------------------------------------------
测试广播是否可用
首先需要开启网卡组播功能
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1
java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2
这时需要下载tomcat-replication.jar 包,http://cvs.apache.org/~fhanik/tomcat-replication.jar
进行测试(这一步主要是测试组播是否可用,不进行也可以)
----------------------------------------------------------------------------------------
简单添加应用
webapps 下新建test 目录
目录下建WEB-INF目录下的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 [url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]"
version="2.4">
<display-name>TomcatDemo</display-name>
<distributable/>
</web-app>
再在webapps 下 建立print.jsp test.jsp
Print.jsp :
<%
System.out.println("www.linuxtone.org liuyu.blog.51cto.com");
%>
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>");
String dataName = request.getParameter("dataName");
session.setAttribute("myname","session?");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session P±?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">
?3?<input type=text size=20 name="dataName">
<br>
?:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
重启所有的服务。
此时,开启两个浏览器,分别浏览
192.168.1.240,分别得到tomcat1
和tomcat2的页面,就表明
已经集群成功了