本文是在已经配置好nc集群的情况下进行的添加JK Status Manager。
1、在%apache_home%\conf\httpd.conf的最后面添加
# module mod_jk config file
include conf/ncmodjk.conf
在%apache_home%\conf\目录下新建文件:ncmodjk.conf ,内容如下
############################
# ncmodjk.conf #
# @ver6.0 #
############################
LoadModule jk_module modules/mod_jk.so
#加载集群中的workers
JkWorkersFile conf/ncworkers.properties
#指定jk的日志输出文件
JkLogFile logs/mod_jk.log
#用于LoadBalance和status的共享内存设置,只适用于*nix平台,我们没有使用LoadBalance,可能可以删除这个选项。
JkShmFile logs/mod_jk.shm
#指定日志级别
JkLogLevel error
#用来配置log文件的日期/时间格式. 使用strftime()的格式化字符串,默认是[%a %b %d %H:%M:%S %Y]
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
#JkOptions ForwardKeySize,要求mod_jk当使用ajp13的时候.因为Servlet API 2.3的需要,一起提交SSL Key Size.这个状态在servlet引擎3.2.x里不能设置(默认是打开的).
#JkOptions ForwardURICompat,要求mod_jk正常发送uri给tomcat,不符合规范,但是mod_rewrite兼容.使用它为Tomcat 3.2.x引擎的兼容性.(默认是打开的)
#JkOptions ForwardDirectories 被用来与apache的DirectoryIndex命令配合.
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
#JkRequestLogFormat 设置个人用户请求的log格式.
#Options Description
#%b 发送的字节, 不包括 HTTP headers (CLF format)
#%B 发送的字节, 不包括 HTTP headers
#%H 协议
#%m 请求方式(get/post)
#%p 服务器响应请求的规范端口.
#%q 查询字符串 (如果存在以?开头,否则是空串)
#%r 请求的第一行.
#%s HTTP状态码
#%T 请求间隔, 处理请求耗费的时间 秒.微秒
#%U 请求的url路径,不包含查询字符串.
#%v 响应请求的规范服务器名字
#%V 根据UseCanonicalName设置的服务器名字.
#%w Tomcat worker 名字
JkRequestLogFormat "%w %V %T"
#加载workers的请求处理分配文件
JKMountFile conf/ncmapping.properties
#ncmapping.properties文件多长时间被检查一次(单位:秒,默认值:60),如有修改,会动态重装
JkMountFileReload 10
从这里可以看到,ncmodjk.conf绑定了两个配置文件,ncworkers.properties和ncmapping.properties,下面分别创建这两个文件
①ncworkers.properties
新配置:
############################
# ncworkers.properties #
# @nc6.0 #
############################
ps=/
worker.list=Node2,Node1,framework,default,jkstatus
#
#tomcat的主机地址,如不为本机,请填写ip地址
worker.Node2.host=192.168.50.63
#ajp13 端口号,对应tomcat配置文件server.xml中Connector port="8009",默认8009
worker.Node2.port=8082
# ajp13 :此类型表示当前worker为一个运行着的Tomcat实例。
worker.Node2.type=ajp13
# 负载的权重值,越高表示负载越大
worker.Node2.lbfactor=1
#socket_keepalive :是否启用keep alive的功能,true表示启用,false表示禁用,打开 KeepAlive 后,意味着每次用户完成全部访问后,都要保持一定时间后才关闭会关闭 TCP 连接
worker.Node2.socket_keepalive=true
#套接字超时(以秒为单位),用于 JK 和远程主机(我的理解是tomcat服务器)之间的通信信道。如果远程主机在指定的超时范围内没有响应,JK 将生成错误,然后重试。如果设置为零(默认值),JK 将在所有套接字操作上等待无限长的时间。mod_jk等待worker响应的时长,默认为0,即无限等待
worker.Node2.socket_timeout=6
#套接字连接超时(以毫秒为单位),用于 JK 和远程主机之间的通信信道。如果远程主机在指定的超时范围内没有响应,JK 将生成错误,然后重试。
worker.Node2.socket_connect_timeout=6000
#apache服务器是多线程的,tomcat能够利用这一优势来维持一定数量的连接作为缓存。
worker.Node2.cachesize=1000
worker.Node2.cache_timeout=600
# 指定 JVMRoute-pj001 无法提供服务后由 JVMRoute-pj002 继续提供服务
worker.Node2.redirect=Node1
#会话黏贴, #设置负载均衡是否采用粘性会话。如果该属性设置为true,假设一个请求被s1处理了,下次来源于同一个客户端的请求也将被s1处理。
worker.Node2.sticky_session=true
worker.Node2.sticky_session_force=false
#
worker.Node1.host=192.168.50.63
worker.Node1.port=8081
worker.Node1.type=ajp13
worker.Node1.lbfactor=1
worker.Node1.socket_keepalive=true
worker.Node1.socket_timeout=6
worker.Node1.socket_connect_timeout=6000
worker.Node1.cachesize=1000
worker.Node1.cache_timeout=600
worker.Node1.redirect=Node2
worker.Node1.sticky_session=true
worker.Node1.sticky_session_force=false
#
#jk_controller,负载均衡控制器,这里配置为lb,也就是Load Balance负载均衡
worker.framework.type=lb
#拥有哪些负责负载均衡的服务器实例
worker.framework.balanced_workers=Node2,Node1
worker.framework.sticky_session=true
worker.framework.sticky_session_force=false
#
worker.default.type=lb
worker.default.balanced_workers=Node2,Node1
worker.default.sticky_session=true
#
worker.appbalancer.type=lb
worker.appbalancer.balance_workers=Node1,Node2
worker.appbalancer.sticky_session=true
#
#jkstatus,负载均衡监视器
worker.jkstatus.type=status
worker.jkstatus.read_only=false
#设置名称为jkstatus的负载均衡服务器实例监视器的挂载路径,通过http://192.168.50.63/jkStatus访问
worker.jkstatus.mount=/jkstatus
旧配置:
############################
# ncworkers.properties #
# @nc6.0 #
############################
ps=/
# worker列表
worker.list=Node2,Node1,framework,default,jkstatus
#tomcat的主机地址,如不为本机,请填写ip地址
worker.Node2.host=192.168.50.63
#ajp13 端口号,对应tomcat配置文件server.xml中Connector port="8009",默认8009
worker.Node2.port=8082
# ajp13 :此类型表示当前worker为一个运行着的Tomcat实例。
worker.Node2.type=ajp13
# 负载的权重值,越高表示负载越大
worker.Node2.lbfactor=1
#socket_keepalive :是否启用keep alive的功能,1表示启用,0表示禁用
worker.Node2.socket_keepalive=1
#socket_timeout :mod_jk等待worker响应的时长,默认为0,即无限等待
worker.Node2.socket_timeout=0
#apache服务器是多线程的,tomcat能够利用这一优势来维持一定数量的连接作为缓存。
worker.Node2.cachesize=1000
worker.Node2.cache_timeout=600
# 指定 JVMRoute-pj001 无法提供服务后由 JVMRoute-pj002 继续提供服务
worker.Node2.redirect=Node1
worker.Node2.sticky_session=0
worker.Node2.sticky_session_force=0
#
worker.Node1.host=192.168.50.63
worker.Node1.port=8081
worker.Node1.type=ajp13
worker.Node1.lbfactor=1
worker.Node1.socket_keepalive=1
worker.Node1.socket_timeout=0
worker.Node1.cachesize=1000
worker.Node1.cache_timeout=600
worker.Node1.redirect=Node2
worker.Node1.sticky_session=0
worker.Node1.sticky_session_force=0
#jk_controller,负载均衡控制器,这里配置为lb,也就是Load Balance负载均衡
worker.framework.type=lb
#拥有哪些负责负载均衡的服务器实例
worker.framework.balanced_workers=Node2,Node1
#设置负载均衡是否采用粘性会话。如果该属性设置为true,假设一个请求被s1处理了,下次来源于同一个客户端的请求也将被s1处理。
worker.framework.sticky_session=0
worker.framework.sticky_session_force=0
#
worker.default.type=lb
worker.default.balanced_workers=Node2,Node1
#jkstatus,负载均衡监视器
worker.jkstatus.type=status
worker.jkstatus.read_only=false
#设置名称为jkstatus的负载均衡服务器实例监视器的挂载路径,通过http://192.168.50.63/jkStatus访问
worker.jkstatus.mount=/jkstatus
②ncmapping.properties
############################
# ncmapping.properties #
# @ver6.0 #
############################
/ServiceDispatcherServlet=framework
/ServiceDispatcherServlet/framework=framework
/ServiceDispatcherServlet/framework/*=framework
/CodeSynServlet=framework
#所有请求都由framework这个worker处理
/*=framework
#default
/ServiceDispatcherServlet/default=default
/ServiceDispatcherServlet/default/*=default
#jkstatus,所有包含jkstatus请求的都由名称叫jkstatus的这个worker处理
/jkstatus=jkstatus
③浏览器访问http://192.168.50.63/jkstatus