问题 Tomcat 6,JMX和动态端口问题


在阅读并尝试了很多之后,我不得不问是否有人能解决我的问题。

我试图在防火墙后面设置一些Tomcats(V6)。这没什么大不了的 - 但我想通过JMX监控它们。

我读了TC文件并且遇到了 JMXRemoteLifecycleListener。我的测试TC安装完全按照上面的链接进行设置。 因此,我没有从我们网络中的一个主机到另一个主机的连接。另外,每次启动TC时都会打开第三个随机端口。

在我的server.xml中,监听器被激活

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="8050" rmiServerPortPlatform="8060" />

catalina.out说一切都好。

2011-06-14 16:46:48,819 [main] INFO org.apache.catalina.mbeans.JmxRemoteLifecycleListener-
The JMX Remote Listener has configured the registry on port 8050 and the server on port 8060 for the Platform server

端口是开放的,我可以通过telnet从任何其他主机连接到它们。我可以在本地连接到vm(service:jmx:rmi://<hostname>:8xxx/jndi/rmi://<hostname>:8xxxx/jmxrmi

Netstats输出如下:

tcp6       0      0 :::8080                 :::*                    LISTEN      11291/java
tcp6       0      0 :::8050                 :::*                    LISTEN      11291/java
tcp6       0      0 :::8060                 :::*                    LISTEN      11291/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      11291/java
tcp6       0      0 :::60901                :::*                    LISTEN      11291/java
tcp6       0      0 127.0.0.1:8009          :::*                    LISTEN      11291/java

Tomcat甚至已经启动了所有足够的VM选项

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=TRUE 
-Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access"

有没有人暗示我为什么被困在这里?提前致谢!


12943
2018-06-14 15:07


起源

尝试在VM选项中设置端口看起来你在Cat opts -Dcom.sun.management.jmxremote.port = 8086的第一行中缺少它 - Keibosh
@Keibosh关于文档,如果您使用TC侦听器,则应避免使用此选项。即使使用此选项也无效。 - Martin Röbert
第一次看得太快了。如果它在本地运行而没有问题,那么你可能会遇到这个问题。 olegz.wordpress.com/2009/03/23/... 在文章的中间,他讨论了私人地址被推送给客户而不是公共地址。 - Keibosh
非常感谢,推杆 -Djava.rmi.server.hostname=IP 在我的启动脚本中它工作了:)但是有可能自动完成TC吗?对于一堆实例来说这有点烦人...... - Martin Röbert


答案:


答案是 -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx 一般的JMX选项。

自动设置主机名的示例:

IP=`ifconfig eth0  | grep 'inet '| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'``;

CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=TRUE
-Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access
-Djava.rmi.server.hostname=$IP"

14
2018-06-15 11:23



非常感谢你做的这些!! - vagelis


问题可能是启用jmx监控时java本身打开的第二个随机端口。从Java 7开始,也可以设置此端口:

-Dcom.sun.management.jmxremote.rmi.port=7091

所以在组合中 - 可以使用相同的端口:

-Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.rmi.port=7091

这是我的问题的解决方案。端口设置为固定数量后,可以在防火墙中轻松设置。


1
2018-05-25 08:56