2016-11-08 21 views
1

У меня есть установки экземпляров ActiveMQ mulitple для обеспечения отказоустойчивости в режиме ведомого в Windows. При настройке того же самого я только что создал 3 экземпляра в папке bin без изменения порта и начал все 3 экземпляра один за другим. Первый экземпляр стал хозяином, и оставшиеся были в подчиненном режиме, пока я не остановил мастер-экземпляр.activemq failover с использованием нескольких экземпляров в режиме ведущего ведомого на той же машине linux

Теперь я пытаюсь добиться того же в среде Linux. Первый экземпляр запускается успешно, но когда я запускаю второй экземпляр в другом окне, он выдает ниже ошибки:

ОШИБКА | Не удалось запустить Apache ActiveMQ ([instance2, ID: 132vm6-57227-1478597606120-0: 1], java.io.IOException: Транспортный коннектор не может быть зарегистрирован в JMX: java.io.IOException: Не удалось привязать к серверному сокету: tcp: //0.0.0.0: 61616? maximumConnections = 1000 & wireFormat.maxFrameSize = 104857600 из-за: java.net.BindException: Адрес уже используется) INFO | Apache ActiveMQ 5.14.0 (instance2, ID: 132vm6-57227-1478597606120-0: 1) отключается INFO | Коннектор openwire остановлен INFO | Коннектор amqp остановлен INFO | Контактор остановлен INFO | Разъем mqtt остановлен INFO | Коннектор ws остановлен INFO | PListStore: [/ opt/apache-activemq-5.14.0/bin/instance2/data/instance2/tmp_storage] остановлен INFO | Остановка задач очереди async INFO | Остановка асинхронных задач темы INFO | Остановлен KahaDB INFO | Apache ActiveMQ 5.14.0 (instance2, ID: 132vm6-57227-1478597606120-0: 1) время безотказной работы 0.585 секунд INFO | Apache ActiveMQ 5.14.0 (instance2, ID: 132vm6-57227-1478597606120-0: 1) отключен INFO | Закрытие [email protected]: дата запуска [Вт ноя 08 15:03:24 IST 2016]; корень контекстной иерархии WARN | Исключение из LifecycleProcessor в контексте close java.lang.IllegalStateException: LifecycleProcessor не инициализирован - вызовите 'refresh' перед вызовом методов жизненного цикла через контекст: [email protected]: дата запуска [Вт ноя 08 15 : 03: 24 IST 2016]; root из контекстной иерархии at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor (AbstractApplicationContext.java:357) [spring-context-4.1.9.RELEASE.jar: 4.1.9.RELEASE] в org.springframework.context .support.AbstractApplicationContext.doClose (AbstractApplicationContext.java:884) [spring-context-4.1.9.RELEASE.jar: 4.1.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.close (AbstractApplicationContext.java: 843) [spring-context-4.1.9.RELEASE.jar: 4.1.9.RELEASE] at org.apache.activemq.hooks.SpringContextHook.run (SpringContextHook.java:30) [activemq-spring-5.14.0. jar: 5.14.0] at org.apache.activemq.broker.BrokerService.stop (BrokerService.java:875) [activemq-broker-5.14.0.jar: 5.14.0] at org.apache.activemq.xbean .XBeanBrokerService.stop (XBeanBr okerService.java:122)[activemq-spring-5.14.0.jar:5.14.0] at org.apache.activemq.broker.BrokerService.start (BrokerService.java:629) [activemq-broker-5.14.0. jar: 5.14.0] at org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet (XBeanBrokerService.java:73) [activemq-spring-5.14.0.jar: 5.14.0] at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) [: 1.7.0_65] at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) [: 1.7.0_65] at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) [: 1.7.0_65] at java.lang.reflect.Method.invoke (Method.java:606) [: 1.7.0_65]

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

ответ

2

Чтобы получить несколько экземпляров ActiveMQ, работающих на одном компьютере, вам необходимо изменить порты, которые они пытаются открыть. Есть (по крайней мере) 3 порта, которые необходимо изменить:

  • transportConnector Порты, принимающие трафик обмена сообщениями. Они определены в файле activemq.xml. Обычно вам нужен только номер openwire - по умолчанию это 61616; Обычно я изменяю это в других экземплярах ActiveMQ на 61626, 61636 и т. Д. Обычно вы можете комментировать другие, если вы не собираетесь их использовать.
  • Порт HTTP Jetty. Это определено в файле jetty.xml. Значение по умолчанию - 8161, установите следующие значения 8162, 8163 и т. Д.
  • Порт JMX. Это один немного сложнее, так как вам нужно вставить кусок конфига в activemq.xml явно определить его следующим образом:

    <managementContext> 
        <managementContext createConnector="true" connectorPort="1099"/> 
    </managementContext> 
    

Вы можете изменить это на 1199, 1299 на других случаях. Надеюсь это поможет.

+0

Привет @Jakub .. спасибо за ваши входы, я уже протестировал упомянутую вами установку и ее работу для меня. Но когда я пытаюсь запустить несколько экземпляров без изменения портов, он вызывает ошибку в Linux, но отлично работает в Windows через командную строку. Удивление, если это может работать в Windows, то почему бы и нет в Linux? – JavaSeeker

+0

Скорее всего, ваш каталог данных указывает на разные местоположения в каждой из брокерских установок Linux. Таким образом, все они пытаются подняться одновременно (т. Е. Нет ведущего-подчиненного). В Windows это звучит так, как будто вы правильно настроили его. Брокер откроет свои порты только в том случае, если считает себя «ведущим». –

+0

@Jakub, Можете ли вы отправить образец activemq. xml для перехода на другой ресурс? –