LAMT基于mod_jk配置使用步骤详解

mod_jk
配置apache通过mod_jk模块与Tomcat连接
mod_jk是ASF的一个项目,是一个工作于apache端基于AJP协议与Tomcat通信的连接器,它是apache的一个模块,是AJP协议的客户端(服务端是Tomcat的AJP连接器)。


[root@nginx-proxy2 conf.d]# cd
[root@nginx-proxy2 ~]# tar xf tomcat-connectors-1.2.40-src.tar.gz
[root@nginx-proxy2 ~]# cd tomcat-connectors-1.2.40-src/native/
[root@nginx-proxy2 native]# rpm -ql httpd-devel|grep apxs
确保apxs存在,确保httpd-devel安装

[root@nginx-proxy2 native]# yum -y install httpd-devel
[root@nginx-proxy2 native]# rpm -ql httpd-devel|grep apxs
/usr/sbin/apxs
/usr/share/man/man8/apxs.8.gz
[root@nginx-proxy2 native]#
[root@nginx-proxy2 native]# ./configure --with-apxs=/usr/sbin/apxs
[root@nginx-proxy2 native]# make && make install
确保mod_jk.so存在

[root@nginx-proxy2 modules]# ls /usr/lib64/httpd/modules/ |grep mod_jk
mod_jk.so
[root@nginx-proxy2 modules]#
编辑配置文件:

[root@nginx-proxy2 conf.d]# cat mod_jk.conf
LoadModule  jk_module  modules/mod_jk.so
JkWorkersFile  /etc/httpd/conf.d/workers.properties
JkLogFile  logs/mod_jk.log
JkLogLevel  debug
JkMount  /*  TomcatA
JkMount  /jkstatus/  stat-LinuxEA
编辑workers.properties!由于是mod_jk,使用ajp,so,端口为8009,

[root@nginx-proxy2 conf.d]# cat workers.properties
worker.list=TomcatA,stat-LinuxEA
worker.TomcatA.port=8009
worker.TomcatA.host=10.0.0.53
worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1
worker.stat-LinuxEA.type = status
[root@nginx-proxy2 conf.d]# pwd
/etc/httpd/conf.d
[root@nginx-proxy2 conf.d]#
查看日志是否正常:

[root@nginx-proxy2 conf.d]# tail /var/log/httpd/mod_jk.log
[Thu Feb 18 06:13:02.200 2016] [7345:139943077504992] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03d0    75 6E 64 3A 20 23 44 32 41 34 31 43 3B 0A 20 20  - und:.#D2A41C;...
[Thu Feb 18 06:13:02.200 2016] [7345:139943077504992] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03e0    7D 0A 20 20 74 64 2E 68 65 61 64 65 72 2D 6C 65  - }...td.header-le
[Thu Feb 18 06:13:02.200 2016] [7345:139943077504992] [debug] ajp_connection_tcp_get_message::jk_ajp_common.c (1403): 03f0    66 74 20 7B 0A 20 20 20 20 74 65 78 74 2D 61 6C  - ft.{.....text-al
[Thu Feb 18 06:13:02.201 2016] [7345:139943077504992] [debug] ws_write::mod_jk.c (552): written 8065 out of 8065
[root@nginx-proxy2 conf.d]#
jk_mod正常后修改日志级别:JkLogLevel notice

[root@nginx-proxy2 conf.d]# cat mod_jk.conf
LoadModule  jk_module  modules/mod_jk.so
JkWorkersFile  /etc/httpd/conf.d/workers.properties
JkLogFile  logs/mod_jk.log
JkLogLevel  notice
JkMount  /*  TomcatA
JkMount  /jkstatus/  stat-LinuxEA
[root@nginx-proxy2 conf.d]#
在查看则正常

[root@nginx-proxy2 conf.d]# tail /var/log/httpd/mod_jk.log
[Thu Feb 18 06:17:19.447 2016] [7346:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared memory /etc/httpd/logs/jk-runtime-status.7337 childs=8
[Thu Feb 18 06:17:19.448 2016] [7345:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared memory /etc/httpd/logs/jk-runtime-status.7337 childs=7
[Thu Feb 18 06:17:19.449 2016] [7344:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared memory /etc/httpd/logs/jk-runtime-status.7337 childs=6
[Thu Feb 18 06:17:19.451 2016] [7343:139943077504992] [debug] jk_shm_close::jk_shm.c (700): Closed shared
[root@nginx-proxy2 conf.d]#
如果是编译安装,--with-apxs则指定相应的位置即可

[root@NFS-WEB1 native]# ./configure --with-apxs=/usr/local/apache/bin/apxs
[root@NFS-WEB1 native]#  make && make install
说明如下:
apache要使用mod_jk连接器,需要在启动时加载此连接器模块。为了便于管理与mod_jk模块相关的配置,这里使用一个专门的配置文件/etc/httpd/extra/httpd-jk.conf来保存相关指令及其设置。其内容如下:

# Load the mod_jk
LoadModule  jk_module  modules/mod_jk.so
JkWorkersFile  /etc/httpd/extra/workers.properties
JkLogFile  logs/mod_jk.log
JkLogLevel  debug
JkMount  /*  TomcatA
JkMount  /status/  stat1
除了需要使用LoadModule指令在apache中装载模块外,mod_jk还需要在apache的主配置文件中设置其它一些指令来配置其工作属性。如JkWorkersFile则用于指定保存了worker相关工作属性定义的配置文件,JkLogFile则用于指定mod_jk模块的日志文件,JkLogLevel则可用于指定日志的级别(info, error, debug),此外还可以使用JkRequestLogFormat自定义日志信息格式。而JkMount(格式: JkMount )指定则用于控制URL与Tomcat workers的对应关系。

为了让apache能使用/etc/httpd/extra/httpd-jk.conf配置文件中的配置信息,需要编辑/etc/httpd/httpd.conf,添加如下一行:
Include /etc/httpd/extra/httpd-jk.conf

对于apache代理来说,每一个后端的Tomcat实例中的engine都可以视作一个worker,而每一个worker的地址、连接器的端口等信息都需要在apache端指定以便apache可以识别并使用这些worker。约定俗成,配置这些信息的文件通常为workers.properties,其具体路径则是使用前面介绍过的JkWorkersFile指定的,在apache启动时,mod_jk会扫描此文件获取每一个worker的配置信息。比如,我们这里使用/etc/httpd/extra/workers.properties。

workers.properties文件一般由两类指令组成:一是mod_jk可以连接的各worker名称列表,二是每一个worker的属性配置信息。它们分别遵循如下使用语法。

worker.list = < a comma separated list of worker names >
worker. <worker name> .<property> = <property value>
其中worker.list指令可以重复指定多次,而worker name则是Tomcat中engine组件jvmRoute参数的值。如:
worker.TomcatA.host=172.16.100.1

根据其工作机制的不同,worker有多种不同的类型,这是需要为每个worker定义的一项属性woker..type。常见的类型如下:
◇ajp13:此类型表示当前worker为一个运行着的Tomcat实例。
◇ lb:lb即load balancing,专用于负载均衡场景中的woker;此worker并不真正负责处理用户请求,而是将用户请求调度给其它类型为ajp13的worker。
◇  status:用户显示分布式环境中各实际worker工作状态的特殊worker,它不处理任何请求,也不关联到任何实际工作的worker实例。具体示例如请参见后文中的配置。

worker其它常见的属性说明:
◇ host:Tomcat 7的worker实例所在的主机;
◇ port:Tomcat 7实例上AJP1.3连接器的端口;
◇ connection_pool_minsize:最少要保存在连接池中的连接的个数;默认为pool_size/2;
◇ connection_pool_timeout:连接池中连接的超时时长;
◇ mount:由当前worker提供的context路径,如果有多个则使用空格格开;此属性可以由JkMount指令替代;
◇ retries:错误发生时的重试次数;
◇ socket_timeout:mod_jk等待worker响应的时长,默认为0,即无限等待;
◇ socket_keepalive:是否启用keep alive的功能,1表示启用,0表示禁用;
◇ lbfactor:worker的权重,可以在负载均衡的应用场景中为worker定义此属性;

另外,在负载均衡模式中,专用的属性还有:
◇balance_workers:用于负载均衡模式中的各worker的名称列表,需要注意的是,出现在此处的worker名称一定不能在任何worker.list属性列表中定义过,并且worker.list属性中定义的worker名字必须包含负载均衡worker。具体示例请参见后文中的定义。
◇ method:可以设定为R、T或B;默认为R,即根据请求的个数进行调度;T表示根据已经发送给worker的实际流量大小进行调度;B表示根据实际负载情况进行调度。
◇sticky_session:在将某请求调度至某worker后,源于此址的所有后续请求都将直接调度至此worker,实现将用户session与某worker绑定。默认为值为1,即启用此功能。如果后端的各worker之间支持session复制,则可以将此属性值设为0。

根据前文中的指定,这里使用/etc/httpd/extra/workers.properties来定义一个名为TomcatA的worker,并为其指定几个属性。文件内容如下:

worker.list=TomcatA,stat1
worker.TomcatA.port=8009
worker.TomcatA.host=172.16.100.1
worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1
worker.stat1.type = status
至此,一个基于mod_jk模块与后端名为TomcatA的worker通信的配置已经完成,重启httpd服务即可生效

时间: 2024-09-25 12:55:35

LAMT基于mod_jk配置使用步骤详解的相关文章

LAMT基于mod_proxy调度使用方法详解

使用单台nginx直接调度tomcat如下: http {     upstream tomcat_server {         server 10.0.0.20:8080;         server 10.0.0.30:8080;     #   server 10.0.0.100:8080 backup;     }     server {         location ~* \.(jsp|do)$ {             proxy_pass http://tomcat_

CentOS7安装配置Oracle11g 步骤详解

1. 操作系统环境.安装包准备 宿主机:Max OSX 10.10.5 虚拟机:Parallel Desktop 10.1.1 虚拟机操作系统:CentOS-7-x86_64-DVD-1511.iso Oracle:linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip JDK:jdk1.8.0_77.zip 2. 安装CentOS7虚拟机 2.1 新建虚拟机 CPU:2核 内存:4G 硬盘:60G,扩展磁盘 2.2

ubuntu 14.04安装配置denyhosts步骤详解

目前官网最新版本是2.10,记得以前的ubuntu版本(<=12.04LTS)中好像直接apt-get install denyhosts 就可以了,在最新的发行版不知为何不见了. 安装 你可以前往官网http://sourceforge.net/projects/denyhost/ 选择一个你喜欢的版本下载,或者直接运行下面的命令下载. cd /tmp/ && wget http://jaist.dl.sourceforge.net/project/denyhost/denyhos

Redis 安装及主从配置的步骤详解

Redis是一个开源.支持网络.基于内存.键值对存储数据库.与其他非关系型数据库主要不同在于,Redis中值的类型不仅限于字符串(Strings),还支持如下抽象数据类型:(列表)Lists.(集合)Sets.(有序集合)Sorted sets .(哈希)Hashes.Redis 通过 RDB.AOF 两种方式来实现数据的持久化.   安装Redis   Redis 源码包保存路径 /usr/local/src   Redis 软件安装路径 /usr/local/redis   编译 Redis

linux中安装配置sphinx2步骤详解

# 安装sphinx 2.x  代码如下 复制代码 cd /home/addcn wget http://sphinxsearch.com/files/sphinx-2.1.1-beta.tar.gz tar xvf sphinx-2.1.1-beta.tar.gz cd sphinx-2.1.1-beta make clean ./configure –prefix=/usr/local/sphinx –with-mysql=/usr/local/mysql make && make i

Centos下安装Mrtg配置的步骤详解

以下是笔记: 1.检查系统是否安装了mrtg软件 # rpm -qa | grep mrtg* 安装mrtg软件 # yum -y install mrtg* 2.mrtg配置文件(以下是mrtg配置文件内容是详细说明) 提供我们鹏飞微服务的配置文件给大家下载参考:http://url.cn/PT118T [文件名自己设置] # vi /etc/mrtg/mrtg.cfg 以下是配置内容解释: HtmlDir:/var/www/mrtg   //html存放目录 ImageDir:/var/ww

centos 6系统安装配置pptpd步骤详解

配置环境: 服务器版本:centos 6.4 x86 pptpd版本:pptpd v1.40 一.vpn介绍 vpn全名叫虚拟专用网络,技术简单来就是在公网中架设私网,在公司内网中架设VPN服务器,在外网通过访问VPN服务器作为跳板来访问公司内网的资源,同理,通过vpn翻墙也是这个原理,具体详细的请看百度百科:vpn技术,对于本人来说,最直接的应用就是翻墙,如果需要可以邮件我或者QQ找我提供的 二.vpn_pptp搭建 1.准备工作 1)查看系统是否已经编译了mppe modprobe ppp-

Zookeeper实战之配置服务步骤详解

Server 用来启动一个Zookeeper服务 package my.zookeeperstudy.config; import org.apache.zookeeper.server.ServerCnxnFactory; import org.apache.zookeeper.server.ZooKeeperServer; import java.io.File; import java.net.InetSocketAddress; public class Server {     pub

php5.3.10的安装配置步骤详解

在linux中php安装配置与windows中有不小的区别了,在linux中几乎都是代码形式了,下面我们一起来看看php5.3.10的安装配置步骤详解,希望下文可帮助到各位. 下面以最新的php-5.3.10为例进行安装. wget http://cn.php.net/distributions/php-5.3.10.tar.gz tar -zxvf php-5.3.10.tar.gz cd php-5.3.10 ./configure --prefix=/usr/local/php --wit