【问题标题】:ActiveMQ 5.8 network of broker with custom jmx port具有自定义 jmx 端口的代理的 ActiveMQ 5.8 网络
【发布时间】: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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 2011-01-16
    • 2012-01-04
    • 2012-02-03
    • 2010-11-30
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多