Tomcat集群搭建

关于如何搭建Tomcat集群网上还是能搜到很多相关的教程,这里结合我自己在实际应用中的操作做下备忘。

案例说明:

  这里以在本机部署的2个tomcat来做集群。当然,tomcat集群可以是分布式的,而差异也仅仅是在地址-端口的配置上,文章后面会讲到。

部署环境:

操作系统: Red Hat Enterprise Linux Server release 6.0 (Santiago)(x64)
JDK版本: 1.6.0_45

集群构成:

httpd + tomcat + mod_jk

版本选择:

httpd-2.2.26
apache-tomcat-7.0.42
mod_jk-1.2.31-httpd-2.2.3 #这里写的是httpd-2.2.3,但其实跟httpd-2.2.26也能适配

以上文件(都是我从Apache官网下载的)我已经做了打包并上传至百度云盘,需要的朋友可以使用下面的链接下载:

http://pan.baidu.com/s/1mg1I1V6

把所需文件上传至服务器以后,我们就可以动手来搭建了。

1.首先安装httpd,过程很简单如下:

#解压httpd包
tar -zxf httpd-2.2.26.tar.gz
cd httpd-2.2.26/

#配置预编译选项,这里只关心输出目录就可以了
./configure --prefix=~/apache2
#编译
make
#安装
make install

2.部署tomcat

#解压tomcat包,并复制成2份
tar -zxf apache-tomcat-7.0.42.tar.gz
mv apache-tomcat-7.0.42/ tomcat1/
cp -r tomcat1/ tomcat2/

2.1配置tomcat属性,这里以tomcat1、2为例(这里需要注意的地方主要是端口,设置时不要造成冲突即可):

#修改tomcat配置文件server.xml,主要修改:Shutdown端口,Connect服务端口,AJP端口
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1" redirectPort="8443" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
#修改集群名称和tomcat别名
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
#去掉cluster节点的注释
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
#修改以上端口是为了避免本机内多个tomcat同时运行造成端口冲突
#修改tomcat配置文件context.xml,为<Context>节点增加distributable="true"属性

同理,tomcat2的配置:

#修改tomcat配置文件server.xml,主要修改:Shutdown端口,Connect服务端口,AJP端口
<Server port="8007" shutdown="SHUTDOWN">
<Connector port="8082" protocol="HTTP/1.1" redirectPort="8443" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
#修改集群名称和tomcat别名
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
#去掉cluster节点的注释
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
#修改以上端口是为了避免本机内多个tomcat同时运行造成端口冲突
#修改tomcat配置文件context.xml,为<Context>节点增加distributable="true"属性

2.2为tomcat增加个测试文件,后期测试集群性能使用:

<!--编辑webapps/test/test.jsp,主要用来测试负载均衡情况-->

<%@ page contentType="text/html; charset=GB2312" %>
<html>
    <head>
        <title>tomcat-cluster-test-page</title>
    </head>
    <body>
        SessionID: <%=session.getId() %>
    </body>
</html>

OK,基本上tomcat的配置到这里就结束了。

3.为httpd增加集群配置文件

#在apache2/conf/下增加wokers.properties文件
#文件内添加内容,形式如下:

#server
worker.list=loadbalancer

#tomcat1
worker.tomcat1.port=8010 #该端口是tomcat1的AJP服务端口,设置方式如下节所示
worker.tomcat1.host=localhost #如果tomcat部署在其他机器上,可填写其服务器IP
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1

#tomcat2
worker.tomcat2.port=8011 #该端口是tomcat2的AJP服务端口,设置方式如下节所示
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

#loadbalancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat1,tomcat2
worker.loadbalancer.sticky_session=1

3.1将mod_jk解压后apache2/modules下并命名文件为mod_jk.so,接下来修改配置文件如下:

#编辑apache2/conf/httpd.conf,在底部增加配置:

#加载mod_jk模块
LoadModule jk_module modules/mod_jk.so

#指定负载均衡配置文件
JkWorkersFile conf/workers.properties

#定义日志输出
JkLogFile logs/mod_jk.log
JkLogLevel debug

#将任意请求都交由loadbalancer控制器处理
JkMount  /* loadbalancer

3.2为httpd手写一个启动控制器:

#!/bin/bash
#     file: run.sh
#     what: httpd-controler, Usage: run.sh [OPTIONS] <start|status|stop>

case "$1" in
    start)
        /tomcat/apache2/bin/apachectl -f /tomcat/apache2/conf/httpd.conf
        echo "apache-httpd started."
        ;;
    stop)
        kill -TERM `cat /ecis3/apache2/logs/httpd.pid`
        echo "apache-httpd stopped."
        ;;
    status)
        if [ -z "`ps -ef|grep httpd|grep -v grep`" ]; then
            echo "apache-httpd not started."
        else
            echo "apache-httpd is running."
        fi
        ;;
    *)
        echo "Usage: $0 [OPTIONS] <start|stop|status>"
        ;;
esac

4.启动tomcat和httpd:

tomcat1/bin/startup.sh
tomcat2/bin/startup.sh 

apache2/bin/run.sh start

启动后,通过浏览器访问http://localhost:8080/test/test.jsp,页面显示正常:

那么我们来找个机器测试下负载均衡性能,测试结果如下:

[[email protected] ~/test]$for((i=0;i<1000;i++))
> do
>   wget http://192.168.1.100:8080/test/test.jsp 2>/dev/null
> done
[[email protected] ~/test]$awk -F. ‘/SessionID/{a[$2]++}END{for(i in a){print i, a[i]}}‘ test.jsp*
tomcat1   500
tomcat2   500

从结果来看:负载后,tomcat接收到的请求占比差不多1:1,还是不错的。

以上即是tomcat集群搭建的全过程了,文章如有不当之处各位请不吝赐教。

时间: 2024-10-10 15:17:26

Tomcat集群搭建的相关文章

Apache+tomcat或Nginx+tomcat集群搭建

Apache+tomcat集群搭建 1.http://httpd.apache.org/下载apache,本博客以httpd-2.4.12-x86-vc11-r2版本为例(第一个发行版中的) 2.http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/windows/ 下载mod_jk 3.注意Apache和mod_jk的版本,32bit后者64bit要统一 4.apache的httpd.conf文件可能有点问题

Centos下Apache+Tomcat集群--搭建记录

一.目的 利用apache的mod_jk模块,实现tomcat集群服务器的负载均衡以及会话复制,这里用到了<Cluster>. 二.环境 1.基础:3台主机,系统Centos6.5,4G内存,50G硬盘. yum源已更换为阿里源(如何更换可参考博客的另外一篇文章) 2.软件:development tools,jdk-7u9-linux-x64.rpm;源码编译软件apr-util-1.5.4.tar.gz,apr-1.5.2.tar.gz,tomcat-connectors-1.2.40-s

Tomcat集群搭建超详细(apache+mod_jk+tomcat)

TOMCAT集群 目录 TOMCAT集群 1 1 集群 1 1.1 什么是集群 1 1.2 集群的特性 1 1.3 集群的分类 1 1.4 TOMCAT集群配置的优缺点 2 1.5 APACHE+TOMCAT 2 1.6 环境说明 2 2 软件安装 3 2.1 安装说明 3 2.2 JDK安装 3 2.3 APACHE安装 4 2.4 TOMCAT安装 4 3 集群配置 6 3.1 APACHE+MOD_JK+TOMCAT配置 6 3.2 测试 7 4 SESSION复制 8 4.1 SESSI

solr +zookeeper+tomcat 集群搭建

最近需要搭建一个cloudSolr集群,写下记录.基础环境是在centos6.5 64bit 3个下载地址: 1. 下载Solr-4.x http://lucene.apache.org/solr/downloads.html 2.下载Tomcat http://tomcat.apache.org/download-70.cgi 3.下载Zookeeper http://zookeeper.apache.org/releases.html 1.zookeeper zookeeper的安装比较简单

Niginx +Tomcat 集群搭建

1 安装niginx服务器,然后启动,访问localhost;出现欢迎界面证明niginx启动成功: 如上图的目录是nginx1.1的目录结构: 2 之后下载tomcat,然后赋值一份,总共两个tomcat文件,修改其中的一个的端口:以及修改两个tomcat下面的index.jsp.为了区分这两个tomcat. 3 修改nginx的配置文件:如下所示: #user nobody; worker_processes 1; #工作进程数目,一般和计算机的核数相同 #error_log logs/er

memcached演练(3) 使用memcached搭建tomcat集群

上篇文章,已经明确了tomcat集群的必要性,主要从高可用和高并发量考虑.一般使用tomcat集群搭建,都要使用前置设一个nginx或apache作个反向代理,将请求转发给后端tomcat.使用tomcat集群,必然会引来session数据共享问题.如何解决这个问题?可借助memcached实现. 主要内容 测试单台tomcat的吞吐率 搭建apache+mod_jk+2个tomcat集群环境 搭建apache+mod_jk+2个tomcat+memcached集群环境 对比2个环境的吞吐率情况

(apache+tomcat集群+memcached番外篇)单台tomcat的session信息的2种持久化方式

为什么要实现搭建tomcat集群环境呢?主要因为单个tomcat无论从吞吐量和并发数上,会达到一定的极限.如果访问量超过单个tomcat的承受能力的话,tomcat一般要么拒绝提供服务,要么直接宕掉.所以,必须要依靠tomcat集群技术.举个最简单的例子,拿"送快件"比喻,如果一个人,5分钟送一件,一小时之内,送10个,一个人完全能胜任这项工作.假设现在到了双十一,要求1小时,送100个, 那怎么办?只能安排更多的人加入"送快件"这项工作中来.这其实和集群一个道理.

通过Apache+mod_JK+Tomcat集群实现负载均衡

通过Apache+mod_JK+Tomcat集群实现负载均衡 1.概念 通过Apache+mod_JK+Tomcat集群搭建起来的环境主要用来实现负载均衡和高可用性.使用apache作为反向代理服务器实现负载均衡,使用mod_jk可以实现节点的故障恢复功能,达到高可用性.使用tomcat集群功能实现sessionID共享复制.用户访问数据在到达apache后,如果是静态内容,直接由apache处理,如果是动态请求,就通过mod_jk调用后端的一台tomcat服务器去处理请求,可以通过黏性Sess

Tomcat:基于Apache+Tomcat的集群搭建

根据Tomcat的官方文档说明可以知道,使用Tomcat配置集群需要与其它Web Server配合使用才可以完成,典型的有Apache和IIS. 这里就使用Apache+Tomcat方式来完成基于Tomcat在集群配置. 软件准备 1)Apache HTTP Server: 使用百度搜索httpd-2.2.25-win32-x86-no_ssl.msi,应该可以找到很多相关的下载链接.这里也提供一个:http://vdisk.weibo.com/s/C3trk_uGGkrmc 2)Tomcat