利用 mod_jk 整合 Apache HTTP Server 与 Tomcat 配置(linux)

Apache HTTP Server 官方网站:http://httpd.apache.org/

Apache Tomcat 官方网站:http://tomcat.apache.org/

mod_jk 所有版本列表:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/

测试环境:

apache 2.2.3

apache-tomcat 6.0.35

jdk1.6.0_34

下载 mod_jk.so:

wget http://bukn.org:8001/downloads/mod_jk/32/mod_jk.so -P /usr/lib/
wget http://bukn.org:8001/downloads/mod_jk/64/mod_jk.so -P /usr/lib64/httpd/modules/
chmod +x /usr/lib/mod_jk.so
chmod +x /etc/httpd/modules/mod_jk.so

配置 mod_jk.conf

touch /etc/httpd/conf.d/mod_jk.conf
vi /etc/httpd/conf.d/mod_jk.conf

mod_jk.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

在conf目录新建workers.properties与uriworkermap.properties文件并进行修改

#
# workers.properties
#
 
# list the workers by name
 
worker.list=tomcatserver, status
 
# localhost server 1
# ------------------------
worker.s1.port=8109
worker.s1.host=localhost
worker.s1.type=ajp13
 
# localhost server 2
# ------------------------
worker.s2.port=8209
worker.s2.host=localhost
worker.s2.type=ajp13
worker.s2.stopped=1
 
worker.tomcatserver.type=lb
worker.retries=3
worker.tomcatserver.balanced_workers=s1, s2
worker.tomcatserver.sticky_session=1
 
worker.status.type=status

稍作解释一下以上的 workers.properties 配置。

首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,注意它们指向同一台服务器上运行在两个不同端口 8109 和 8209 的 Tomcat 上(Tomcat 默认的端口为8009)。

接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 tomcatserver,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接 s1 和 s2。

最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。

有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = tomcatserver, status 这行配置。


再来配置一下 uriworkermap.properties

/*=tomcatserver  #所有的请求都由 tomcatserver 这个 worker 进行处理
/jkstatus=status #/jkstatus 请求由 status 这个 worker 处理
 
# 以下都不需要用 tomcatserver 来处理,直接交给 apache 处理。
!/*.gif=tomcatserver
!/*.jpg=tomcatserver
!/*.png=tomcatserver
!/*.css=tomcatserver
!/*.js=tomcatserver
!/*.htm=tomcatserver
!/*.html=tomcatserver

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


附上 mod_jk.conf 与 workers.properties 配置文件:

mod_jk.conf 配置

LoadModule jk_module modules/mod_jk.so
 
JkWorkersFile workers.properties
 
JkLogLevel info
#JkLogFile  /var/log/httpd/mod_jk.log
 
JkMount /*.jsp tomcatServer
JkMount /*.do tomcatServer
JkMount /*.cfg tomcatServer
JkMount /*.action tomcatServer
JkMount /*.code tomcatServer
JkMount /*.fileupload tomcatServer
JkMount /*.php tomcatServer

workers.properties 配置

#指定文件路径分割符
ps=\  
 
#模块版本,即Server列
worker.list=tomcatServer
 
#==========tomcatServer============#
worker.tomcatServer.port=8009             #工作端口,若没占用则不用修改
worker.tomcatServer.host=127.0.0.1        #本机,若上面的Apache主机不为localhost,作相应修改
worker.tomcatServer.type=ajp13            #类型ve
worker.tomcatServer.lbfactor=1            #server的加权比重,值越高,分得的请求越多
worker.tomcatServer.socket_keepalive=true


转载于:https://my.oschina.net/refresh/blog/90989

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Apache+Tomcat 实现负载均衡时,我们可以使用 mod_jk 模块实现。mod_jkApache 的一个模块,它与 Tomcat 之间通过 AJP 协议进行通信,可以将请求分发给多个 Tomcat 服务器,从而实现负载均衡。 以下是使用 mod_jk 实现负载均衡的步骤: 1. 安装 mod_jk 模块 在 Apache 的模块目录下,添加 mod_jk 模块。在 Linux 系统中,通常是在 /etc/httpd/modules 目录下。 2. 配置 mod_jk 模块 在 Apache配置文件 httpd.conf 中,添加以下内容: ``` LoadModule jk_module modules/mod_jk.so JkWorkersFile /path/to/workers.properties JkLogFile /path/to/mod_jk.log JkLogLevel info ``` 上述配置中,LoadModule 指令用于加载 mod_jk 模块,JkWorkersFile 指令用于指定 workers.properties 文件的路径,该文件定义了 Tomcat 服务器的列表和其它相关参数,JkLogFile 指令用于指定 mod_jk 的日志文件路径,JkLogLevel 指令用于指定日志级别。 3. 配置 workers.properties 文件 在 workers.properties 文件中,我们需要定义多个 Tomcat 服务器的信息,例如: ``` worker.list=worker1,worker2 worker.worker1.type=ajp13 worker.worker1.host=192.168.1.1 worker.worker1.port=8009 worker.worker2.type=ajp13 worker.worker2.host=192.168.1.2 worker.worker2.port=8009 ``` 上述配置中,worker.list 指定了所有的 Tomcat 服务器名称,worker1 和 worker2 是两个 Tomcat 服务器的名称,type 指定了通信协议,host 和 port 分别指定了 Tomcat 服务器的 IP 地址和端口号。 4. 配置虚拟主机 在 Apache 的虚拟主机配置中,添加以下内容: ``` JkMount /* worker1 JkMount /app1/* worker2 ``` 上述配置中,JkMount 指令用于指定 URL 与 Tomcat 服务器之间的映射关系,* 表示所有的 URL,/app1/* 表示以 /app1/ 开头的 URL。 5. 配置重试和超时 在 workers.properties 文件中,我们可以配置重试和超时的参数,例如: ``` worker.worker1.retries=3 worker.worker1.connect_timeout=10000 worker.worker1.prepost_timeout=10000 ``` 上述配置中,retries 表示在重试之前的最大尝试次数,connect_timeout 表示连接超时时间,prepost_timeout 表示请求和响应的超时时间。 6. 测试负载均衡 完成上述配置后,我们可以启动多个 Tomcat 服务器,并访问 Apache 的虚拟主机。Apache 会将请求分发给多个 Tomcat 服务器,从而实现负载均衡。 以上就是使用 mod_jk 实现负载均衡的步骤。需要注意的是,使用 mod_jk 进行负载均衡时,需要确保 Tomcat 服务器之间的 session 同步。可以使用 Tomcat 提供的 session 共享机制或使用其它第三方的 session 共享方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值