apache与tomcat负载集群的3种方法

转载 2015年07月07日 14:10:37

-----本人转自:http://www.blogjava.net/pengo/archive/2011/04/15/348331.html

花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来。

apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy
本次集成使用的软件版本:
apache:httpd-2.2.17-win32-x86-no_ssl.msi
tomcat:apache-tomcat-6.0.20.zip
jdk:jdk-6u14-windows-i586.exe

本次测试是1个apache集成两个tomcat。
安装apache http server省略,访问地址为http://127.0.0.1:8081
安装tomcat,解压apache-tomcat-6.0.20.zip,测试时我是把两个tomcat分开放在不同的虚拟机,其中一个是和apache同一台虚拟机。
两个tomcat分别命名为worker2和worker3
先说tomcat.worker2的配置:
server.xml
(1)配置http监听端口,这里端口设为8079,该步骤非必要,只要不冲突就行了。
<Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

(2)配置AJP监听端口,这里端口设为8077,该步骤非必要,只要不冲突就行了。
<Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />

(3)配置服务器标识,这里标识名配置为:worker2,添加jvmRoute="worker2",该步骤必须。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
在Engine节点启用集群配置,只需去掉Cluster节点前的注释就行了,该步骤必须,配置了集群才能实现Session复制,如果只有一个集群,只按我下边的配置就行了,如果多个集群,则不能按此配置,tomcat服务器内的帮助文档/docs/cluster-howto.html,/docs/config/cluster.html有介绍,需要的可以参考下。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 

要实现session复制,还需要在context.xml添加属性distributable="true",如下:
<Context distributable="true">
如果不想在context.xml中添加distributable="true",还有另一方法是在应用程序的web.xml中添加<distributeable/>,不过这方法我没有测试。
配置完成,访问地址为:http://127.0.0.1:8079

另一个tomcat.worker3的配置
server.xml
<Connector port="8078" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker3">
   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
context.xml配置tomcat.worker2一样。
配置完成,访问地址为:http://127.0.0.1:8078
注意:如果两个tomcat是放在同一台机内,server.xml可能还需要修改其它端口,请确认两个tomcat能正常启动。

在tomcat.worker2和tomcat.worker3的webapps文件夹添加同样的测试文件test"test.jsp
<html>
<head>
  <title>helloapp</title>
</head>
<body>
<%
System.out.println(
"call test.jsp");

%>   
SessionID: <%=session.getId() %>  
</body>
</html>
访问http://127.0.0.1:8078/test/test.jsp和http://127.0.0.1:8079/test/test.jsp,确保能成功访问。

现在开始apache和tomcat的不同方式集成
1、jk方式集成
下载mod_jk-1.2.31-httpd-2.2.3.so,请下载合适的mod_jk版本,改名为mod_jk.so放进modules文件夹内
修改conf/httpd.conf配置
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkMount  /*.do loadbalancer
JkMount  /*.jsp loadbalancer
增加conf/workers.properties文件,添加内容
worker.list=loadbalancer
worker.worker2.port=8077   #ajp的监听端口
worker.worker2.host=108.88.3.105
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker3.port=9009
worker.worker3.host=127.0.0.1
worker.worker3.type=ajp13
worker.worker3.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker2,worker3 #这里在的worker2、worker3为需要与上边tomcat设置的别名一致
worker.loadbalancer.sticky_session=1
配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

2、ajp_proxy
去掉httpd.conf文件中下面内容的注释(删掉#号),开启下边的配置
Include conf/extra/httpd-vhosts.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
注意:
除了mod_proxy.so,mod_proxy_balancer.so,mod_proxy_connect.so
如果是采用ajp_proxy,需要加载mod_proxy_ajp.so这个模块;
如果是采用http_proxy,需要加载mod_proxy_http.so这个模块;

httpd.conf,删除刚才jk方式的配置内容,增加下边的配置
ProxyRequests Off
<proxy balancer://loadbalancer> 
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3
BalancerMember ajp://108.88.3.105:8077 loadfactor=1 route=worker2
</proxy>
conf/extra/httpd-vhosts.conf增加配置
<VirtualHost *:8081>
         ServerAdmin xxxx@xxx.com
         ServerName localhost
         ServerAlias localhost
         ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On
         ProxyPassReverse / balancer://loadbalancer/
         ErrorLog "logs/loadbalancer-error.log"
         CustomLog "logs/loadbalancer-access.log" common
</VirtualHost>
配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

3、http_proxy
http_proxy的配置与ajp_proxy类似,修改方法2的httpd.conf配置如下,其它不变
ProxyRequests Off
<proxy balancer://loadbalancer> 
BalancerMember http://127.0.0.1:8078 loadfactor=1 route=worker3
BalancerMember http://108.88.3.105:8079 loadfactor=1 route=worker2
</proxy> 
配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

apache_tomcat配置文件下载:apache_tomcat

apache与tomcat负载集群的3种方法

花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来。 apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy 本次集成使用的软件版本...
  • explorercn
  • explorercn
  • 2014年05月18日 17:48
  • 313

使用Apache通过JK实现多Tomcat负载均衡集群时,Apache不能将请求分发给Tomcat处理(即Apache反向代理不成功)的问题

前些天在做Apache通过JK实现多Tomcat负载均衡集群时,参考网上的配置将配置文件配置好后,访问已存在tomcat中的JSP文件时发现Apache提示URL不存在,然后检查了配置文件及tomca...
  • fuxiaohui
  • fuxiaohui
  • 2015年05月02日 00:18
  • 3643

结合Apache和Tomcat实现集群和负载均衡

本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵。 因原文中有较多的...
  • kypfos
  • kypfos
  • 2008年10月15日 20:36
  • 32344

CentOS系统下Apache负载均衡、Tomcat集群以及项目热部署配置

关于APACHE负载均衡与TOMCAT集群配置的资料网上有很多,但是几乎是一个版本一个样,而且在配置的过程中,可能是由于版本的不同,或者系统环境的不同,出现各种各样的错误,下面将我自己在虚拟机下配置的...
  • limingzhong198
  • limingzhong198
  • 2014年02月18日 11:04
  • 6613

【集群部署】Windows下Apache2.4负载均衡+Tomcat7集群+session共享

一、准备工具:Apache2.4,JDK1.7,Tomcat7(最少两个)二、Apache安装好后配置1.首先打开一些必要的Module注释(把前面的#号去掉就行),在conf/httpd这个文件中L...
  • drchzy
  • drchzy
  • 2017年08月08日 17:08
  • 561

Tomcat+Nginx集群与负载均衡

今天就和大家一起来实现Tomcat和nginx的集群与负载均衡 一、Tomcat 集群配置端口规划 注:该端口是在同一台机器上启动2个tomcat,需要修改一下端口不重复,如果一台机器只部署1个t...
  • l1028386804
  • l1028386804
  • 2015年09月07日 21:07
  • 6762

搭建Apache+Tomcat负载均衡集群

一个项目需要搭建Apache+Tomcat负载均衡服务器集群,小弟网上找了很多资料,尝试了很多次,今天终于搭建成功,这里记录一下,欢迎大家一起讨论交流。谢谢! 这里主要参考了百度经验这位仁兄的文章,...
  • yannanying
  • yannanying
  • 2015年01月22日 13:19
  • 1408

CentOS 6.5 安装tomcat集群,配置Apache做负载均衡

本人只做了两个tomcat的集群 一、首先安装Apache作负载均衡。 二、安装Apache TomcatConnector作请求分发。 三、安装tomcat: 1、  下载Linux下tomcat安...
  • jing12062011
  • jing12062011
  • 2017年08月16日 17:25
  • 221

Apache+Tomcat负载均衡问题集锦

之前在windows 环境下搭建了下apache+tomcat负载均衡(不会的可以参考之前的文档,文档对于linux和windows都适用),一帆风顺,没有出现任何问题,今天尝试着在linux下搭建了...
  • liu251890347
  • liu251890347
  • 2014年08月04日 17:31
  • 2713

apache+tomcat+mysql负载均衡和集群

 前言:公司开发了一个网站,估计最高在线人数是3万,并发人数最多100人。开发的网站是否能否承受这个压力,如何确保网站的负荷没有问题,经过研究决定如下:(1) 采用负载平衡和集群技术,初步机构采用Ap...
  • hanpoyangtitan
  • hanpoyangtitan
  • 2007年06月06日 10:08
  • 2629
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:apache与tomcat负载集群的3种方法
举报原因:
原因补充:

(最多只允许输入30个字)