基于ZooKeeper和LevelDB搭建ActiveMQ集群,参考文章
https://www.cnblogs.com/cac2020/p/9428255.html
配置。
刚开始还是很顺利的,消息正常消费,控制台可以打开。 为了模拟集群高可用,统一kill掉了其中的master节点。 再次启动该节点发现异常:
No IOExceptionHandler registered, ignoring IO exception | org.apache.activemq.broker.BrokerService | LevelDB IOException handler. java.io.IOException: com/google/common/util/concurrent/internal/InternalFutureFailureAccess
网上说要删除lib包,注释日志配置都无法正常启动。折腾了很久都无法解决,后来把3个节点下的leveldb目录全部删掉。重启zk和activemq节点,可以正常启动。
– 后续更新
在验证集群高可用过程中发现一个奇怪的问题,集群关系配置好后,我尝试去杀掉master broker它会自动触发选举,也能够重新选出一个新的master来提供服务。 但是只要我接入项目,同样的操作,它就选举不出来,后面发现一直报这个错误: java.io.IOException:
com/google/common/util/concurrent/internal/InternalFutureFailureAccess
正常情况:
当我停掉这个master节点后
可以看到能够正常选举出master,很好。
当我接入spring boot项目后
spring:
activemq:
# broker-url: tcp://192.168.255.177:61616
user: admin
password: admin
broker-url: failover:(tcp://192.168.255.176:61616,tcp://192.168.255.177:61617,tcp://192.168.255.178:61618)
failover失败转移无效,这就选举不出来。。。
节点启动失败:
B IOException handler.
java.io.IOException: com/google/common/util/concurrent/internal/InternalFutureFailureAccess
at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:40)[activemq-client-5.15.11.jar:5.15.11]
at org.apache.activemq.leveldb.LevelDBClient.might_fail(LevelDBClient.scala:552)[activemq-leveldb-store-5.15.11.jar:5.15.11]
at org.apache.activemq.leveldb.LevelDBClient.replay_init(LevelDBClient.scala:667)[activemq-leveldb-store-5.15.11.jar:5.15.11]
at org.apache.activemq.leveldb.LevelDBClient.start(LevelDBClient.scala:558)[activemq-leveldb-store-5.15.11.jar:5.15.11]
at org.apache.activemq.leveldb.DBManager.start(DBManager.scala:648)[activemq-leveldb-store-5.15.11.jar:5.15.11]
at org.apache.activemq.leveldb.LevelDBStore.doStart(LevelDBStore.scala:312)[activemq-leveldb-store-5.15.11.jar:5.15.11]
at org.apache.activemq.leveldb.replicated.MasterLevelDBStore.doStart(MasterLevelDBStore.scala:110)[activemq-leveldb-store-5.15.11.jar:5.15.11]
开始以为activemq-client-5.15.11.jar包版本问题,我就把项目也升级到这个版本,但是仍然出错。。。
网上找了很久资料都没有办法解决。看到一篇文章,这个哥们也是遇到一样的问题,还给Apache提了个问题:
https://issues.apache.org/jira/browse/AMQ-7471
没有解决,只给了一句话:
LevelDB is deprecated and no longer supported, please switch to KahaDB for ActiveMQ usage(LevelDB已弃用,不再受支持,请切换至KahaDB以使用ActiveMQ)
activemq使用的是5.15.11版本,可能低版本不会有这个问题。
基于ZooKeeper和LevelDB搭建ActiveMQ集群,参考文章https://www.cnblogs.com/cac2020/p/9428255.html介绍来配置相关配置。刚开始还是很顺利的,消息正常消费,控制台可以打开。 为了模拟集群高可用,统一kill掉了其中的master节点。 再次启动该节点发现异常:No IOExceptionHandler registered, ignoring IO exception | org.apache.activemq.broker.BrokerSer
第一步:服务器配置
三台Ubuntu server准备好之后,假设它们的IP地址分别为192.168.0.11,192.168.0.12和192.168.0.13
安装Zookeeper需要先装JDK。
第二步:Zookeeper安装参考:http://sxlkk.iteye.com/blog/2308556.
下面搭建activemq集群...
zookeeper和ActiveMQ进程都在,但是MQ无法使用,也不能访问MQ的管理页面,其实还是没真正的启动。
搜了一圈,还是认为是有脏数据,但是并不像是在启动或停止服务的时候有发mq消息导致的。因为今天我就没运行代码他怎么发??!!!
最后还是得删除leveldb文件夹才行。将全部节点的./apache-activemq/data/leveldb文件夹删了就能启动了。铁憨憨设计!!!
截取报错信息:
2020-07-10 10:06:56,232 | WARN | unprocesse...