首页 > 代码库 > 使用Apache HTTPD和JK实现Tomcat集群

使用Apache HTTPD和JK实现Tomcat集群

昨天在单位折腾了大半天,tomcat的集群终于弄好了,原来以为Tomcat的集群只需要在tomcat本身配置一下就行了呢,找了很多资料,不是自己想像的这样,下面对tomcat的集群做一下整理吧,备用。PS:集群应用涉及到上传是个小问题。

工具 apache httpd 2.2, jk 1.23 ,tomcat 7

1.tomcat配置

以本机下做tomct集群为例,复制三份tomcat,分别修改server.xml文件,修改地方如下:

1.tomcat关闭时的监听端口
<Server port="18005" shutdown="SHUTDOWN">
2.tomcat对外直接访问的端口
    <Connector port="9901" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
3.修改tomcat提供其他容器访问的AJP端口
  <Connector port="11009" protocol="AJP/1.3" redirectPort="8443" />
4.修改tomcat的jvmRoute名称
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

//说明:蓝色部分是3个tomcat应该修改的,本机下,参数不能一样

 

2.一路next安装Apache httpd,将mod_jk-1.2.31-httpd-2.2.3.so复制到apache的modules目录下

 

3.修改apache配置

  修改httpd.conf引入mod_jk.conf配置文件

include conf/mod_jk.conf

conf目录下新建mod_jk.conf文件,内容如下:

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller


#说明: 1.LoadModule 加载jk插件到apache
    2.JkWorkersFile 指定jk配置文件位置
  
    3.JkMount设置过哪些请求滤到tomcat处理,上面是简单示例配置,下面更详细




  在conf目录下新建workers.properties文件,内容如下:

#server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=11009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor =1
#========tomcat2========
worker.tomcat2.port=12009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor =1
#========tomcat3========
worker.tomcat3.port=13009
worker.tomcat3.host=localhost
worker.tomcat3.type=ajp13
worker.tomcat3.lbfactor =1
 
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2,tomcat3
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1

//说明:上面蓝色参数就是tomcat中设置的参数
 其中lbfactor表示服务器作为主服务器的可能性
  

 4.以上配置完成后,就可以在每个tomcat下部署相同的应用,分别启动tomcat,然后启动apache,然后就可以通过http://localhost/web应用名称/XXX访问了,这里不需要使用tomcat的端口,而是通过apache的端口来访问的,apache会自动负载均衡到每个tomcat应用服务器。