设为首页 收藏本站
查看: 568|回复: 0

[经验分享] Tomcat JK配置【转】

[复制链接]

尚未签到

发表于 2017-1-22 11:01:30 | 显示全部楼层 |阅读模式
  
在介绍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要成对出现.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-332015-1-1.html 上篇帖子: tomcat_server.xml配置说明 下篇帖子: 手工将tomcat安装为服务及tomcat命令说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表