ActiveMQ高可用集群方案

你离开我真会死。 提交于 2020-10-30 05:39:42

ActiveMQ的集群部署方式主要有三种:

  • Master-Slave部署方式(又分为基于共享文件和数据库的方式)

  • Broker-Cluster部署方式

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

Shared filesystem Master-Slave 部署方式

Shared database Master-Slave 部署方式

基于数据库的Master-Slave集群部署

  1. 在ActiveMQ的安装目录/lib/extra 下添加数据库驱动包

  1. 修改activemq.xml文件的broker节点开启持久化

  1. 在activemq.xml文件中修改持久化策略

  1. 在activemq.xml文件中添加数据源

  1. 将配置好的activemq全部复制到其他服务器,启动ActiveMQ集群搭建就完成了

Master-Slave集群主要解决了单点故障的问题,Master-Slave集群中的一个节点挂掉,其他的节点任然可用,服务就任然可用。集群搭建好之后在代码中测试时,只需要修改brokerUrl的值,如”failover:(tcp://master:61616,tcp://salve:61616)?initialReconnectDelay=100”

基于Broker-Cluster集群部署

Broker-Cluster集群通过网络连接,将多个broker组合,对外构成一个整体,集群之间共享队列和主题列表

Broker-Cluster集群的搭建非常简单,只需要在activemq.xml文件中指定broker需要连接的其他节点的broker信息即可,在所有broker都启动后,可以在Web管理界面的Network页面内看到连接的信息。

Static Broker-Cluster部署配置示例:

<networkConnectors>
<networkConnector uri="static:(tcp://other-broker:port)" duplex="false" />
<networkConnectors>

Dynamic Broker-Cluster部署配置示例:

<networkConnectors>
<networkConnector uri="multicast://default" />
<networkConnectors>

Master-Slave与Broker-Cluster相结合的集群

Master-Slave集群解决了单点故障的问题,但是仍然只是一个节点处理所有请求。Broker-Cluster可以做到负载均衡,但是无法解决单点故障的问题。Master-Slave与Broker-Cluster两者相结合的集群即可解决单点故障又可保证负载均衡,做到了高可靠和高可用。

Master-Slave与Broker-Cluster集群部署配置示例:

<networkConnectors>
<networkConnector uri="masterslave:(tcp://other-cluster1-master:61616,tcp://other-cluster1-slave:61616)" duplex="false" />
<networkConnector uri="masterslave:(tcp://other-cluster2-master:61616,tcp://other-cluster2-slave:61616)" duplex="false" />
<networkConnectors>

网络连接器配置说明

networkConnector配置属性说明:

本文分享自微信公众号 - Coding Diary(gh_7e1f05090980)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!