ActiveMQ 简单集群

2018-02-08  本文已影响47人  8813d76fee36

慕课网Java消息中间件笔记

笔记代码
https://gitee.com/oooh2016/JMS-DEMO

ActiveMQ集群配置

为什么要配置消息中间件集群

ActiveMQ集群基础知识

集群方式

客户端配置

语法:
failover:(uri1,...,uriN)?transportOptions

transportOptions参数说明
1、randomize:默认为true,表示在URI列表中选择URI连接时是否采用随机策略。
2、initialReconnectDelay:默认为10,单位毫秒。表示第一次尝试重连之间的等待时间。
3、maxReconnectDelay:默认30000,单位毫秒。最长重连的时间间隔。

Broker Cluster集群配置

集群方案

ActiveMQ Master Slave 集群方案

共享存储集群(Shared storage master/slave)的原理

有节点A、节点B两台服务器,并使用一个共享的存储地址,称之为持久化,它可以是JDBC数据库也可以是基于SAN的文件系统(SAN File System)。
将节点A和节点B的持久化地址都配置到同一个地方之后,先启动节点A,此时节点A获得了排他锁成为master;再启动节点B,由于节点B未获取到排他锁,因此成为slave。


节点A成为master

成为master的服务器具有对外开放服务的能力,可以通过客户端提交信息到节点A,但是不能提交到节点B。
此时A宕机,节点B获取到了排他锁成为master,客户端使用失效转移后,将请求发送到了节点B。实现了请求不间断的高可用。


节点B成为master

基于复制的LevelDB Store的原理

由于LevelDB是基于ZooKeeper的,所以至少需要3台服务器节点:Node A、Node B、Node C,他们都有自己的初始化方式,并配置了相同的ZK节点,通过ZK来选举一台服务器作为master。
假如Node A被选举为master,此时它具有对外提供服务的能力,而Node B和Node C不具备。Node A获取外部消息资源之后在本地储存,通过ZK再发送给Node B和Node C,并在他们的本地储存。
如果Node A出现故障,ZK会重新选举出一个master。

两种集群方式对比

简单实现完美集群方案——共享持久化资源方式

节点A和节点B、节点A和节点C组成消息同步;节点B和节点C组成Master和Slave。


image.png

按A、B、C的顺序启动服务器

此时节点B拿到持久化资源成为master,节点C成为slave。

简单集群的实现

安装三份ActiveMQ

由于是在单台服务器演示,所以通过修改端口来实现多节点配置。

解压ActiveMQ并复制三份,分别命名为activemq-a、activemq-b、activemq-c


image.png

创建共享储存文件夹

新建一个文件夹作为节点共享的存储文件夹。

$ mkdir kahadb

分别配置节点

修改activemq目录下的/conf/activemq.xml文件。


activemq配置文件

节点A -- activemq-a

找到transportConnector节点,只保留61616端口配置,其余的协议注释掉。

保留61616端口

节点B -- activemq-b

同样也是注释掉其他协议,保留第一个,同时将端口改为61617


节点B配置

节点C -- activemq-c

C节点配置过程同B一样。端口修改为61618和8163,网络连接器uri指向A节点 url="static:(tcp://127.0.0.1:61616)"

按A、B、C的顺序启动节点

依次启动A、B、C节点

代码验证

测试

查看连接状态

在ActiveMQ后台的Connections和Network选项中可以查看服务器的连接状态。

SpringBoot-状态转移-多节点配置

SpringBoot
上一篇下一篇

猜你喜欢

热点阅读