Apache HTTP Server 与 Tomcat 的三种连接方式JK,http_proxy,ajp_proxy。下面逐个介绍一下(本篇介绍的示例都是基于前面介绍的已经搭建好的Tomcat集群,都是本机,端口分别为18080和28080):

JK: 

JK是最常见的方式,JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.37,而版本 2 早已经废弃了,以后不再有新版本的推出了,所以建议你采用版本 1。 
JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009(本机修改配置为18009和28009)。JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置。

AJP 协议 

AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。

ajp13是一个二进制的TCP传输协议,相比HTTP这种纯文本的协议来说,效率和性能更高,也做了很多优化。显然,浏览器并不能直接支持AJP13协议,只支持HTTP协议。所以实际情况是,通过Apache的proxy_ajp模块进行反向代理,暴露成http协议给客户端访问。

实际上支持AJP代理的服务器非常少,比如目前很火爆的Nginx就没这个模块。因此tomcat的配置大部分都是关闭AJP协议端口的,因为除了Apache之外别的http server几乎都不能反代AJP13协议,自然就没太大用处了。

配置JK 
1.下载mod_jk,Tomcat官网下载即可, http://tomcat.apache.org/download-connectors.cgi,下载对应版本

2.修改httpd.conf

 1 # (httpd.conf)
2 # 加载 mod_jk 模块
3 LoadModule jk_module modules/mod_jk.so
4
5 #
6 # Configure mod_jk
7 #
8 JkWorkersFile conf/workers.properties
9 JkMountFile conf/uriworkermap.properties
10 JkLogFile logs/mod_jk.log
11 JkLogLevel warn

3.在conf目录下添加配置文件workers.properties,与上面JkWorkersFile的配置保持一致

#
# workers.properties
# # list the workers by name
# DLOG4J的名字是随便起的 worker.list=DLOG4J, status # localhost server 1
# ------------------------
worker.s1.port=18009
worker.s1.host=localhost
worker.s1.type=ajp13 # localhost server 2
# ------------------------
worker.s2.port=28009
worker.s2.host=localhost
worker.s2.type=ajp13 worker.DLOG4J.type=lb
worker.retries=3
worker.DLOG4J.balance_workers=s1, s2
worker.DLOG4J.sticky_session=1 worker.status.type=status

4.在conf目录下添加配置文件uriworkermap.properties,与上面JkMountFile的配置保持一致

/*=DLOG4J
/jkstatus=status !/*.gif=DLOG4J
!/*.jpg=DLOG4J
!/*.png=DLOG4J
!/*.css=DLOG4J
!/*.js=DLOG4J
!/*.htm=DLOG4J
!/*.html=DLOG4J

上面映射的意思是,所有的请求都由 DLOG4J 这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理。另外配置中每一行数据前面的感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。

5.启动apache,两个tomcat

6.测试 
先访问http://192.168.1.101:8080/jkstatus,可以看看jkstatus的状态 
再访问http://192.168.1.101:8080/ClusterValidate/index.jsp

http_proxy

这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对这个模块进行了重写,大大的增强了其功能和稳定性。

http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。

配置http_proxy

1.恢复加载http_proxy相关模块 
在httpd.conf文件中,去掉如下几行的注释 
LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_module modules/mod_proxy_ajp.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
LoadModule proxy_http_module modules/mod_status.so

2.在httpd.conf中加上proxy代理的ProxyPass

添加如下配置:

ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass /balancer-manager ! ProxyPass / balancer://mycluster/
<Proxy balancer://mycluster/>
BalancerMember http://localhost:18080/
BalancerMember http://localhost:28080/
</Proxy> <Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
#Deny from all
Allow from localhost ip6-localhost
</Location>

3.启动apache,tomcat

4.测试 
http://192.168.1.101:8080/balancer-manager查看均衡状态 
http://192.168.1.101:8080/ClusterValidate/index.jsp测试负载均衡

ajp_proxy 

与http_proxy基本一致,只是在ProxyPass的地址中,把http的地址转化为ajp的地址,及Tomcat坚挺的ajp端口号。如下:

ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass /balancer-manager ! ProxyPass / balancer://mycluster/
<Proxy balancer://mycluster/>
BalancerMember ajp://localhost:18009/
BalancerMember ajp://localhost:28009/
</Proxy> <Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
#Deny from all
Allow from localhost ip6-localhost
</Location>

以上三种负载方案都行,但是官方建议还是jk模式好,效率高,稳定。

Apache与Tomcat负载均衡的更多相关文章

  1. 基于apache的tomcat负载均衡和集群配置

    最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...

  2. Apache/Nigix + Tomcat + 负载均衡

    Part I: Apache + Tomcat + 负载均衡 http://www.open-open.com/lib/view/open1350612892352.html http://micha ...

  3. 基于Apache的Tomcat负载均衡和集群(2)

    反向代理负载均衡 (Apache+JK+Tomcat) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方式 ...

  4. apache的tomcat负载均衡和集群配置 "

    略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...

  5. Apache、Tomcat负载均衡与集群

    一. 环境准备 1.软件下载 a) apache_2.0.55-win32-x86-no_ssl.msi: b) apache-tomcat-5.5.17.rar c) mod_jk-apache-2 ...

  6. 基于apache的tomcat负载均衡和集群配置session共享

    接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备ja ...

  7. Linux平台上搭建apache+tomcat负载均衡集群

    传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...

  8. Apache+Tomcat负载均衡问题集锦

    之前在windows 环境下搭建了下apache+tomcat负载均衡(不会的能够參考之前的文档,文档对于linux和windows都适用),一帆风顺.没有出现不论什么问题.今天尝试着在linux下搭 ...

  9. 1.Apache+Tomcat负载均衡+集群配置

    1.本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apache是 ...

随机推荐

  1. 使用gogs和glide来轻松拉取golang第三方库

    golang的第三方代码拉取一直是让人头疼的问题,在github托管的代码还好,托管在其他网站上的代码总会由于大家都懂的原因,无法访问.纵使是github,在拉取文件数量较多的库时,也是比较慢的. 有 ...

  2. 前端页面加载速度优化---Ngnix之GZIP压缩

    gzip on; #开启Gzip gzip_static on;#是否开启gzip静态资源 #nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的 ...

  3. Lucene第二讲——索引与搜索

    一.Feild域 1.Field域的属性 是否分词:Tokenized 是:对该field存储的内容进行分词,分词的目的,就是为了索引. 否:不需要对field存储的内容进行分词,不分词,不代表不索引 ...

  4. EL/JSTL-jsp页面更简单的输出方式

    1.EL(Expression Language):表达式语言,用于页面输出 格式:${表达式} EL支持四则运算,关系运算[常用eq来比较字符串或判断相等],逻辑运算 EL访问空间内对象,[类.对象 ...

  5. c++继承详解:共有(public)继承,私有继承(private)继承,保护(protected)继承

    公有继承(public)继承.私有继承(private).保护继承(protected)是常用的三种继承方式. 1.公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时 ...

  6. Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别

    第一段 buildscript 里面的 repositories 表示只有编译工具才会用这个仓库. 比如 buildscript 里面的 dependencies classpath 'com.and ...

  7. Android 模拟器 下载、编译及调试

    Android 模拟器源码下载 Android 模拟器源码的下载与 Android AOSP 源码库的下载过程类似,可以参考 Google 官方提供的 Android 源码下载文档 来了解这个过程. ...

  8. centos下testlink的部署(基于xampp)

    1. sudu -i 切换root用户      cd /opt切换到opt目录下(在linux下默认的下载文件目录在opt下) 执行命令下载xampp:      https://sourcefor ...

  9. 第五模块:WEB开发基础 第3章·BootStrap&JQuery开发

    01-JQuery介绍 02-jQuery文件引入和加载的区别 03-jQuery的基础选择器 04-jQuery的层级选择器 05-jQuery的基本过滤选择器 06-jQuery的属性选择器 07 ...

  10. TW实习日记:第27天

    今天依旧是磨洋工的一天,说真的,被存在各种问题的后端接口把耐心和动力都给磨没了.于是一天就又在沟通接口问题中度过了,完善了一个新功能,将一个新功能开发到了一半.效率可真是够低的,唉.然后不知道为什么突 ...