问题
我们在不同的机器上安装了两个 JBossAS 4.2.3,它们是集群的。我们还使用 Lighttpd 作为负载平衡器,并放置在我们的 Tomcat 服务器(Tomcat 服务器没有集群)和 JBoss 服务器之间。一旦所有服务器都启动并运行,应用程序就会完美运行。如果我关闭了一台 JBoss 服务器,请求将按预期重定向到另一台服务器。注销应用程序后,我的问题就开始了。在尝试重新登录应用程序时,我收到一个异常,提示 Tomcat 无法连接到已关闭的服务器。
服务器设置
- Machine01 - Tomcat7
- Machine02 - Tomcat7
- Machine03 - JBoss 4.2.3
- Machine04 - JBoss 4.2.3
- Machine05 - Lighttpd 1.4.28
其他信息
- 所有机器都使用 Ubuntu 12.04 操作系统。
- JBoss 机器是集群的。
- EAR 被放到
all/deploy
文件夹中。 - JBossAS 使用以下命令启动 -
./run.sh -b 0.0.0.0 -c all --partition=SomePartitionName &> /dev/null &
。 - Tomcat7 作为服务运行,因此它们以
sudo service tomcat7 start
. - Lighttpd 被配置为 JBoss 机器的负载平衡器。
以下是 lighttpd 上的 mod_proxy 配置:
server.modules += ( "mod_proxy" ) proxy.balance = "fair" proxy.server = ( "" => (( "host" => "Machine03", "port" => 1100 ), ( "host" => "Machine04", "port" => 1100 ))
有以下
jndi.properties
条目java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=Machine05:80
无法弄清楚为什么,在我关闭机器并从应用程序中注销后,Tomcat 不再具有对 JBoss 机器的代理引用。