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

apache+tomcat的集群配置(window环境linux环境)

2015-02-07 13:00 453 查看
本文介绍的是博主在自己的生产环境中实际部署apache+tomcat负载均衡的步骤和一些总结,文档仅代表个人目前的想法,如果不足或错误之处还请各位指出。

个人的生产环境下的web应用为osgi框架集成的tomcat并非单独的tomcat,但经本人实际测试,部署集群环境时tomcat仅需要修改server.xml文件,所以此处与tomcat是集成的还是单独的无必然关系(本文结尾处会给出实际配置过程中用到的软件和配置文件的下载地址,感兴趣的可自行下载测试)

第一部分:(window环境)

1)首先是jdk的安装,我相信作为任何一个java开发人员此处应该都没问题,个人建议jdk1.7(其他版本的本人未测试过)

2)apache2的安装,首先下载apache2,(本文window实例中采用的是Apache 2.2.25)直接去官网即可下载到http://httpd.apache.org/,apache的安装直接一直点下一步即可。在安装完成过后启动apache,然后访问http://localhost/可以看到it works!的界面,表明你的apache安装成功。

3)下载mod_jk(本文window使用的版本为mod_jk 1.2)下载地址为http://tomcat.apache.org/download-connectors.cgi,下载完成之后把mod_jk.so拷贝至apache安装路径的modules文件夹下。

4)配置

(1)在apache安装目录的conf目录中新建mod_jk.conf文件,文件内容如下所示:

#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so

#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties

#指定哪些请求交给tomcat处理,"controller"为在workers.properties指定的负载分配控制器名
JkMount /* controller

(2)修改conf目录下的httpd.conf文件,在文件末尾处加入:

#标明加载mod_jk.conf配置文件
include "D:\Apache2.2\conf\mod_jk.conf"


该文件路径需要根据个人的实际配置进行修改。

(3)在conf目录中新建workers.properties文件,文件内容如下所示:

#这里可以配置任意多个Tomcat,此处配置了2个Tomat服务器.
#host和port根据自己实际配置.如果是本机部署两个tomcat,可分别使用不同的端口.避免冲突
#如果Tomcat不再同一机器上,不需要修改端口。

#server 列表
worker.list=controller,tomcat1,tomcat2
#========tomcat1========

worker.tomcat1.port=8201        #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost        #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1       #server的加权比重,值越高,分得的请求越多

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

worker.tomcat2.port=8202       #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost        #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1        #server的加权比重,值越高,分得的请求越多

#========controller,负载均衡控制器========
worker.controller.type=lb

#指定此负载平衡器负责的Tomcat应用节点。

worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat

#此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台
#Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。

worker.controller.sticky_session=true      #设为true,则表明不进行会话复制,个人不建议使用会话复制模式,在后台有多个tomcat的时候,会话复制是一个非常消耗资源的操作,设置为true之后表明采用粘性session的方式。


(4)修改tomcat的server.xml的配置,开启tomcat的集群功能(本文中测试使用的tomcat为tomcat7.0解压缩版)

找到如下的片段:

<Engine name="Catalina" defaultHost="localhost">
修改为如下配置:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
增加jvmRoute,值为在apache中配置的list集群节点中的值,此处定义为tomcat1,保证和workers.properties里配置一致即可

找下如下的片段:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
将这句话的注释放开即可。

同时需要注意的是如果需要进行session复制,即

worker.controller.sticky_session=false

当设置为false的时候,需要在实际的web工程的web.xml文件中加入
<
distributable
/>标签,


并且要进行session复制同时需要保证session中的对象是序列化的,即implements
Serializable


备注:tomcat需要修改的三个端口分别是下面的shutdown的端口、connect的端口、ajp/1.3的端口:

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


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

[/code]

connectionTimeout
=
"20000"

[/code]


redirectPort
=
"8443"
 
/>

[/code]


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

[/code]




第二部分:(linux环境)

1)首先下载apache的linux版,本文使用的是httpd-2.4.9.tar.gz

解压安装等操作:

#解压
tar –zxvf httpd-2.4.9.tar.gz
#进入目录
cd httpd-2.4.9
#创建安装目录
mkdir /usr/local/apache2
#配置
./configure --prefix=/usr/local/apache2 --enable-so -enable-proxy -enable-proxy_http=shared--enable-module=so --enable-mods-shared=all --enable-proxy-ajp=shared  --enable-proxy-balancer -with-mpm=worker --with-apr=/opt/apr --with-apr-util=/usr/local/apr-util-httpd/ --with-pcre=/usr/local/pcre
#编译
make
#安装
make install


其中在配置过程中可能会报找不到的pcre和apr的错误,本文最后给出的软件包中包含了pcre和apr及apr-util的源码编译包,

安装包过程示例:

#解压apr
tar -zxvf apr.tar.gz
#进入目录
cd apr
#配置、编译、安装
./configure --prefix=/opt/apr
make
make install
#解压apr-util
tar -zxvf apr-util.tar.gz
#进入目录
cd apr-util
#配置、编译、安装
./configure --prefix=/usr/local/apr-util-httpd --with-apr=/opt/apr
#解压pcre
tar -zxvf pcre.tar.gz
#进入目录
cd pcre
#配置、编译、安装
./configure --prefix=/usr/local/pcre
make
make install


apache的启动、停止、重启

/usr/local/apache2/bin/apachectl start

/usr/local/apache2/bin/apachectl
stop

/usr/local/apache2/bin/apachectl
restart

启动apache后访问http://localhost/看到it
works!的页面即表示apache安装成功。

2)下载jk,本文中用到的为tomcat-connectors-1.2.40-src.tar.gz,安装jk

tar -zxvf tomcat-connectors-1.2.40-src.tar.gz
cd tomcat-connectors-1.2.40-src
cd native
./configure --with-apxs=/usr/local/apache2/bin/apxs  --with-java-home=/usr/jdk1.7
make
make install
cp apache-2.0/mod_jk.so /usr/local/apache2/modules/
3)修改apache的配置

在/usr/local/apache2/conf/httpd.conf文件末尾中加入include
/usr/local/apache2/conf/mod-jk.conf

在httpd.conf同级目录中新建mod-jk.conf文件,文件内容如下

#加载mod_jk模块,注意名称与modules目录下的文件名保持一致.
LoadModule jk_module /usr/local/apache2/modules/mod_jk.so

#指定workers.properties文件目录.
JkWorkersFile /usr/local/apache2/conf/workers.properties

#指定哪些请求由tomcat处理,controller为workers.properties文件里指定的负载控制器.
JkMount /* controller
#JkMount /*.html controller
#JkMount /*.jsp controller
#JkMount /*.do controller
#JkMount /servlet/* controller
#JkUnMount /index.html controller
在httpd.conf同级目录中新建workers.properties文件,文件内容如下
worker.list = controller
#========tomcat1========
worker.tomcat1.port=8201
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#========tomcat2========
worker.tomcat2.port=8202      #指定tomcat2服务器AJP的端口,默认为8009
worker.tomcat2.host=localhost #指定tomcat2服务器IP或域名
worker.tomcat2.type=ajp13     #指定tomcat2与apache AJP通讯协议
worker.tomcat2.lbfactor=3     #指定负载平衡因数

#========controller负载平衡控制器========
worker.controller.type=lb                          #指定controller类型
worker.controller.balanced_workers=tomcat1,tomcat2 #指定负载平衡的tomcat
worker.controller.sticky_session=true              #指定是否粘性session
worker.controller.sticky_session_force=false
worker.connection_pool_size=3000
worker.connection_pool_minsize=50
worker.connection_pool_timeout=50000
# session配置说明:
#当sticky_session,sticky_session_force都为true时不复制session,
#sticky_session_force=false指集群中某台服务器多次请求没有响应,则转发到其它服务器处理,
#sticky_session=false不使用粘性session


4)tomcat的配置与window环境下完全相同,此处不再赘述。

最后给出本文配置过程中用到的软件及配置好的配置文件的下载链接:http://pan.baidu.com/s/1sjE2CyD
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat linux it 运维 windows