ActiveMQ集群方案
本人最近使用VM搭建ActiveMQ集群成功了,写篇文章记录下。集群方案介绍。
MasterSlave模式
至少需要3个节点,利用ZooKeeper从众多节点中选举一个Master节点,其他为Slave节点。只有Master节点对外提供服务,使用LevelDB存储消息,当主节点宕机后,其他节点会选举出一个新的节点成为Master节点,继续对外提供服务。
- 优点:实现高可用,排除单节点故障导致的服务中断。
- 缺点:无法实现负载均衡,各个节点的消息无法同步。
BrokerCluster模式
不同节点的Broker之间通过networkConnectors (网络连接器)方式同步消息,使得不同节点的消费者可以互相消费消息。
网络连接器:主要用于配置ActiveMQ服务器与服务器之间的网络通信方式,用于同步消息。分为静态和动态。
- 静态连接器:指定iP地址
<networkConnectors>
<networkConnector uri="static:(tcp://xxx,tcp://xxx)"/>
</networkConnectors>
- 动态连接器:广播
<networkConnectors>
<networkConnector uri="multicast://xxx"/>
</networkConnectors>
- 优点:实现负载均衡,多个Broker之间同步消息。
- 缺点:不能高可用。
将两者结合可以同时实现高可用和负载均衡,一举两得。
集群规划
VM创建三台服务器,每台服务器运行两个activemq实例,分别为:activemq1和activemq2。
activemq1: 192.168.254.132,192.168.254.133,192.168.254.134
activemq2: 192.168.254.132,192.168.254.133,192.168.254.134
MasterSlave集群
在192.168.254.132上操作
解压安装包
tar -zxvf apache-activemq-5.15.8-bin.tar.gz
mv apache-activemq-5.15.8 activemq1 #broker-a集群
cp –r activemq1 activemq2 #broker-b集群
修改activemq1的activemq.xml文件
vi activemq1/conf/activemq.xml
- broker-a
配置brokerName
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-a" dataDirectory="${activemq.data}">
配置LevelDB消息持久化
<persistenceAdapter>
<replicatedLevelDB<