ActiveMq集群搭建

2017-01-10 10:03:39来源:oschina作者:bodomg人点击


1、ActiveMq
1.1、ACtiveMq下载,安装

1、activemq官网:http://activemq.apache.org/





2、解压压缩包:



1.2、Master-Slave模式(主从)

同时只有一个mq对外提供服务,当master挂掉的情况,slave会自动顶上成为master



1)、Shared File System Master Slave

使用ActiveMq自带默认数据库kahaDB,底层是文件系统,各个slave去竞争获取共享文件的锁(资源一定要共享:以下主从模式一样),谁抢到了就是谁做master,提供服务,其他做备份,当master挂掉,存活的slave再去竞争锁,成为新一代master。


a、新建,修改数据存放位置



修改conf/activema.xml



b、将activemq复制两份,启动。


后启动mq日志:



可以看到后启动mq属于salve。


打开mq控制面板



当我们把第一台mq关闭,第二台获取锁提供服务



刷新页面,服务依然可以继续提供。

2)、JDBC Master Slave

该模式与以上模式相同,将kahaDB文件系统换成数据库共享。


修改 activemq.xml,修改模式,添加数据源




将mysql驱动,以及连接池jar包添加到lib目录下


3)、Replicated LevelDB Store

使用zookeeper管理选举一个节点作为master (注:mq5.9以后版本才能使用)


修改activemq.xml



我这里zookeeper采用集群模式,单机模式直接直接填写 127.0.0.1:2181.


1.3、Broker-Cluster(负载均衡)

Broker-Cluster部署方式中,各个broker通过网络互相连接,并共享queue,提供了2中部署方式: static Broker-Cluster和Dynamic Broker-Cluster


1)、static Broker-Cluster

只要我们知道了想要使用的broker的地址,就可以使用static配置方式。


Static connector


用来创建网络中多个broker的静态配置。协议使用组合URI,即URI中包含其他URI。格式如下: static:(uri1,uri2,uri3,...) ?key=value


XML中配置示例:


1.


2.

3. uri="static://(tcp://remotehost1:61616,tcp://remotehost2:61616)"/>


4.


分别在两台服务器上配置activemq-1,activemq-2


activemq-1:activemq.xml



activemq-2:activemq.xml



acvivemq-1: data/activemq.log



acvivemq-2: data/activemq.log



可以看到已经建立网络连接。


2)、Dynamic Broker-Cluster

Dynamic Discovery集群方式在配置ActiveMQ实例时,不需要知道所有其它实例的URI地址


activemq-1与activemq-2:activemq.xml



官网配置说明:http://activemq.apache.org/networks-of-brokers.html

1.4、Master-Slave与Broker-Cluster相结合的部署方式

可以看到Master-Slave的部署方式虽然解决了高可用的问题,但不支持负载均衡,Broker-Cluster解决了负载均衡,但当其中一个Broker突然宕掉的话,那么存在于该Broker上处于Pending状态的message将会丢失,无法达到高可用的目的。



1)、部署的配置修改

这里以Broker-A + Broker-B建立cluster,Broker-C作为Broker-B的slave为例:


1)首先在Broker-A节点中添加networkConnector节点:





2)修改Broker-A节点中的服务提供端口为61616:





3)在Broker-B节点中添加networkConnector节点:





4)修改Broker-B节点中的服务提供端口为61617:





5)修改Broker-B节点中的持久化方式:





6)在Broker-C节点中添加networkConnector节点:





7)修改Broker-C节点中的服务提供端口为61618:





8)修改Broker-C节点中的持久化方式:





9)分别启动broker-A、broker-B、broker-C,因为是broker-B先启动,所以“/localhost/kahadb”目录被lock住,broker-C将一直处于挂起状态,当人为停掉broker-B之后,broker-C将获取目录“/localhost/kahadb”的控制权,重新与broker-A组成cluster提供服务。


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台