我在1个群集中配置了3个zookeepers和3个activemq实例。
示例
sudo service activemq status
返回running
但是检查日志,1个实例(activemq1)当前正在等待其他集群成员,1个实例(activemq2)停止,1个实例( activemq3)有错误。假设我们只需要两个实例来选择master,这个设置应该能够成功运行。问题的
以下是各个activemq实例的堆栈跟踪。根据我的理解,它至少需要两个正确运行的activemq intances来为集群提名一个主实例。鉴于所有activemq instanes在发出running
时都会生成sudo service activemq status
,我假设每个activemq实例中都存在问题 - 请参阅下面的stacktraces。现在,我注意到日志,activemq1只能无法正常运行,因为其他activemq实例在内部失败。注意activemq2上的堆栈跟踪,它在成功连接到zookeeper并且activemq3出现问题后陷入困境,我仍需要弄清楚。重新启动activemq2和activemq3时,问题已得到解决。但是,我不能确定这不会再次发生,因此这个问题。
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.
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 - 这是默认值。我根据google搜索到4s,以最大化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>
zookeeper的配置
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设置
答案 0 :(得分:0)
属性&#34;目录&#34; master-slave mq需要引用同一个文件夹