您的位置:首页 > 运维架构 > Tomcat

Apache Tomcat集群安装配置

2010-05-28 19:41 302 查看
Apache Tomcat集群安装配置

1、 安装环境及软件:

Centos5.5操作系统

jdk1.6.0_14

Apache httpd

Apache Tomcat

Apache mod_jk

Mysql数据库

前端采用Apache mod_jk实现负载平衡

后端使用JDBC存储的永久会话管理器实现session共享,数据库为mysql。

笔者的安装环境为一台Centos服务器,所以对于Tomcat下有许多端口要做修改,以免发生商品冲突。如果两个Tomcat是分别在两台机器上则修改端口的步骤可以省略。

2、 JDK安装

JDK使用的版本为jdk1.6.0_14,我不喜欢使用系统自带的openJDK随然有人说openJDK性能也不错,但我遇到过一次使用openJDK则不能正带运行java脚本的事件,弄的我们几个人在晚上12点多找了好几个小时的原因。

JDK的安装就不在这里说了,安装过程是丰常简单的,网上到处都有教程。

3、 Apache httpd安装

Apache httpd使用yum来安装,

yum install -y httpd httpd-devel

#下载mod_jk.so要下载与httpd相对应的版本的。

下载地址:http://tomcat.apache.org/download-connectors.cgi

我下载的版本是

tomcat-connectors-1.2.30-src.tar.gz

然后时行编译

tar -xzvf tomcat-connectors-1.2.30-src.tar.gz

cd tomcat-connectors-1.2.30-src/native

./configure --with-apxs=/usr/sbin/apxs

make

make install

#修改httpd.conf文件

cd /etc/httpd/conf

vim httpd.conf

#添加几个字段

#加载mod_jk Module

LoadModule jk_module modules/mod_jk.so

#指定workers.properties文件路径

JkWorkersFile conf/workers.properties

#告知mod_jk将自己日志写到哪里

JkLogFile logs/mod_jk_cluster.log

#控制日志级别,info为正常的日志级别,error和debug级别将提供更多的日志细节

JkLogLevel debug

#记录Tomcat worker名称、网址、和每个请求的时间

JkRequestLogFormat "%w %U %T"

#其它的变量还有"[%a %b %d %U %H:%M:%S %w %R %Y] "

#指定那些请求交给tomcat处理,controller为在workers.propertise里指定的负载分配控制器

JkMount /* ball

JkMount /jkstatus/ stat1

#在conf目录下新建一个workers.properties文件内容为

worker.list =ball,stat1 #server 列表

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

worker.tomcat1.type=ajp13 #ajp13 端口号,在tomcat下server.xml配置,默认8009

worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 在一台机器上配置时。

#有时写logalhost也可以那是因为centos默认的主机名是locahost,如果更改过主机名则必须改成对就的主机名或是ip地址,建议直接改成对应的ip地址。

worker.tomcat1.port=7001

worker.tomcat1.lbfactor = 10 #server的加权比重,值越高,分得的请求越多

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

worker.tomcat2.type=ajp13 #ajp13 端口号,在tomcat下server.xml配置,默认8009

worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat2.port=7002

worker.tomcat2.lbfactor = 10 #server的加权比重,值越高,分得的请求越多

#======================

worker.ball.type=lb

worker.ball.sticky_session=1 #默认为1,表示同样的tomcat服务实例将服务来自同样会话的请求

worker.ball.balance_workers=tomcat1,tomcat2

worker.stat1.type=status

httpd启动时如果会提示:

启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

你需要修改一下你http的配置文件.找到ServerName这一行,

ServerName new.host.name:80改成http服务器的IP或者域名:80

4、 Apache Tomcat安装

Tomcat是在其官网(http://tomcat.apache.org/)上下载的最新版本apache-tomcat-6.0.26-src.tar.gz

这个版本解压之后就可以使用。

下载地址:http://tomcat.apache.org/download-60.cgi

我使用的是Core版本的

http://apache.etoak.com/tomcat/tomcat-6/v6.0.26/bin/apache-tomcat-6.0.26.tar.gz

下载后放置到相应的位置

我放置的位置为

cd /usr/local/

tar -xzvf apache-tomcat-6.0.26.tar.gz

#解压压缩包

mv apache-tomcat-6.0.26 tomcat1

cp -r tomcat1 tomcat2

#复制另一份tomcat2

cd tomcat1/conf/

vim server.xml

#修改Tomcat1的配置文件。

<Engine name="Catalina" defaultHost="localhost">

改为

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

#jvmRoute="tomcat1"其中tomcat1是这台机器的唯一标识。该属性ID必须与workers.properties文件中唯一的jvmRoute ID一一对应。

#另外由于本环境是在一台机器上部署两个Tomcat所以要修改几个端口,如果是在两台机器上分别部署Tomcat则不用修改。

<Server port="8005" shutdown="SHUTDOWN">

改为

<Server port="6001" shutdown="SHUTDOWN">

#----------------------------------------------------------------

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"/>

改为

<Connector port="8001" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"/>

#-----------------------------------------------------------------

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

改为

<Connector port="7001" protocol="AJP/1.3" redirectPort="8443" />

#相应的修改Tomcat2下的配置文件

cd /usr/local/tomcat2/conf/

vim server.xml

#修改Tomcat2的配置文件。

<Engine name="Catalina" defaultHost="localhost">

改为

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">

#jvmRoute="tomcat1"其中tomcat1是这台机器的唯一标识。该属性ID必须与workers.properties文件中唯一的jvmRoute ID一一对应。

#另外由于本环境是在一台机器上部署两个Tomcat所以要修改几个端口,如果是在两台机器上分别部署Tomcat则不用修改。

<Server port="8005" shutdown="SHUTDOWN">

改为

<Server port="6002" shutdown="SHUTDOWN">

#----------------------------------------------------------------

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"/>

改为

<Connector port="8002" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"/>

#-----------------------------------------------------------------

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

改为

<Connector port="7002" protocol="AJP/1.3" redirectPort="8443" />

配置Web.xml文件

在每一个tomcat实例webapps下的应用程序的WEB-INF/web.xml添加distributable属性

只要加一个

<distributable/>

即可。(但是貌似不加也行)

配置元素

向每个位于webapps/应用程序名/META-INF 目录(如果这个目录不存在,则创建它)下的集群节点添加一个context.xml文件,文件内容如下

<Context>

<Manager className="org.apache.catalina.session.PersistentManager">

<Store className="org.apache.catalina.session.JDBCStore"

connectionURL="jdbc:mysql://localhost/wroxtomcat?user=empro&password=empass"

driverName="com.mysql.jdbc.Driver"

sessionIdCol="session_id"

sessionValidCol="valid_session"

sessionMaxInactiveCol="max_inactive"

sessionLastAccessedCol="last_access"

sessionTable="tomcat_sessions"

sessionAppCol="app_context"

sessionDataCol="session_data"

/>

</Manager>

</Context>

其中wroxtomcat为数据库名称,empro为数据库的用户名,empass为数据库的密码。

如果数据库不在本机的话将localhost改为对应的数据库服务器的IP地址。

另外还要将mysql和tomcat的连接jar包放到tomcat下的lib文件下

我下载的版本是

mysql-connector-java-5.1.6.jar

5、mysql数据库配置

数据库的安装我就不写了。Centos一般默认带mysql数据库直接起动就可以用

进入数据库后要添加新的用于存放sessions的库、表和对应登录的用户名密码。

create database wroxtomcat;

#创建数据库

use wroxtomcat;

create table tomcat_sessions(

session_id varchar(100) not null primary key,

valid_session char(1) not null,

max_inactive int not null,

last_access bigint not null,

app_context varchar(255),

session_data mediumblob,

KEY kapp_context(app_context)

);

#创建数据表。

GRANT SELECT,INSERT,UPDATE,DELETE ON wroxtomcat.tomcat_sessions TO

'empro'@'localhost'IDENTIFIED BY 'empass';

6、关于集群的web项目

项目中需有对要存入sessions的java类进行序列代。使该类实现接口Serializable即可。

该接口为一个空的接口只要加上

implements java.io.Serializable

就可以接口内没有任何方法。

注:由于本例是在同一个系统内安装多个tomcat所以不能对tomcat的环境变量进行全局声明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: