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
三个zookeeper配置相同
在$zookeeper/data/下创建myid文件,将上面配置文件server后面的0.1.2分别写到对应服务器zookeeper的myid内。
启动服务
检测状态可以看到状态为主。
2.安装AcitveMQ
将三个MQ分别放在三台服务器上
1 修改控制台端口(默认为8161),在mq安装路径下的conf/jetty.xml,将端口改成不相同即可。
三个节点都需要修改为8161、8162、8163
2 集群配置文件修改:我们在mq安装路径下的conf/activemq.xml进行修改其中的持久化适配器,修改其中的bind、zkAddress、hostname、zkPath。
三处MQ只有hostname不一样。需要填写各自服务器的IP
这个端口每台服务器不一样。
然后也需要修改mq的brokerName,并且每个节点名称都必须相同
启动集群,先起zookeeper再起MQ
查看日志无报错,测试集群
1.在页面连接访问,IP加端口,MQ可以访问的就是主,不能访问的是从,
2.关闭主,查看从MQ日志,看看哪台变成了主,在前端页面看看这台能不能访问。