Apache HTTP / mod_jk仅在一个工作程序处于活动状态时工作

时间:2018-12-06 16:38:20

标签: apache tomcat cluster-computing load-balancing mod-jk

我添加了以下mod-jk.conf文件,并将其包含在httpd.conf中:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info 
JkLogStampFormat  "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"

JkMount /MyApp/* loadbalancer
JkShmFile logs/jk.shm 

JkMount /status status

我还添加了以下worker.properties文件:

worker.list=loadbalancer,status

worker.node1.port=8009
worker.node1.host=10.1.4.49
worker.node1.type=ajp13
worker.node1.lbfactor=1 

worker.node2.port=8009
worker.node2.host=10.1.4.51
worker.node2.type=ajp13
worker.node2.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2

worker.status.type=status

当我有两名工人在运行时,http服务器连接到tocat服务器/应用程序,但它说到服务器的连接已关闭。但是,如果我删除其中一个工作程序(与哪一个无关紧要),我都可以连接到tomcat服务器/应用程序。

无论出于何种原因,我的负载均衡器仅在有1个活动工作程序时才工作。

1 个答案:

答案 0 :(得分:0)

在具有粘性会话的负载平衡器中使用时,需要使用与worker.properties文件中定义的匹配的正确jvmRoute设置每个tomcat。在我的情况下,我有名为node1和node2的工作人员,所以我应该期待找到

<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">

tomcat地址10.1.4.49和

<Engine name="Catalina" defaultHost="localhost" jvmRoute="node2">

在tomcat上的地址10.1.4.51