当前位置: 代码迷 >> 综合 >> ActiveMQ+Zookeeper集群
  详细解决方案

ActiveMQ+Zookeeper集群

热度:72   发布时间:2023-10-19 01:16:01.0
ActiveMQ+Zookeeper集群

一、使用ZooKeeper实现的Master-Slave实现方式,是对ActiveMQ进行高可用的一种有效的解决方案,高可用的原理:使用ZooKeeper(集群)注册所有的ActiveMQ Broker。只有其中的一个Broker可以对外提供服务(也就是Master节点),其他的Broker处于待机状态,被视为Slave。如果Master因故障而不能提供服务,则利用ZooKeeper的内部选举机制会从Slave中选举出一个Broker充当Master节点,继续对外提供服务。

部署方案
zookeeper版本:zookeeper-3.4.5
MQ版本:apache-activemq-5.9.0
Zookeeper方案
主机IP                         消息端口        通信端口        节点目录/usr/local/下
192.168.30.220        2181            2888:3888          zookeeper
192.168.30.221        2181            2888:3888           zookeeper
192.168.30.130        2181            2888:3888          zookeeper
ActiveMQ方案
主机IP                      集群通信端口        消息端口         控制台端口        
192.168.30.220     0                    61616                8161                
192.168.30.221        0                  61617               8162                
192.168.30.130        0                61618                 8163                


1.安装zookeeper
配置环境变量
export  ZOOKEEPER_HOME =/tmp/zookeeper-3.4.5  
export  PATH =$ZOOKEEPER_HOME/bin:$PATH 
修改配置zoo.cfg
ActiveMQ+Zookeeper集群
三个zookeeper配置相同
在$zookeeper/data/下创建myid文件,将上面配置文件server后面的0.1.2分别写到对应服务器zookeeper的myid内。
启动服务
检测状态可以看到状态为主。
ActiveMQ+Zookeeper集群
2.安装AcitveMQ
将三个MQ分别放在三台服务器上
1 修改控制台端口(默认为8161),在mq安装路径下的conf/jetty.xml,将端口改成不相同即可。
ActiveMQ+Zookeeper集群
三个节点都需要修改为8161、8162、8163

2 集群配置文件修改:我们在mq安装路径下的conf/activemq.xml进行修改其中的持久化适配器,修改其中的bind、zkAddress、hostname、zkPath。
ActiveMQ+Zookeeper集群
三处MQ只有hostname不一样。需要填写各自服务器的IP
ActiveMQ+Zookeeper集群
这个端口每台服务器不一样。

然后也需要修改mq的brokerName,并且每个节点名称都必须相同
ActiveMQ+Zookeeper集群

启动集群,先起zookeeper再起MQ
查看日志无报错,测试集群
1.在页面连接访问,IP加端口,MQ可以访问的就是主,不能访问的是从,
2.关闭主,查看从MQ日志,看看哪台变成了主,在前端页面看看这台能不能访问。



  相关解决方案