百色金融新闻网
您的位置:百色金融新闻网 > 金融新闻 > ActiveMQ高可用集群方案-activemq

ActiveMQ高可用集群方案-activemq

作者:百色金融新闻网日期:

返回目录:金融新闻

最新资讯《ActiveMQ高可用集群方案-activemq》主要内容是activemq,> 在高并发、对稳定性要求极高的系统中,高可用的是必不可少的,当然ActiveMQ也有自己的集群方案。只有其中的一个Broker可以提供服务,被视为 Master,其他的 Broker,现在请大家看具体新闻资讯。

ActiveMQ高可用集群方案

在高并发、对稳定性要求极高的系统中,高可用的是必不可少的,当然ActiveMQ也有自己的集群方案。从ActiveMQ 5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper + LevelDB 的 Master-Slave 实现方式。

相关文章:

范例项目: http://wosyingjun.iteye.com/blog/2312553

ActiveMQ的简单实用:http://wosyingjun.iteye.com/blog/2314681

一. ActiveMQ的高可用原理

使用ZooKeeper(集群)注册所有的ActiveMQ Broker。只有其中的一个Broker可以提供服务,被视为 Master,其他的 Broker 处于待机状态,被视为Slave。如果Master因故障而不能提供服务,Zookeeper会从Slave中选举出一个Broker充当Master。

Slave连接Master并同步他们的存储状态,Slave不接受客户端连接。所有的存储操作都将被复制到 连接至 Master的Slaves。如果Master宕了,得到了最新更新的Slave会成为 Master。故障节点在恢复后会重新加入到集群中并连接Master进入Slave模式。

是不是觉得和Redis Sentinel主从高可用的方式很像,这里的zookeeper起到的作用和reids里的sentinel作用差不多。

另外,附上官方文档的一则警告,请使用者注意。replicated LevelDB 不支持延迟或者计划任务消息。这 些消息存储在另外的LevelDB文件中,如果使用延迟或者计划任务消息,将不会复制到Slave Broker上,不能实现消息的高可用。

二. ActiveMQ的持久化方式

ActiveMQ有三种持久化方式(在activemq.xml可配):

(1) 基于共享文件系统(KahaDB,默认)

Xml代码

ActiveMQ高可用集群方案

  1. <persistenceAdapter>

  2. <kahaDB directory="${activemq.data}/kahadb"/>

  3. </persistenceAdapter>

(2) 基于JDBC

Xml代码

ActiveMQ高可用集群方案

  1. <persistenceAdapter>

  2. <jdbcPersistenceAdapter dataSource="#MySQL-DS"/>

  3. </persistenceAdapter>

  4. <!--注意:需要添加mysql-connector-java相关的jar包到avtivemq的lib包下-->

  5. <bean id="MySQL-DS" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">

  6. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

  7. <property name="url" value="jdbc:mysql://127.0.0.1:3306/beautyssm_mq?useUnicode=true&characterEncoding=UTF-8"/>

  8. <property name="username" value="root"/>

  9. <property name="password" value="xxxx"/>

  10. </bean>

(3) 基于可复制的LevelDB(常用于集群)

Xml代码

ActiveMQ高可用集群方案

  1. <persistenceAdapter>

  2. <replicatedLevelDB

  3. directory="${activemq.data}/leveldb" #数据存储路径

  4. replicas="3" #节点个数

  5. bind="tcp://0.0.0.0:62621" #用于各个节点之间的通讯

  6. zkAddress="localhost:2181,localhost:2182,localhost:2183"

  7. hostname="localhost"

  8. zkPath="/activemq/leveldb-stores"/>#在zookeeper中集群相关数据存放路径

  9. </persistenceAdapter>

LevelDB是Google开发的一套用于持久化数据的高性能类库,是单进程的服务,能够处理十亿级别规模Key-Value型数据,占用内存小。

这里我们采用第三种方式,也是官网推荐的方式。

三. 高可用的部署

1、ActiveMQ的高可用集群基于Zookeeper的高可用集群,所以要先部署Zookeeper集群

见:ZooKeeper高可用集群的安装及配置

2、在3个ActiveMQ节点中配置conf/activemq.xml中的监控端口

Xml代码

ActiveMQ高可用集群方案

  1. 节点1:

  2. <property name="port" value="8161"/>

  3. 节点2:

  4. <property name="port" value="8162"/>

  5. 节点3:

  6. <property name="port" value="8163"/>

3、在3个ActiveMQ节点中配置conf/activemq.xml中的持久化适配器

Xml代码

ActiveMQ高可用集群方案

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

  2. <persistenceAdapter>

  3. <replicatedLevelDB

  4. directory="${activemq.data}/leveldb"

  5. replicas="3"

  6. bind="tcp://0.0.0.0:6262?"

  7. zkAddress="localhost:2181,localhost:2182,localhost:2183"

  8. hostname="localhost"

  9. zkPath="/activemq/leveldb-stores"/>

  10. </persistenceAdapter>

  11. </broker>

注:每个 ActiveMQ 的 BrokerName 必须相同,否则不能加入集群。

4、修改各节点的消息端口:

Xml代码

ActiveMQ高可用集群方案

  1. 节点1:

  2. <transportConnector name="openwire" uri="tcp://0.0.0.0:61611maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

  3. 节点2:

  4. <transportConnector name="openwire" uri="tcp://0.0.0.0:61612maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

  5. 节点3:

  6. <transportConnector name="openwire" uri="tcp://0.0.0.0:61613maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

5、按顺序启动 3 个 ActiveMQ 节点:

Xml代码

ActiveMQ高可用集群方案

  1. $ /usr/local/activemq/activemq-01/bin/activemq start

  2. $ /usr/local/activemq/activemq-02/bin/activemq start

  3. $ /usr/local/activemq/activemq-03/bin/activemq start

监听日志:

Xml代码

ActiveMQ高可用集群方案

  1. $ tail -f /usr/local/activemq/activemq-01/data/activemq.log

  2. $ tail -f /usr/local/activemq/activemq-02/data/activemq.log

  3. $ tail -f /usr/local/activemq/activemq-03/data/activemq.log

四. 集群部署

之前已经实现了ActiveMQ的高可用部署,单仅仅是高可用集群,无法达到负载均衡的作用,接下来只需简单配置就能完成可以实现负载均衡的集群功能:

在集群1的activemq.xml中链接集群2(在persistenceAdapter标签前配置): 在集群2的activemq.xml中链接集群1(在persistenceAdapter标签前配置):

这样就实现了ActiveMQ的集群高可用负载均衡功能。

五. 客户端连接:

ActiveMQ 的客户端只能访问Master的Broker,其他处于Slave的Broker不能访问。所以客户端连接Broker应该使用failover协议。

配置文件地址应为:

failover:(tcp://192.168.1.100:61611,tcp://192.168.1.100:61612,tcp://192.168.1.100:61613)?randomize=false

或:

failover:(tcp://192.168.2.100:61611,tcp://192.168.2.100:61612,tcp://192.168.2.100:61613)?randomize=false

相关阅读

  • ActiveMQ高可用集群方案-activemq

  • 百色金融新闻网金融新闻
  • activemq,> 在高并发、对稳定性要求极高的系统中,高可用的是必不可少的,当然ActiveMQ也有自己的集群方案。只有其中的一个Broker可以提供服务,被视为 Master,其他的 Broker
关键词不能为空

经济新闻_金融新闻_财经要闻_理财投资_理财保险_百色金融新闻网