【发布时间】:2013-10-24 17:16:22
【问题描述】:
我正在尝试在同一网络但在 2 个不同的虚拟机上运行具有 2 个代理的代理网络。
由于一些内部限制,我必须使用自定义 jmx 端口。 我正在使用 Tanuki 包装器在 Ubuntu 服务器上启动 ActiveMQ。
这是我的activemq.xml的相关部分
<broker xmlns="http://activemq.apache.org/schema/core" advisorySupport="false" useJmx="true" brokerName="test1" dataDirectory=".../data/activemq">
<networkConnectors>
<networkConnector uri="multicast://1.2.3.4:101234?group=test"
dynamicOnly="true"
networkTTL="3"
prefetchSize="1"
decreaseNetworkConsumerPriority="true"
userName="user"
password="password"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" rebalanceClusterClients="true" updateClusterClients="true" />
<transportConnector name="nio" uri="nio://0.0.0.0:61617" rebalanceClusterClients="true" updateClusterClients="true" discoveryUri="multicast://1.2.3.4:101234?group=test" />
</transportConnectors>
...
<managementContext>
<managementContext createConnector="false"/>
</managementContext>
...
</broker>
这里是 wrapper.conf 的相关部分:
# Uncomment to enable jmx
wrapper.java.additional.1=-Dcom.sun.management.jmxremote
wrapper.java.additional.2=-Dcom.sun.management.jmxremote.port=4321
wrapper.java.additional.3=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.4=-Dcom.sun.management.jmxremote.ssl=false
在两个代理上运行 ActiveMQ 时,我看到了带有预期选项的进程:
activemq 30682 30680 3 13:27 ? 00:00:30 java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=4321 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djavax.net.ssl.keyStore=../../conf/broker.ks -Djavax.net.ssl.trustStore=../../conf/broker.ts -Dcom.sun.management.jmxremote -Dorg .apache.activemq.UseDedicatedTaskRunner=true -Djava.util.logging.config.file=logging.properties -Dactivemq.conf=../../conf -Dactivemq.data=../../data -Xms2048m -Xmx2048m -Djava.library.path=../../bin/linux-x86-64/ -classpath ../../bin/wrapper.jar:../../bin/activemq.jar -Dwrapper.key =y4TuwO32Hj6kN7w8 -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=30680 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper .service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp org.apache.activemq.console.Main 启动
端口在运行的岸墙上打开。
代理网络已启动,但我无法使用带有 server_dns:4321 的 jvisualvm 连接到 jmx。它返回错误 “无法使用服务连接到 server_dns:4321:jmx:rmi:///jndi/rmi://server_dns:4321/jmxrmi
我可以通过 tcpdump 看到端口上的一些流量。
谁能告诉我我做错了什么或者我应该如何使用 ActiveMQ 作为具有自定义 jmx 端口的代理网络?
【问题讨论】:
-
当我检查正在使用的端口时,我看到 activemq 正在监听 2 个 jmx 端口。它侦听自定义 4321 和标准 1099。在 activemq.xml 中将 useJmx 设置为 false 时,我看到只有自定义端口仍在使用中。但我仍然无法连接到它。听说 Network Of Brokers 也在使用 JMX 接口进行通信。如何查看 2 个代理真正使用的端口?
-
通过再次阅读代理文档网络,我发现我错误地配置了它。我使我的 2 个代理中的每一个都成为代理网络中的主/从和节点。该网络无法工作,因为 2 个节点之一将始终是从节点,因此在任何时候都不活动。但是在删除网络部分后,我仍然无法连接到 JMX。我现在正尝试在一个代理网络中设置 2 个主/从对。如果相关的话,我会发布我的观察结果
-
我终于做出了改变,在我的代理网络中没有 2 个运行节点(2 对主从节点,每个节点都是网络中的一个节点)。不幸的是,这对启用与 JMX 的连接没有帮助
标签: activemq ubuntu-12.04 jmx