共计 4001 个字符,预计需要花费 11 分钟才能阅读完成。
在介绍 JK 可配属性之前,先了解一下它的几个属性配置的小知识:
JK 的属性设置格式如下:
worker.<worker name>.<directive>=<value>
a,起始位置永远以 worker 为开头,
b,directive 为指令名称,或称之为属性名称
c,等号后面为所要设置的值
当然,如果你愿意也可以在 proerties 文件中自定义变量,格式如下:
<variable_name>=<value>
唯一要注意的一点是,变量名不要以 worker 开头
worker 属性的继承(属性模版):
在实际的配置过程中,可以预先定义 worker 的一套属性做为集群中其它 worker 的模版。
“reference”属性就是被用来做这件事情的,使 woker 之间的属性复制变的相当的容易,如:
worker.worker1.reference=worker.worker2
接下来,将介绍几个比较重要的 JK 属性:
全局属性仅有两个:
# 应用服务器的逗号分隔的名称列表,上面的例子已经用到
worker.list
#JK 的全局池的维护时间间隔,秒为单位
worker.maintain
worker 的私有属性:
type:可以选值为, ajp13, ajp14, jni, lb or status。
AJP(Apache JServ Protocol version 1.3),用来在 Tomcat 与 Apache 之间通迅的协议,最大的优点就是速度很快。Tomcat 社区推建用 AJP113 协议做为 worker 的通迅协议,因此用它的 worker 被称之为 AJP13 worker。
jni,这种类型的 woker 已经不被推荐使用
lb,为负载器的 worker。
stauts, jkstatus,进入页面察看负载均衡信息
host: 默认值为 localhost
设置 worker 主机的 ip
prot:默认值为 8009
设置 worker 主机的连接端口号(本例用的 AJP 协议,此端口号在 server.xml 中的 Connector 标签中定义)
socket_timeout:默认为 0
设置 JK 与远程服务器的 Socket 连接超时秒数,如果超出此秒数则产生一个错误,并再次重试。如果为 0,JK 会一直等下去。
socket_connect_timeout:默认为 socket_timeout*1000
以毫秒数为单位的 socket_timeout
socket_keepalive:默认为 False
防止防火墙切断不在使用的连接,通过设置为 True,通知操作系统向不在使用的连接发送 KEEP_ALIVE 消信。
ping_mode:
此属性判断以什么方式判断 Tomcat 是否可用,目前实现是向服务器发送 AJP13 的空包(CPing)并且在指定时间内收到适当的响应(CPong),超时首先参考 connect_timeout, 如果没有则参考 ping_timeout。一共提供四种判断心跳的方法:
C(connect): 在一个连接(连接是被复用的)生成前仅检验一次。
P(prepost): 每次请求前都会判断服务是否可用
I(interval): 在时间间隔周期性的判断服务是否可用
A: 以上所有的组合
ping_timeout:默认为 10000
毫秒单位,用来做 CPong 的超时
connection_ping_interval:默认为 0 / (ping_timeout/1000)*10
ping_mode 中所使用的时间间隔
connection_pool_size:
为了提高与 Tomcat 通迅的性能,JK 会维护多个长连接做为一个池。它被用来设置每个 WebServer(Apache)子进程的最大连接数。注意,Apache2.x 在 prefork 模式下 或 Apache1.3.x 环境下不要此属性的值超过 1。目前最新的 2.2 版 apache Linux 编译后,FC测试默认是 prefork 模式。
connection_pool_minsize:默认值 (connection_pool_size+1)/2
连接池中维护最小的连接数。注意,Apache2.x 在 prefork 模式下 或 Apache1.3.x 环境下不要此属性的值超过 1。目前最新的 2.2 版 apache Linux 编译后,FC测试默认是 prefork 模式。
connection_pool_timeout:默认值 0
在连连池中维护的非活动连接连续多少秒后被释放。如果为 0,则不释放。
connection_acquire_timeout: 默认值 retries*retry_interval
获取接连的超时
lbfactor:
负载权重,值越高被分发请求的概率越大。
负载器属性:
balance_workers:
逗号分隔的 worker 列表
sticky_session:默认值 True
负载喷发采用 Session 粘贴机制,按 SessionID 喷发请求。为了保障同一 SessionID 的请求被分发到同一台服务器上。
sticky_session_force:默认值为 Flase
如果为 True, SessionID 并不合法时则返回 500 错误,否则,丢掉 Session 并转发到另外的机器上
good: 默认值 a.o,a.n,a.b,a.r
负载器管理的 worker 有三个状态:“good”,“bad”和“degraded”,这些状态被时时临控。
你可以自定义 good 的属性值列表,每个值都是单字母或两个字母中间加点“.”的格式。
以下单词的首字母做为值列表的值:“active”,“disabled”,“stopped”,“ok”,“na”,“busy”,“recovering”,“error”。如果仅用单字母组合的话,其中一个 worker 状态在此列表中出现,则负载器认为所有的成员都是健康的。如果用 ”a.” 组合的话,则负载器仅认为该成员是健康的。
实际上,负载器会首先查看 bad 属性,如果不匹配的话,才会查看 good 属性。
bad: 默认值 s,e
参考 good, 默认是“stopped”,“error”才会匹配。
prefix:默认值为 worker
所有状态的起始前缀
retries:默认值为 2
通迅失败的的重式次数
retry_interval:默认值为 100
每次重式的时间间隔,毫秒单位
session_cookie:默认值为 JSESSIONID
SessioinID 的 Cookie 值
下面介绍一下 JkMount 的配置
第一种情形:部分静态页面需要 apache 处理,不转发给后端的 tomcat
JkMount /* router ### 默认将所有请求转发给 tomcat 处理
JKUnmount /*.php router ###php 请求不交给 tomcat 处理
JKUnmount /*.htm router ###htm 请求不交给 tomcat 处理
JKUnmount /*.html router ###html 请求不交给 tomcat 处理
JKUnmount /css/* router ###css 请求不交给 tomcat 处理
JKUnmount /js/* router ###js 请求不交给 tomcat 处理
JKUnmount /image/* router ###image 请求不交给 tomcat 处理
第二种情形:将所有请求转发到后端 tomcat 之后,将不同路径定位给不同的 tomcat
JkMount /* router
JkMount /login/* tomcat1
JkMount /shop/* tomcat2
JkMount /buy/* tomcat3
注意,这种情形下,必须要有这样的处理:
worker.list=router,jkstatus,tomcat1,tomcat2,tomcat3
如果是第一种情形,tomcat1,tomcat2,tomcat3 是不需要写在上面这个地方的
而是写在下面:
worker.router.balance_workers=tomcat1,tomcat2,tomcat3
实际使用中,应该是上述两种情形相结合使用的较多,将静态内容交给 apache 处理,然后将动态内容分布到不同的服务器上。
JkMount 把匹配的转发到指定服务器.
JkUnMount 把匹配的不转发到指定服务器.
JkUnMount 选项的级别高于 JkMount.
单独有 JkMount 规则有效, 但单独有 JkUnMount 无效,JkUnMount 与 JkMount 要成对出现.
————————————– 分割线 ————————————–
Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm
CentOS 5.9 下编译安装 LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12) http://www.linuxidc.com/Linux/2013-03/80333p3.htm
RedHat 5.4 下 Web 服务器架构之源码构建 LAMP 环境及应用 PHPWind http://www.linuxidc.com/Linux/2012-10/72484p2.htm
LAMP 源码环境搭建 WEB 服务器 Linux+Apache+MySQL+PHP http://www.linuxidc.com/Linux/2013-05/84882.htm
LAMP+Xcache 环境搭建 http://www.linuxidc.com/Linux/2014-05/101087.htm
————————————– 分割线 ————————————–