一、架构:
users --> apache web server + mod_jk -->tomcat instance
1、mode_jk介绍:
它是早期mod_jserv的替代品,是一个全新负责处理Apache和Tomcat通讯的Apache插件。
Apache加载jk模块,通过ajp13(Apache jServ Protocol version 1.3)协议与tomcat通讯;
2、apache + JK 负载均衡器作用?
1)它实现了负载均衡算法,通过将请求分发到不同的服务器来达到高可用性和高效的处理能力;
2)监控集群中每一个tomcat的健康状态,来防止将请求转发到一个失败的节点;
3)它会使用“会话粘滞”技术以确保来自同一个用户的请求会被转发到同一个服务器;
二、环境搭建:
1、Apache 2.2.14 下载地址:http://httpd.apache.org/,如可以通过访问 "http://localhost"来判断apache是否安装成功。如果提示80端口被占用,则关闭掉类似于迅雷或其他应用程序,可能是这些应用程序占用了80端口;
2、Tomcat 5.5 绿色版 下载地址:http://tomcat.apache.org/download-55.cgi
由于是集群,这里我们安装2个tomcat,并命名tomcat根目录分别为tomcata和tomcatb,如果使用默认配置,就不能同时启动两个tomcat了,我们必须修改其中一个tomcat的配置,例如修改tomcatb。找到tomcatb的conf目录的server.xml,将其中出现80位置全部修改为90(此时html端口变为9080,而ajp协议变为9009,应用程序主要是通过html端口访问,而apache是通过ajp协议与tomcat通讯的);
3、mod_jk-1.2.28-httpd-2.2.3.so 下载地址:http://download.csdn.net/source/1599820(有试过mod_jk的其他版本,实验不成功)
三、配置:
1、实现apache请求转发多个tomcat
1)在Apache的安装目录下的modules目录下,找到httpd.conf文件,打开此文件,搜索#LoadModule,在这些屏蔽信息#LoadModule后加上
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
让httpd加载jk_module模块。
再在该文件最后加上如下内容:
#告诉apache workers文件的位置
JkWorkersFile "%ApacheHomeDir%/conf/workers.properties"
#日志
JkLogFile "%ApacheHomeDir%/logs/mod_jk.log"
#日志级别
JkLogLevel warn
#路径满足/jsp-examples 或 /jsp-examples/* 给work1处理
JkMount /jsp-examples worker1
JkMount /jsp-examples/* worker1
#路径满足/servlets-examples 或 /servlets-examples/* 给work2处理
JkMount /servlets-examples worker2
JkMount /servlets-examples/* worker2
2)在 "%ApacheHomeDir%/conf 目录下创建workers.properties文件,内容如下:
worker.list = worker1,worker2
worker.worker1.port = 8009
worker.worker1.host = localhost
worker.worker1.type = ajp13
worker.worker2.port = 9009
worker.worker2.host = localhost
worker.worker2.type = ajp13
3)重启两个tomcat和apache,访问如下地址:
http://localhost/jsp-examples
http://localhost/servlets-examples
注意:由于apache使用的是80端口,通过80端口可以访问到两个tomcat中自带的示例应用程序,故apache完成了请求从apache到tomcat的转发;
2、实现负载均衡与会话粘滞:
1)修改 "%ApacheHomeDir%/conf/workers.properties" 文件,其内容为:
# balancer 为逻辑名
worker.list = balancer
# worker.balancer要与上面的balancer同名;lb=load balance
worker.balancer.type = lb
# 承担分发工作的tomcat
worker.balancer.balance_workers = worker1,worker2
# B策略=busy 根据繁忙系数来决定请求分配
worker.balancer.method = B
# 说明这个负载均衡器会实现会话粘滞功能(可参考官方说明,各版本tomcat配置会不一样)
worker.balancer.sticky_session = 1
worker.worker1.port = 8009
# 远程服务器则修改为服务器的ip
worker.worker1.host = localhost
worker.worker1.type = ajp13
# 负载均衡器根据这参数来决定该服务器使用的频率
worker.worker1.lbfactor = 1
worker.worker2.port = 9009
worker.worker2.host = localhost
worker.worker2.type = ajp13
worker.worker2.lbfactor = 1
2)为tomcat的Engine配置jvmRoute参数
打开tomcat 的 server.xml文件,找到Engine,在此标签内加上jvmRoute="worker1",另外一个tomcat加上jvmRoute="worker2"
此处的work1和work2要与apache 的 conf/workers.properties配置的work名称对应,这样apache才知道是哪个tomcat来处理请求;
3)修改apache的httpd.xml文件,其内容如下:
JkMount /jsp-examples balancer
JkMount /jsp-examples/* balancer
JkMount /servlets-examples balancer
JkMount /servlets-examples/* balancer
从而将之前交给work1和work2的请求,全部交给balancer来处理。
4)修改tomcat的server.xml文件,去掉Cluster注释:
分别修改两个tomcat的server.xml文件,分别去掉Cluster注释,并修改tcpListenPort配置,将其中一个改为4002即可。
5)配置集群应用:
找到你要集群的项目,web.xml文件
分享到:
相关推荐
1. **使用Apache2.2中的mod_ajp集成Tomcat5.5**:这种方案通过Apache的mod_ajp模块,使Apache能够与Tomcat通过AJP协议通信,从而实现请求的负载均衡和分发。 2. **使用Apache2.2中的mod_balancer配置Cluster**:mod_...
### 最新的Tomcat与Apache整合集群优化 #### 一、Apache与Tomcat的整合 Apache与Tomcat的整合主要是为了实现动态内容与静态内容的有效分离,通过Apache作为前端的反向代理服务器,来处理静态资源的请求,而将动态...
《Tomcat服务器详解——基于Apache Tomcat 5.5与7.0的指南》 Tomcat,作为一款广泛使用的开源Java Servlet容器,是许多开发者学习和部署Java Web应用的首选平台。本文将深入探讨Tomcat的两个主要版本,即Tomcat 5.5...
《Tomcat学习笔记》 Tomcat是一款开源的Java Servlet容器,是Apache软件基金会下的Jakarta项目中的核心项目,主要用于运行Java ...后续的学习可以扩展到Tomcat的性能优化、集群配置以及与其他应用服务器的集成等方面。
6. **集群和负载均衡**:如果需要多台Tomcat协同工作,需要配置集群和负载均衡策略。 7. **JNDI资源**:通过`conf/server.xml`配置数据源和其他JNDI资源,以供应用使用。 8. **错误页面和过滤器**:在`web.xml`中...
接下来的章节将详细介绍Tomcat的安装、优化及集群配置等内容,包括Tomcat Native的安装、优化参数的调整以及Apache HTTP服务器与Tomcat集群的配置等。此外,还将涵盖Apache ActiveMQ 5.5.0及Memcached 1.4.5的安装与...