`
- 浏览:
77191 次
-
最近刚看完一些关于如何用jk整合Apache和tomcat的资料,为了防止自己忘记,把它们在这里都写下来。部分内容摘抄于网络。
首先下载tomcat, apache和jk。
1. 下载Apache HTTP server(2.2), 安装于“C:/Program Files/Apache Software Foundation/Apache2.2”
2. 下载mod_jk, 放在“Apache Software Foundation/Apache2.2/modules and rename it to mod_jk.so”
JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009。
<tomcat>/conf/server.xml:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置,如下图所示:
1:监控以及管理的页面 jkstatusjkstatus
在这个图中我们可以看到当前JK配了两个连接分别到 8109 和 8209 端口上,目前 s2 这个连接是停止状态,而 s1 这个连接自上次重启后已经处理了 47 万多个请求,流量达到 6.2 个 G,最大的并发数有 13 等等。我们也可以利用 jkstatus 的管理功能来切换 JK 到不同的 Tomcat 上,例如将 s2 启用,并停用 s1,这个在更新应用程序的时候非常有用,而且整个切换过程对用户来说是透明的,也就达到了无缝升级的目的。关于 JK 的配置文章网上已经非常多了,这里我们不再详细的介绍整个配置过程,但我要讲一下配置的思路,只要明白了配置的思路,JK
就是一个非常灵活的组件。
JK 的配置最关键的有三个文件,分别是
httpd.conf
Apache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息
workers.properties
到 Tomcat 服务器的连接定义文件
uriworkermap.properties
URI 映射文件,用来指定哪些 URL 由 Tomcat 处理,你也可以直接在 httpd.conf 中配置这些 URI,通过JkMount,比如:
JkMount /*.do route1
JkUnMount /output/* loadbalancer (如果有不想转发目录,则用JkUnMount)
#关掉主机Lookup,如果为on,很影响性能,可以有10多秒钟的延迟。
HostnameLookups Off
但是独立这些配置的好处是 JK 模块会定期更新该文件的内容,使得我们修改配置的时候无需重新启动 Apache 服务器。
其中第二、三个配置文件名都可以自定义。下面是一个典型的 httpd.conf 对 JK 的配置
Apache Software Foundation/Apache2.2/conf/httpd.conf
# (httpd.conf)
# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn
接下来我们在 Apache 的 conf 目录下新建两个文件分别是 workers.properties、uriworkermap.properties。这两个文件的内容大概如下
#
# workers.properties
#
# list the workers by name
worker.list= route1, status
# localhost server 1
# ------------------------
worker.s1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.s1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.s1.type=ajp13
worker.s1.lbfactor=1 #server的加权比重,值越高,分得的请求越多
# localhost server 2
# ------------------------
worker.s2.port=8109
worker.s2.host=localhost
worker.s2.type=ajp13
worker.s2.lbfactor=1
worker.s2.stopped=1
worker. route1.type=lb
worker.retries=3
worker.route1.balanced_workers=s1, s2
worker.route1.sticky_session=1
worker.status.type=status
具体的参数含义如下:
A、worker.list=route1, status
设定工作的负载平衡器,各Tomcat节点不能加入此列表。
B、worker. s1.lbfactor=1
负载平衡的权重比,如果此权重比越大,则分配到此节点的请求越多,如以上两个节点的权重比为1:1,则为平均分配。
C、worker.route1.balanced_workers=s1, s2
指定此负载平衡器负责的Tomcat应用节点。
D、worker.loadbalancer.sticky_session=true
此处指定集群是否需要会话复制,如果设为true(或1),则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理。这样设的坏处是,当相应的tomcat挂掉,那么session就会丢失。如果设为false,则表明需求会话复制。
E、worker.loadbalancer.sticky_session_force=true
如果上面的sticky_session设为true时,建议此处也设为true,此参数表明如果集群中某台Tomcat服务器在多次请求没有响应后, 是否将当前的请求,转发到其它Tomcat服务器上处理;此参数在sticky_session=true时,影响比较大,会导致转发到其它Tomcat 服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。
接下来便是 URI 的映射配置了,我们需要指定哪些链接是由 Tomcat 处理的,哪些是由 Apache 直接处理的,看看下面这个文件你就能明白其中配置的意义
/*= route1
/jkstatus=status
!/*.gif= route1
!/*.jpg= route1
!/*.png= route1
!/*.css=route1
!/*.js=route1
!/*.htm=route1
!/*.html=route1
相信你已经明白了一大半了:所有的请求都由route1这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理。另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。
以上的 workers.properties 配置就是我们前面那个屏幕抓图的页面所用的配置。首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和s2,它们指向同一台服务器上运行在两个不同端口 8009 和 8109 的 Tomcat 。不需要设置Tomcat中的jvmRoute, 只要正确设置了port和host,apache便能正确连接tomcat。接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是route1,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接s1
和s2。最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = route1, status 这行配置。
Apache的mod_deflate模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。
LoadModule deflate_module modules/mod_deflate.so
<Location />
SetOutputFilter DEFLATE
</Location>
压缩是由DEFLATE过滤器实现的。下面的指令会对其所在容器中的文档启用压缩:
SetOutputFilter DEFLATE
一些流行的浏览器不能正确处理所有压缩内容,因此你可能需要将gzip-only-text/html标记设为"1"来仅仅允许压缩html文件(见下面)。如果你设置了"1"以外的任何值,都将被忽略。
如果你想将压缩限制在几种特定的MIME类型上,可以使用AddOutputFilterByType指令。下面的例子仅仅允许对html文档进行压缩:
<Directory "/your-server-root/manual">
AddOutputFilterByType DEFLATE text/html
</Directory>
对于那些不能正确处理所有压缩内容的浏览器,可以使用BrowserMatch指令针对特定的浏览器设置no-gzip标记以取消压缩。为了取得更好的效果,你可以将no-gzip和gzip-only-text/html配合使用。在这种情况下,下面的设置将会覆盖上面的设置。看看从配置示例中摘录的片断:
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4/.0[678] no-gzip
BrowserMatch /bMSIE !no-gzip !gzip-only-text/html
第一条指令表示如果User-Agent字符串表示它是一个Navigator 4.x的浏览器,这种浏览器不能正确处理除text/html之外的所有类型。而4.06, 4.07, 4.08版的Navigator完全不能处理任何压缩内容,因此第二条指令对这些浏览器完全禁用压缩。
第三个BrowserMatch指令修正了上面两条对浏览器的推测,因为微软的IE也将它自己标识成"Mozilla/4"但是它实际上能够处理所有的压缩内容。因此又在User-Agent头中额外匹配了字符串"MSIE"("/b"表示"单词边界"),并且取消了前面的限制。
注意
通过SetEnv设置force-gzip环境变量将会忽略浏览器的"accept-encoding",始终发送经过压缩的内容。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
jk+apce+tomcat 整合 实现tomcat负载均衡 tomcat集群。让tomcat处理.jsp动态页面,apache处理静态页面。平且实现在一个IP下提供多个站点服务。 里面包括怎样配置apache虚拟机文件 怎样配置tomcat的虚拟机文件 花了我...
Apache 整合Tomcat与负载均衡配置是将Apache HTTP服务器作为前端代理,通过mod_jk模块将请求分发到后端的多个Tomcat实例,实现Web应用的负载均衡,提高服务的可用性和性能。以下是对这个配置过程的详细说明: 1. **...
本文主要介绍如何在Linux环境下将Apache和Tomcat进行整合,以实现负载均衡。Apache作为Web服务器,可以处理静态内容,而Tomcat作为Java应用服务器,处理动态内容。通过Apache的mod_jk模块,可以将HTTP请求转发到...
#========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2 worker.controller.sticky_session=1 5 修改tomcat的端口号(3处) ...
1. **Mod_JK模块**:Apache的Mod_JK模块是连接Apache和Tomcat的常用方式,它是一个负载均衡和反向代理模块,能将HTTP请求转发到多个Tomcat实例。通过配置mod_jk.conf,我们可以设置负载均衡策略,如轮询、最少连接数...
Tomcat集群和负载均衡包括了apache-tomcat-5.5.29.zip,apache_2.2.4-win32-x86-no_ssl.msi,mod_jk-1.2.28-httpd-2.2.3.so,ApacheTomcat整合文档.doc,Apache,Tomcat集群和负载均衡教程.doc,Tomcat负载均衡.pdf
该模块通过JK_Apache和JK_Tomcat之间的协议实现负载均衡、故障转移和会话持久性等功能。`mod_jk`支持多种版本,以适应不同版本的Apache和Tomcat。 **版本兼容性:** 由于Apache和Tomcat的不断更新,`mod_jk`的不同...
Apache和Tomcat是两种常用的Web服务器和应用服务器。...总之,整合Apache和Tomcat使用mod_jk是一种常见的做法,它能充分利用两者的优势,提供高效、稳定的服务。了解和掌握mod_jk的配置是提升Web服务器性能的关键步骤。
通过使用 mod_jk 这一模块,我们可以实现 Apache 和 Tomcat 之间的高效通信。mod_jk 是一个负载均衡器和反向代理,它能够帮助我们在多个应用服务器之间分发 HTTP 请求。本文将详细介绍 mod_jk 的不同版本及其与 ...
在Windows环境下,将Apache HTTP Server和Tomcat集成是常见的服务器配置任务,以便利用Apache的静态内容...同时,通过调整`workers.properties`文件中的`lbfactor`等参数,还可以实现负载均衡,进一步优化服务器性能。
在IT行业中,服务器整合是一项常见的任务,特别是在使用Apache HTTP Server(Apache)和Apache Tomcat这两个广泛应用的...此外,这种架构也有利于负载均衡和故障隔离,为大型网站提供了更高级别的可扩展性和可靠性。
通过以上步骤,可以构建一个基本的Apache Tomcat负载均衡系统,提供高可用性和高性能的服务。在实际部署中,还需要考虑安全性、日志管理、故障切换以及性能监控等多个方面,以确保系统的稳定运行。
mod_jk是Apache与Tomcat之间的通信桥梁,它实现了Apache的worker模型,可以有效地分发请求到多个Tomcat实例,实现负载均衡。 首先,我们需要安装Apache HTTP服务器。在这个例子中,我们使用的是Apache 2.2.3的...
在CentOS 6.4 64位操作系统中,整合Apache和Tomcat以实现多子站的WEB服务,通常会采用JK模坓(mod_jk)作为连接器,这可以提高性能并解决通过代理访问时可能出现的不稳定性。JK模块是Apache Tomcat Connectors的一...
### Apache + Tomcat + JK配置负载均衡及虚拟主机...通过以上步骤,即可实现在Windows平台下使用Apache、Tomcat和JK进行虚拟主机配置和负载均衡设置,从而支持多域名、多用户的同时使用。此方法同样适用于Linux平台。