消息中间件之ActiveMQ--多节点集群

【笔记于学习尚硅谷课程所作】

10、ActiveMQ多节点集群

​  基于ZooKeeper和LevelDB搭建ActiveMQ集群。集群仅提供主备方式的高可用集群功能,避免单点故障。

​  三种集群方式:基于sharedFileSystem共享文件系统(KahaDB)、基于JDBC、基于可复制的LevelDB

​  下面采用zookeeper+Replicated LevelDB Store(可复制的LevelDB)

10.1 集群原理图

在这里插入图片描述

原理说明:
 使用ZooKeeper集群注册所有的ActiveMQ Broker但只有其中的一个Broker可以提供服务它将被视为Master,其他的Broker处于待机状态被视为Slave。
 如果Master因故障而不能提供服务ZooKeeper会从Slave中选举出一个Broker充当Master。Slave连接Master并同步他们的存储状态,Slave不接受客户端连接。所有的存储操作都将被复制到连接至Master的Slaves。
 如果Master宕机得到了最新更新的Slave会成为Master。故障节点在恢复后会重新加入到集群中并连接Master进入Slave模式。
 所有需要同步的消息操作都将等待存储状态被复制到其他法定节点的操作完成才能完成。

10.2 部署规划和步骤

  1. 配置环境(JDK,activemq等)
  2. 关闭防火墙
  3. 具备zookeeper集群并可以成功启动
  4. 建立集群部署规划列表
  5. 创建3台集群目录
  6. 修改管理控制台端口
  7. hostname名字映射
  8. ActiveMQ集群配置
  9. 修改各节点的消息端口
  10. 按顺序启动3各ActiveMQ节点
  11. zookeeper集群的节点状态说明

4.建立集群部署规划表

主机Zookeeper集群端口AMQ集群bind端口AMQ消息tcp端口管理控制台端口AMQ节点安装目录
192.168.111.1362191bind=“tcp://0.0.0.0:63631”616168161/mq_cluster/mq_node01
192.168.111.1362192bind=“tcp://0.0.0.0:63632”616178162/mq_cluster/mq_node02
192.168.111.1362193bind=“tcp://0.0.0.0:63633”616188163/mq_cluster/mq_node03

5.创建3台集群目录

mkdir /mq_cluster/

cd /mq_cluster/

cp -r /opt/apache-activemq-5.15.9 mq_node01

cp -r mq_ node01 mq_ node02

cp -r mq_ node01 mq_ node03

6.修改管理控制台端口(修改conf/jetty.xml)

<!--只需要修改node2和node3即可-->
<!--修改jetty.xml中jettyPort中port的value-->
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
	<!-- the default port number for the web console -->
	<property name= "host" value="0.0.0.0"/>
	<property name="port" value="8162"/>
</bean>

7.hostname名字映射(映射的名字随意)

vim /etc/hosts

#自己的IP 地址映射 例如
192.168.111.136 lfuser

8.ActiveMQ集群配置(修改activemq.xml)

(1)设置三个节点的BrokerName,要求一致

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="mybroker" dataDirectory="${activemq.data}">

(2)设置持久化配置

<!--将默认的kahaDB覆盖-->
<persistenceAdapter>
	<replicatedLevelDB
		directory="${activemq.data}/leveldb"
		replicas="3"
		bind="tcp://0.0.0.0:63631"
		zkAddress="localhost:2191,localhost:2192,localhost:2193"
		hostname="lfuser"
		sync="local_disk"
		zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>

9.修改各节点的消息端口(修改activemq.xml)

<transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&amp; wireFormat.maxFrameSize=104857600"/>

使用集群后,生产者和消费者的代码改动

public static final String ACTIVEMQ_URL="failover:(tcp://192.168.111.136:61616, tcp://192.168.111.136:61617,tcp://192.168.111.136:61618)?randomize=false";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值