说明
前面有章节介绍了mq的主从复制和集群方案,可以看到Master-Slave的部署方式虽然解决了高可用的问题,但不支持负载均衡,Broker-Cluster解决了负载均衡,但当其中一个Broker突然宕掉的话,那么存在于该Broker上处于Pending状态的message将会丢失,无法达到高可用的目的。
由于目前ActiveMQ官网上并没有一个明确的将两种部署方式相结合的部署方案,所以我采用了两种方式结合起来部署。
在本机完成2个broker的共享文件测试
2个broker activemq_node1和activemq_node2共享data文件夹。
[root@vanelife-mq1 data]# ll
total 47092
drwxr-xr-x. 11 root root 4096 Jul 11 2014 activemq_node1
drwxr-xr-x. 11 root root 4096 May 21 07:14 activemq_node2
drwxr-xr-x. 2 root root 4096 May 21 07:13 data
配置如下:
node1全配置
|
|
node2全配置
|
|
记得修改jetty.xml的端口,两个broker的端口不要重复。
启动后,这样主从就做好了,平时这两个节点只有master在工作,slave待定状态,当master挂了之后,slave接管正常工作。
slave的日志正常没工作的情况下显示:
2015-0-21 09:04:29,637 | INFO | Database /data/data/lock is locked… waiting 10 seconds for the database to be unlocked. Reason: java.io.IOException: File ‘/data/data/lock’ could not be locked. | org.apache.activemq.store.SharedFileLocker | main
2015-05-21 09:04:39,640 | INFO | Database /data/data/lock is locked… waiting 10 seconds for the database to be unlocked. Reason: java.io.IOException: File ‘/data/data/lock’ could not be locked. |
做好了之后,再通过负载均衡复制多个这样的节点,高可用的集群就搭建完成了。