Apache+Tomcat集群(LINUX)

前提条件:

linux服务器,有网络;

服务器已经安装了jdk1.6或者更高版本,并且在已经配置好了环境变量JAVA_HOME、JRE_HOME、PATH等。

一、下载apache-httpd

下载地址:http://httpd.apache.org/或者http://httpd.apache.org/download.cgi

本教程选择httpd-2.2.29,因此下载了httpd-2.2.29.tar.gz

二、安装apache-httpd

1.上传。将httpd-2.2.29.tar.gz上传到linux服务器。

2.解压。tar-xvfhttpd-2.2.29.tar.gz解压压缩包。

3.安装。切换到httpd-2.2.29解压目录,依次执行以下命令。(将apache-httpd安装在/app/httpd/下)

./configure--prefix=/app/httpd/

make

makeinstall

4.测试启动。切换到httpd-2.2.29安装目录,启动服务。

cd/app/httpd/bin/

./apachectlstart

如果没有提示错误或使用下面命令显示一系列进程,表示安装成功。

ps-ef|grephttpd

三、安装tomcat

1.下载tomcat。下载地址:http://tomcat.apache.org/。本教程下载的是apache-tomcat-6.0.39.tar.gz。将下载的tomcat压缩包上传到linux服务器。

2.安装tomcat。将apache-tomcat-6.0.39.tar.gz解压到/app/tomcat/下,apache-tomcat-6.0.39重命名为tomcat1,然后拷贝一份,命名为tomcat2。

tar-xvfapache-tomcat-6.0.39.tar.gz-C/app/tomcat/

mv/app/tomcat/apache-tomcat-6.0.39/app/tomcat/tomcat1

cp/app/tomcat/tomcat1/app/tomcat/tomcat2

3.修改配置。

修改端口号和tomcat名,修改conf下的server.xml

tomcat1:

<Serverport="8005"shutdown="SHUTDOWN"debug="0">

改为

<Serverport="10001"shutdown="SHUTDOWN"debug="0">

<Connectorport="80"

maxThreads="150"minSpareThreads="25"maxSpareThreads="75"

enableLookups="false"redirectPort="8443"acceptCount="100"

debug="0"connectionTimeout="20000"

disableUploadTimeout="true"URIEncoding="GBK"/>

改为<Connectorport="10002"

maxThreads="150"minSpareThreads="25"maxSpareThreads="75"

enableLookups="false"redirectPort="8443"acceptCount="100"

debug="0"connectionTimeout="20000"

disableUploadTimeout="true"URIEncoding="GBK"/>

<Connectorport="8009"enableLookups="false"redirectPort="8443"debug="0"protocol="AJP/1.3"/>

改为

<Connectorport="10003"enableLookups="false"redirectPort="8443"debug="0"protocol="AJP/1.3"/>

<Enginename="Catalina"defaultHost="localhost">

改为

<Enginename="Catalina"defaultHost="localhost"jvmRoute="tomcat1">

<Clusterclassname="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

去掉注释

tomcat2:

<Serverport="8005"shutdown="SHUTDOWN"debug="0">

改为

<Serverport="11001"shutdown="SHUTDOWN"debug="0">

<Connectorport="80"

maxThreads="150"minSpareThreads="25"maxSpareThreads="75"

enableLookups="false"redirectPort="8443"acceptCount="100"

debug="0"connectionTimeout="20000"

disableUploadTimeout="true"URIEncoding="GBK"/>

改为<Connectorport="11002"

maxThreads="150"minSpareThreads="25"maxSpareThreads="75"

enableLookups="false"redirectPort="8443"acceptCount="100"

debug="0"connectionTimeout="20000"

disableUploadTimeout="true"URIEncoding="GBK"/>

<Connectorport="8009"enableLookups="false"redirectPort="8443"debug="0"protocol="AJP/1.3"/>

改为

<Connectorport="11003"enableLookups="false"redirectPort="8443"debug="0"protocol="AJP/1.3"/>

<Enginename="Catalina"defaultHost="localhost">

改为

<Enginename="Catalina"defaultHost="localhost"jvmRoute="tomcat2">

<Clusterclassname="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

去掉注释

修改完成后可以启动tomcat测试端口是否可用。

四、apache-httpd配置

1.下载mod_jk.so。下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/。选择linux/目录下的对应的mod_jk.so。

例如本教程使用的是httpd-2.2.29,64位的linux,选择的是linux/jk-1.2.31/x86_64/mod_jk-1.2.31-httpd-2.2.x.so

2.将下载的mod_jk-1.2.31-httpd-2.2.x.so拷贝至/app/httpd/modules/下。

3.修改/app/httpd/conf/httpd.conf。

#监听端口,改为80,如果80已经被占用,可以该为其他端口。

Listen80

#如果Directory中是Denyfromall,改为Allowfromall

<Directory"/app/httpd/cgi-bin">

AllowOverrideNone

OptionsNone

Orderallow,deny

Allowfromall

</Directory>

#加入文件mod_jk.conf,虽然这些配置可以直接配置在httpd.conf中,但还是单独拿出来比较明朗。

includeconf/mod_jk.conf

4.创建文件mod_jk.conf

touch/app/httpd/conf/mod_jk.conf

vi/app/httpd/conf/mod_jk.conf

在文件中添加一下内容,注意mod_jk.so文件名使用自己下载的文件。本教程使用的是mod_jk-1.2.31-httpd-2.2.x.so

#####################mod_jk.conf########################

#Loadmod_jkmodule

LoadModulejk_modulemodules/mod_jk-1.2.31-httpd-2.2.x.so

#Wheretofindworkers.properties

JkWorkersFileconf/workers.properties

#Wheretoputjklogs

JkLogFilelogs/mod_jk.log

#Setthejkloglevel[debug/error/info]

JkLogLevelinfo

#Selectthelogformat

JkLogStampFormat"[%a%b%d%H:%M:%S%Y]"

#JkOptionsindicatetosendSSLKEYSIZE,

JkOptions+ForwardKeySize+ForwardURICompat-ForwardDirectories

#JkRequestLogFormatsettherequestformat

JkRequestLogFormat"%w%V%T"

JkAutoAlias/export/home/tomcat/tomcat_vcmplat/webapps

#SendJSPsforcontext/toworkernamedloadBalancer

#JkMount/*.jsploadBalancer

#JkMount/*.do*loadBalancer

JkMountFileconf/urimap.properties

######################endmod_jk.conf####################

5.创建workers.properties

touch/app/httpd/conf/workers.properties

vi/app/httpd/conf/workers.properties

在文件中添加一下内容。

#####################workers.properties########################

#server

worker.list=loadBalancer

#========tomcat1========

worker.tomcat1.port=10003

worker.tomcat1.host=localhost

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor=1

#========tomcat2========

worker.tomcat2.port=11003

worker.tomcat2.host=localhost

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

#========loadBalancer,负载均衡控制器========

worker.loadBalancer.type=lb

worker.loadBalancer.balanced_workers=tomcat1,tomcat2

#会话粘性,如果为true或1,一个用户在一个Tomcat中建立了会话后则此后这个用户的所有操做都由这个Tomcat服务器承担

worker.loadBalancer.sticky_session=false

#worker.loadBalancer.sticky_session为true时才有效

#如果sticky_session_force为true也就是强制会话与当前Tomcat关联,那么会报500错误,如果设为false则会转到另外的Tomcat服务器

#worker.loadBalancer.sticky_session_force=1

#worker.loadBalancer.sticky_session=1

##################endworkers.properties##################

6.创建urimap.properties

touch/app/httpd/conf/urimap.properties

vi/app/httpd/conf/urimap.properties

在文件中添加一下内容。/*是对所有请求处理

#####################urimap.properties########################

/*=loadBalancer

!/*.gif=loadBalancer

!/*.jpg=loadBalancer

!/*.png=loadBalancer

!/*.css=loadBalancer

!/*.js=loadBalancer

!/*.htm=loadBalancer

!/*.html=loadBalancer

!/*.mid=loadBalancer

!/*.xml=loadBalancer

!/*.txt=loadBalancer

!/*.mp3=loadBalancer

##################endurimap.properties##################

五.重启apache-httpd

/app/httpd/bin/apachectlstop

/app/httpd/bin/apachectlstart

1.输入http://121.40.120.56:80/查看是否能够正常访问(其中121.40.120.56为服务器ip)。

2.用MyEclipse新建一个web项目Test,在WebRoot下添加test.jsp,内容如下。web.xml中添加<distributable/>。然后将此项目部署到tomcat1和tomcat2下,重启tomcat1和tomcat2,

输入http://121.40.120.56:80/Test/test.jsp

http://121.40.120.56:10002/Test/test.jsp

http://121.40.120.56:11002/Test/test.jsp

查看不同tomcat下的sessionId是否相同,如果相同,说明session复制成功。

<%@pagecontentType="text/html;charset=GBK"%>

<%@pageimport="java.util.*"%>

<html><head><title>Test</title></head>

<body>

ServerInfo:

<%

out.println(request.getLocalAddr()+":"+request.getLocalPort()+"<br>");%>

<%

out.println("<br>ID"+session.getId()+"<br>");

//如果有新的Session属性设置

StringdataName=request.getParameter("dataName");

if(dataName!=null&&dataName.length()>0){

StringdataValue=request.getParameter("dataValue");

session.setAttribute(dataName,dataValue);

}

out.println("<b>Session列表</b><br>");

System.out.println("============================");

Enumeratione=session.getAttributeNames();

while(e.hasMoreElements()){

Stringname=(String)e.nextElement();

Stringvalue=session.getAttribute(name).toString();

out.println(name+"="+value+"<br>");

System.out.println(name+"="+value);

}

%>

<formaction="test.jsp"method="POST">

名称:<inputtype=textsize=20name="dataName">

<br>

值:<inputtype=textsize=20name="dataValue">

<br>

<inputtype=submit>

</form>

</body>

</html

相关推荐