【问题标题】:Activemq stops working - activemq/zookeeper setupActivemq 停止工作 - activemq/zookeeper 设置
【发布时间】:2018-03-09 16:12:46
【问题描述】:

我在 1 个集群中配置了 3 个 Zookeeper 和 3 个 activemq 实例。

场景

  • 3 个 activemq 实例,只有 1 个主实例,另外两个是从属实例。
  • 所有3个activemq实例都在运行,即sudo service activemq status返回running但检查日志,1个实例(activemq1)当前正在等待其他集群成员,1个实例(activemq2)停止,1个实例(activemq3)有错误.假设我们只需要两个实例来选举master,这个设置应该可以成功运行。
  • 应该运行两个 activemq 实例
  • zookeeper 实例运行良好。

问题

下面是各个 activemq 实例的堆栈跟踪。根据我的理解,集群至少需要两个正常运行的 activemq 实例才能提名一个主实例。鉴于所有 activemq 实例在使用 sudo service activemq status 发出时都会产生 running ,我假设每个 activemq 实例内部都存在问题 - 请参阅下面的堆栈跟踪。现在,我在日志中注意到,只有由于其他 activemq 实例在内部发生故障,activemq1 才无法正常运行。注意activemq2上的stacktrace,成功连接zookeeper后就卡住了,activemq3有问题,我还需要弄清楚。当我重新启动 activemq2 和 activemq3 时,该问题已得到解决。但是,我不能确定这不会再次发生,因此这个问题。

  • activem1 显示下面的堆栈跟踪,我认为这是因为其他 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 有下面的堆栈跟踪,这是我不明白的。连接zookeeper成功后就停止了,应该被属于cluster-activem1和activemq3的其他activemq实例检测到

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 具有以下堆栈跟踪

    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)[apache-jsp-8.0.9.M3.jar:2.3]

activemq的配置

这里之前的配置是 2s zkSessionTimeout - 这是默认值。我按照谷歌搜索将其设置为 4 秒,以最大限度地延长 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

动物园管理员 3.4.9 版

ActiveMQ 版本 5.13.4

通过 Opswork 设置

【问题讨论】:

  • 注意--- 如果这是一个全新的设置,您可能需要考虑在即将发布的 ActiveMQ 版本中不推荐使用 Replicated LevelDB。如果是这样,您的平台要求是什么?还有其他高可用性/复制设置可以满足您的需求。
  • 感谢您的提醒。但是,基于他们的site,我们现在将坚持使用replicatedDB,因为我们将使用activeMQ。我已经看到有关这种设置的脆弱性的线程,但已经设法变得足够稳定以满足他们的要求 - 其中之一是增加 zkSessionTimeout 以使 activemq 有足够的时间连接到 Zookeeper。但我猜它对我不起作用。
  • 对,我不是建议不要使用 ActiveMQ,而是建议您使用替代的主从配置。 NFSv4(共享)或 GFSv2(复制)更易于维护。

标签: activemq apache-zookeeper


【解决方案1】:

属性“目录”主从mq需要引用同一个文件夹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多