ZooKeeper+ActiveMQ集群搭建

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

zookeeper方案:
主机ip:192.168.25.129,192.168.25.130,192.168.25.131
消息端口:都是2181
集群通信端口:5888:9888
节点目录:都是/usr/local/zookeeper

(1)启动三个节点,布置ZooKeeper集群:

版本:

(2)解压并移动至/usr/local/目录下,改名为zookeeper
tar -zxf  zookeeper-3.4.6.tar.gz -C /usr/local/zookeeper

(3)cd zookeeper/conf下
修改zoo_sample.cfg文件  首先改名为zoo.cfg  (一定要改)
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg(三个节点同时修改)

(4)在zookeeper文件夹下创建data文件夹,并cd进入

(5)创建文件myid,只写“0”(三个节点各写0,1,2)

与这里的server节点对应


(6)修改/etc/profile将zookeeper中bin文件下的命令加入classpath,让其可以全局访问
vim /etc/profile    

sourcr /etc/profile  //刷新配置文件
(7)zkServer.sh start启动三个服务器
(8)查看服务器状态
zkServer.sh status



可见ip:192.168.25.131为主节点。至此zookeeper集群服务器搭建完成。

3 搭建ActiveMQ集群

搭建环境:
ip:都是192.168.25.129,共三个节点
集群通信端口:62621,62622,62623
消息端口:51511,51512,51513
节点目录:/usr/local/activeMQ

(1)在/usr/local下创建文件夹activemq-cluster
解压mq到activemq-cluster文件夹下,将mq改名为node1,在复制两份node2,node3

(2)更改node2/conf和node3/conf下的jetty.xml文件中,搜索port,将8161对应更改为8162和8163

(4)分别更改node2和node3的conf下的activemq.xml文件
1)更改borkerName,将集群中的服务名设置成相同的

2)将存储方式更改为google的leveldb,性能更好

(3)修改后端数据访问的端口分别改为51511  51512  51513

(4)分别启动,bin/activemq start,注:前台管理页面只有主节点能够访问。

4 切换到zookeeper查看activemq集群状态

多了activemq的目录,深入进去

发现有三个节点,就是我们搭建的mq的集群

当把8161停掉后:

节点减少为两个
再将8161启动

重新恢复为3个

至此mq主从复制集群搭建完毕。

4 搭建双主多从高可用可扩展

另一套搭建方案:
ip:都是192.168.25.130,共三个节点
集群通信端口:61614,61615,61616
消息端口:51511,51512,51513
节点目录:/usr/local/activeMQ

同样的步骤搭建起来另外一套集群,然后再之前mq的conf下的activemq.xml文件中添加(添加在persistenceAdapter也就是数据源节点之前)

<networkConnectors>
           <networkConnector name="local network" duplex="true" conduitSubscriptions="false" uri="static://(tcp://19
            2.168.25.130:61616,tcp://2.168.25.130:61615,tcp://2.168.25.130:61614)"/>

</networkConnectors>

在这套新搭建的集群的conf下的activemq.xml文件中添加:
<networkConnectors>
           <networkConnector name="local network" duplex="true" conduitSubscriptions="false" uri="static://(tcp://19
            2.168.25.129:51511,tcp://192.168.25.129:51512,tcp://192.168.25.129:51513)"/>

</networkConnectors>

这样两个节点就可以实现通信了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值