Сеть брокера ActiveMQ 5.8 с настраиваемым портом jmx

Я пытаюсь запустить сеть брокера с двумя брокерами в одной сети, но на двух разных виртуальных машинах.

Из-за некоторых внутренних ограничений мне приходится использовать собственный порт jmx. Я использую оболочку Tanuki для запуска ActiveMQ на сервере Ubuntu.

Вот соответствующая часть моего 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 .service = TRUE -Dwrapper.cpu.timeout = 10 -Dwrapper.jvmid = 1 org.tanukisoftware.wrapper.WrapperSimpleApp org.apache.activemq.console.Main start

Порт открыт на ходу.

Сеть брокера работает, но я не могу подключиться к jmx с помощью jvisualvm с server_dns: 4321. Он возвращает ошибку «не удается подключиться к server_dns: 4321 с помощью службы: jmx: rmi: /// jndi / rmi: // server_dns: 4321 / jmxrmi.

Я вижу некоторый трафик на порту через tcpdump.

Может ли кто-нибудь сказать мне, что я делаю не так или как мне использовать ActiveMQ в качестве сети брокера с настраиваемым портом jmx?


person Antoine Wils    schedule 16.10.2013    source источник
comment
когда я проверяю используемый порт, я вижу, что 2 порта jmx прослушиваются activemq. Он слушает пользовательский 4321 и стандартный 1099. При установке для useJmx значения false в activemq.xml я вижу, что все еще используется только пользовательский порт. Но все равно не могу подключиться к нему. Я слышал, что Network Of Brokers также используют интерфейс JMX для связи. Как я могу увидеть порт, который действительно используется двумя брокерами?   -  person Antoine Wils    schedule 18.10.2013
comment
Прочитав еще раз документацию по сети брокеров, я понял, что неправильно настроил ее. Я сделал каждого из двух своих брокеров одновременно ведущим / ведомым и узлом в сети брокера. Эта сеть не может работать, потому что один из 2 узлов всегда будет подчиненным и, следовательно, не будет активен в любое время. Но все же после отбрасывания сетевой части я не могу подключиться к JMX. Сейчас я пытаюсь установить 2 пары главный / подчиненный в одной сети брокера. Я отправлю свое наблюдение, если это будет уместно, позже   -  person Antoine Wils    schedule 21.10.2013
comment
Я, наконец, внес изменение, чтобы не иметь 2 работающих узлов в моей сети брокеров (2 пары главного подчиненного устройства, каждый из которых является узлом в сети). К сожалению, это не помогло при подключении к JMX.   -  person Antoine Wils    schedule 31.10.2013


Ответы (1)


JMX требуется 2 открытых порта. Для rmi необходим дополнительный. Я понял это благодаря этому сообщению: Браузер Apache ActiveMQ не может подключиться в консоль JMX

В моем случае исправление состоит в том, чтобы изменить конфигурацию моей оболочки, чтобы открыть порт 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
person Antoine Wils    schedule 31.10.2013