0

我正在尝试在同一网络上但在 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 时,我看到了带有预期选项的进程:

活跃MQ 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。

港口在运行的岸墙上开放。

代理网络已启动,但我无法使用带有 server_dns:4321 的 jvisualvm 连接到 jmx。它返回错误“无法使用服务连接到 server_dns:4321:jmx:rmi:///jndi/rmi://server_dns:4321/jmxrmi

我可以通过 tcpdump 在端口上看到一些流量。

谁能告诉我我做错了什么或者我应该如何使用 ActiveMQ 作为具有自定义 jmx 端口的代理网络?

4

1 回答 1

1

JMX 需要 2 个开放端口。rmi 需要一个额外的。感谢这篇文章,我明白了:Apache ActiveMQ browser can't connect to JMX console

在我的情况下,修复是更改我的包装器的配置以公开 rmi 端口并在防火墙上打开端口

# 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.port=8765
wrapper.java.additional.4=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.ssl=false
于 2013-10-31T14:13:32.133 回答