我的应用程序正在使用Apache
,mod-jk
和Tomcat
进行负载平衡,这可以正常使用work.properties
:
worker.list=workerlist
# Set properties for worker3
worker.worker3.type=ajp13
worker.worker3.host=xxxx
worker.worker3.port=xx
worker.worker3.lbfactor=4
worker.worker4.ping_mode=A
worker.worker3.socket_timeout=30
worker.worker3.reply_timeout=30000
# Set properties for worker4
worker.worker4.type=ajp13
worker.worker4.host=xxxx
worker.worker4.port=xx
worker.worker4.lbfactor=4
worker.worker4.ping_mode=A
worker.worker4.socket_timeout=30
worker.worker4.reply_timeout=30000
# Set properties for workerlist(lb)
worker.workerlist.type=lb
worker.workerlist.balance_workers=worker4,worker3
worker.workerlist.sticky_session=1
worker.list=jkstatus
worker.jkstatus.type=status
当我关闭worker4
(Tomcat)时,JK Status Manager
(http://apachehost/jkstatus)的网络界面仍显示worker4
位于ACT
}和OK/IDLE
状态,这没有任何意义,因为worker4
不再可用。我在mod-jk.log
中没有看到任何错误消息。
但是,当我将worker.properties
更改为仅包含不可用的worker4
并再次尝试访问时,该页面会显示ERR
Satte:
mod-jk.log
显示:
[error] ajp_service::jk_ajp_common.c (2626): (worker4) connecting to tomcat failed.
[info] service::jk_lb_worker.c (1400): service failed, worker worker4 is in error state
[info] service::jk_lb_worker.c (1480): All tomcat instances are busy or in error state
[error] service::jk_lb_worker.c (1485): All tomcat instances failed, no more workers left
我的问题是:
根据Tomcat网站上的Service Availablity Rating,它显示“ OK(空闲):此工作人员自上次维护平衡器后未收到任何请求。默认情况下,平衡器维护每60秒运行一次工作者应该没问题,但由于我们不需要使用它一段时间,我们无法确定。在1.2.24版之前,这种状态被称为N / A. “。我从中理解的是mod-jk本身会自动维护连接。那么,如果其中一名工人失职,为什么不JK Status Manager
给我警报?维护不起作用或JK Status Manager
网站无法正常工作吗?
除了JK Status Manager
之外,还有其他方法可以实时监控员工的状态吗?我的意思是如果一台服务器出现故障,我想马上知道。
是否必须明确设置ping_mode
?是否默认为“A”?日志说:
[warn] jk_map_handle_duplicates::jk_map.c (446): Duplicate key 'worker.worker4.ping_mode' detected - previous value 'A' will be overwritten with 'A'.
答案 0 :(得分:0)
1)如果一个Tomcat工作程序失败,则在下一次检查平衡器之前不会发生任何事情。因此显示OK / Idle。 60秒后它应该变成Err状态。
2)肯定有其他工具,该页面只是一个信息,而不是表单管理。最简单的方法是设置一个响应HTTP_200状态的servlet。您可以从外部程序检查其可用性,即使用URL对象。
3)显示该消息,因为第7行的配置中有拼写错误(worker4而不是worker3):
worker.worker4.ping_mode=A