Я настроил 3 zookeepers и 3 экземпляра activemq в 1 кластере.Activemq перестает работать - setupemq/zookeeper setup
Сценарий
- 3 ActiveMQ экземпляры только с 1 мастером и два других является ведомым.
- все 3 экземпляра activemq запущены, то есть
sudo service activemq status
возвращаетrunning
, но проверка журналов, 1 экземпляр (activemq1) в настоящее время ожидает других членов кластера, 1 экземпляр (activemq2) останавливается, 1 экземпляр (activemq3) имеет ошибку. Если учесть, что для выбора мастера требуется только два экземпляра, эта настройка должна быть успешной. - два экземпляра activemq должны быть запущены
- экземпляры zookeeper работают нормально.
Выпуск
Ниже приведены stacktraces соответствующих случаях ActiveMQ. Основываясь на моем понимании, для того, чтобы кластер назначил мастер-экземпляр, ему нужно как минимум два надлежащим образом запускать activemq. Учитывая, что все activemq instanes производит running
при выпуске sudo service activemq status
, я предполагаю, что внутри каждого экземпляра activemq есть проблема - см. Ниже stacktraces. Теперь, я заметил в журналах, что activemq1 не работает должным образом, поскольку другие экземпляры activemq не удались изнутри. Обратите внимание на stacktrace на activemq2, он застрял после того, как он успешно подключился к zookeeper, и у activemq3 появилась проблема, мне все равно нужно выяснить. Проблема исправлена, когда я перезапустил activemq2 и activemq3. Однако я не могу быть уверен, что этого больше не повторится, поэтому этот вопрос.
- activem1 показывает ниже StackTrace, который я предполагаю, что это происходит потому, что другие 2 экземпляр ActiveMQ работает, но есть ошибки
Session establishment complete on server 10.5.4.111/10.5.4.111:2181, sessionid = 0x1582db00708000c, negotiated timeout = 4000 Not enough cluster members connected to elect a master. Not enough cluster members connected to elect a master. Not enough cluster members connected to elect a master.
- activemq2 имеет ниже StackTrace, который тот, которого я не понимаю. Он остановился после успешного подключения к зоопарку, которые должны быть обнаружены в других случаях ActiveMQ, принадлежащих к кластеру-activem1 и activemq3
Opening socket connection to server 10.5.4.111/10.5.4.111:2181 Socket connection established to 10.5.4.111/10.5.4.111:2181, initiating session Session establishment complete on server 10.5.4.111/10.5.4.111:2181, sessionid = 0x1582db00708000d, negotiated timeout = 4000
activemq3 имеет ниже StackTrace
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)[apache-jsp-8.0.9.M3.jar:2.3]
Конфигурация для activemq
предыдущая конфигурация здесь с 2s zkSessionTimeout - по умолчанию. Я сделал это до 4 с, как в googled, чтобы максимизировать время, необходимое для экземпляра activemq, регистрирует себя в zookeeper.
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:61619"
zkAddress="zookeeper_addresses_here"
hostname="activemq_hostname_here"
zkSessionTimeout="4s"
/>
</persistenceAdapter>
Конфигурация для зоопарка
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/my/data/dir
clientPort=2181
server.1=activemq1_privateIP:2888:3888
server.2=activemq2_privateIP:2888:3888
server.3=activemq3_privateIP::2888:3888
autopurge.purgeInterval=24
autopurge.snapRetainCount=5
Zookeeper версия 3.4.9
ActiveMQ версия 5.13.4
Настройка с помощью Opswork
Heads вверх --- Если это совершенно новая установка, вы можете рассмотреть вопрос о том, что Replicated LevelDB собирается быть устаревшим в предстоящих выпусках ActiveMQ. Если да, то какова ваша платформа? Существуют и другие настройки высокой доступности/репликации, которые могут удовлетворить ваши потребности. –
Спасибо за головы. Однако, основываясь на их [сайте] (http://activemq.apache.org/masterslave.html), мы будем придерживаться для replicatedDB, поскольку теперь мы будем использовать activeMQ. Я видел потоки относительно хрупкости такого рода настроек, но сумел стать достаточно стабильным для своих требований - одним из них было увеличение zkSessionTimeout для activemq, чтобы иметь достаточно времени для подключения к zookeeper. Но это не работает для меня, я думаю. –
Правильно, я не предлагаю не использовать ActiveMQ, я предлагаю вам использовать альтернативную конфигурацию master + slave. NFSv4 (общий) или GFSv2 (реплицированный) гораздо проще поддерживать. –