ActiveMQ 高可用集群安装、配置(伪集群) (ZooKeeper + LevelDB)

Origin科研绘图——桑基图 是一种用于展示“流动”(flow)关系的可视化图表,常用于呈现能量流、物质流、资金流、信息流等在不同节点之间的传递和分配情况。它最大的特点是用“宽度可变的流线”来直观表示数量大小——流线越宽,代表流量越大,因此特别适合理解复杂系统中资源从哪里来、到哪里去、以及不同路径所占比例。为该流程对应的数量。只需将各个流程逐项填写在 A、B、C 三列即可,流程的排列顺序并非关键,确保起点、终点及对应数值准确才是最重要的。与柱状图、饼图不同,桑基图不仅展示“多少”,还展示“从哪到哪”。至此,本期教程就结束啦。 阅读详情
1、ActiveMQ 集群部署规划:
环境:CentOS 6.6 x64 、 JDK7 
版本:ActiveMQ 5.11.1
ZooKeeper 集群环境:192.168.1.81:2181,192.168.1.82:2182,192.168.1.83:2183
(ZooKeeper 集群部署请参考 《高可用架构篇--第 01 节--ZooKeeper 集群的安装、配置、高可用测试》 )
主机  集群端口  消息端口  管控台端口  节点安装目录
192.168.1.101  63631  53531  8361  /home/llw/activemq/node-01
192.168.1.101  63632  53532  8362  /home/llw/activemq/node-02
192.168.1.101  63633  53533  8363  /home/llw/activemq/node-03
2、防火墙打开对应的端口
## mq cluster
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8361 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8362 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8363 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53531 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53532 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53533 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 63631 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 63632 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 63633 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 63631 -j ACCEPT
3、分别在三台主机中创建/home/llw/activemq 目录
$ mkdir /home/llw/activemq
上传 apache-activemq-5.11.1-bin.tar.gz 到/home/llw/activemq 目录
4、解压并按节点命名
$ cd /home/wusc/activemq
$ tar -xvf apache-activemq-5.11.1-bin.tar.gz
$ mv apache-activemq-5.11.1 node-0X  #(X 代表节点号 1、2、3,下同)
5、修改管理控制台端口(默认为 8161)可在 conf/jetty.xml 中修改,如下:
Node-01 管控台端口:
<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="8361"/>
</bean>
Node-02 管控台端口:
<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="8362"/>
</bean>
Node-03 管控台端口:
<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="8363"/>
</bean>
6、集群配置:
在 3 个 ActiveMQ 节点中配置 conf/activemq.xml 中的持久化适配器。修改其中 bind、zkAddress、
hostname 和 zkPath。注意:每个 ActiveMQ 的 BrokerName 必须相同,否则不能加入集群。
Node-01 中的持久化配置:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="DubboEdu2" dataDirectory="${activemq.data}">
<persistenceAdapter>
<!-- kahaDB directory="${activemq.data}/kahadb"/ -->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:63631"
zkAddress="192.168.1.81:2181,192.168.1.82:2182,192.168.1.83:2183"
hostname="mq-01"
zkPath="/activemq2/leveldb-stores"
/>
</persistenceAdapter>
</broker>
Node-02 中的持久化配置:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="DubboEdu2" dataDirectory="${activemq.data}">
<persistenceAdapter>
<!-- kahaDB directory="${activemq.data}/kahadb"/ -->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:63632"
zkAddress="192.168.1.81:2181,192.168.1.82:2182,192.168.1.83:2183"
hostname="mq-01"
zkPath="/activemq2/leveldb-stores"
/>
</persistenceAdapter>
</broker>
Node-03 中的持久化配置:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="DubboEdu2" dataDirectory="${activemq.data}"> 
<persistenceAdapter>
<!-- kahaDB directory="${activemq.data}/kahadb"/ -->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:63633"
zkAddress="192.168.1.81:2181,192.168.1.82:2182,192.168.1.83:2183"
hostname="mq-01"
zkPath="/activemq2/leveldb-stores"
/>
</persistenceAdapter>
</broker>
修改各节点的消息端口(注意,避免端口冲突) :
Node-01 中的消息端口配置:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:53531?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
Node-02 中的消息端口配置:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:53532?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
Node-03 中的消息端口配置:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:53533?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
7、按顺序启动 3 个 ActiveMQ 节点:
$ /home/llw/activemq/node-01/bin/activemq start 
$ /home/llw/activemq/node-02/bin/activemq start
$ /home/llw/activemq/node-03/bin/activemq start
8、集群的节点状态分析:
集群启动后对 ZooKeeper 数据的抓图,可以看到 ActiveMQ 的有 3 个节点,分别是 00000000000,
00000000001,00000000002。
以下第一张图展现了 00000000000 的值,可以看到 elected 的值是不为空,说明这个节点是 Master,
其他两个节点是 Slave。
9、集群可用性测试
ActiveMQ 的客户端只能访问 Master 的 Broker,其他处于 Slave 的 Broker 不能访问。所以客户端连
接 Broker 应该使用 failover 协议。
failover:(tcp://192.168.1.101:53531,tcp://192.168.1.101:53532,tcp://192.168.1.101:53533)?ran
domize=false
10、集群高可用测试:
当一个 ActiveMQ 节点挂掉,或者一个 ZooKeeper 节点挂掉,ActiveMQ 服务依然正常运转。如果仅剩
一个 ActiveMQ 节点,因为不能选举 Master,ActiveMQ 不能正常运转;同样的,如果 ZooKeeper 仅剩一个
节点活动,不管 ActiveMQ 各节点是否存活,ActiveMQ 也不能正常提供服务。
11、设置开机启动:
# vi /etc/rc.local
su - llw-c '/home/llw/activemq/node-01/bin/activemq start'
su - llw-c '/home/llw/activemq/node-02/bin/activemq start'
su - llw -c '/home/llw/activemq/node-03/bin/activemq start'
【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part6基于图谱的问答实现 前序文章:本部分则是整个项目的核心内容——基于图谱的问答。需要实现的是对于“简单问题”进行解析,然后从图谱数据库中查询与该人员及其相关人员信息,返回到前端并显示该人员的基本信息。除此之外,用户可以点击返回的结果人员节点,页面能够显示该用户的个人基本信息。那么现在就开始吧。根据源码实现问答形式,其实是比较简单的。原代码中使用ltp对问题进行分词,选取具有名次词性的关键词进行处理。 ltp配置稍许麻烦,我使用jieba分词工具对问题进行分词,然后再按照原文提取问句中人物及关系,然后构建cypher neo4j查 阅读详情

相关推荐

ActiveMQ+zookeeper实现高可用和负载均衡(代码和测试)

ActiveMQ+zookeeper实现高可用和负载均衡(代码和测试)

activemq集群 java_ActiveMQ+ZooKeeper 伪集群整合

前言本案例使用的是伪集群方式,即在一台主机上部署3个activemq服务(端口不同)+3个zookeeper服务(端口不同)。真集群部署请看:ActiveMQ+ZooKeeper集群整合如果需要了解ActiveMQ集群部署的整体概念,可以参考我这篇文章:ActiveMQ集群整体认识原理简介:一般在部署ActiveMQ集群的时候,更倾向于使用基于ZooKeeper的Replicated LevelD...

weixin_42512509的博客 188

CH341T模块资料_V2.10_CH341TC#_CH341_

CH341T i2c控制 c语言 设计模板以及示例

ActiveMQ()_伪集群和主从高可用使用

  一、本文目的         介绍如何在同一台虚拟机上搭建高可用Activemq服务,集群数量包含3个Activemq,当Activemq可用数&gt;=2时,整个集群可用。         本文Activemq集群数量为3个,分别命名为mq1,mq2,mq3   二、概念介绍 1、伪集群       集群搭建在同一台虚拟机上,3个Activemq分别使用不同的端口提供服务,...

weixin_34405925的博客 319

ActiveMQ伪集群部署

本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一、本文目的         介绍如何在同一台虚拟机上搭建高可用Activemq服务,集群数量包含3个Activemq,当Activemq可用数&gt;=2时,整个集群可用。         本文Activemq的集...

weixin_33924312的博客 249

ActiveMQ集群搭建

基于可复制的LevelDB存储方式的集群 这种集群方式是ActiveMQ5.9版本以后新增的特性,它使用ZooKeeper从一组broker中协调选择一个broker作为master主,其他broker作为slave从的模式。所有slave从节点通过复制master主节点的消息来实现消息同步,当主出现故障后,没有被消费的消息在从服务器上也同步了一份,所以不会有消息的丢失。 LevelDB 是 Google开发的一套用于持久化数据的高性能kv数据库,ActiveMQ利用该数据库进行数据的存储。 只有ma

qq_39708879的博客 437

activemq broker集群_四、ActiveMQ Zookeeper集群

一、概要在5.9版本以后推出了levelDB的持久化引擎。本节构建基于zookeeper和replicated-leveldb-store的主从集群,实现MQ的高可用。使用zookeeper集群注册所有的ActiveMQ Broker,其中一个Broker为Master,其余为slave.如果Master挂了,Zookeeper会从Slave中选举一个Broker充当Master.Sla...

weixin_29081101的博客 193

腾讯云~基于zookeeper(集群)+LevelDBActiveMq高可用伪集群安装配置、测试

腾讯云~基于zookeeper(集群)+LevelDBActiveMq高可用伪集群安装配置、测试

Gblfy_Blog 1050

JMS之——ActiveMQ高可用集群安装配置(基于ZooKeeper + LevelDB伪集群)

ActiveMQ的单节点安装请参见博文《JMS之——ActiveMQ安装配置(单机版) 》 1、 ActiveMQ 集群部署规划 环境: CentOS 6.5 x64 、 JDK7 版本: ActiveMQ 5.14.4 ZooKeeper 集群环境: 192.168.50.132:2181,192.168.50.133:2182,192.168.50.134:2183 (Z

冰河的专栏 2609

基于zookeeper(集群)+LevelDBActiveMq高可用集群安装配置、测试

架构说明: Dubbo 建议使用 Zookeeper 作为服务的注册中心。Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性, 要将 ZK 集群的节点数量要为奇数(2n+1: 如 3、 5、 7 个节点)较为合适 ZK集群部署规划: 环境 版本详细 zookeeper版本 zookeeper-3.4.12 Centos版本...

Gblfy_Blog 620

Zookeeper+ActiveMQ搭建集群实现高可用

四、测试使用ZooInspector工具来查看具体的内容,可以参考Zookeeper 数据查看工具 ZooInspector 的使用 - 变体精灵 - 博客园这篇博客来了解关于ZooInspector的使用通过查看Zookeeper的节点信息情况,可以得出192.168.184.127被选举成了主机,那么使用该主机去登录ActiveMQ的客户端,可以登录成功。.........

小渣渣 1429

利用zookeeper集群进行activemq集群搭建(持久化机制为Replicated LevelDB Store)

一、前言   Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件。在ActiveMQ 5.9中,引入了复制LevelDB存储。它处理使用Apache ZooKeeper从一组配置为复制单个LevelDB存储的代理节点中选择一个主服务器。然后将所有从属LevelDB存储与主数据库同步,通过将所有更新复制到主数据库,从而使它们保持最新状态。这可能会成为首选的主从配置。 ...

killerofjava的博客 382

ActiveMQ集群配置

使用ZooKeeper实现的MasterSlave实现方式, 是对ActiveMQ进行高可用的一种有效的解决方案, 高可用的原理:使用ZooKeeper集群)注册所有的ActiveMQBroker。只有其中的一个Broker可以对外提供服务(也就是Master节点) ,其他的Broker处于待机状态,被视为Slave。如果Master因故障而不能提供服务,则利用ZooKeeper的内部选举机制会...

weifengming 935

ActiveMQ+ZooKeeper搭建高可用集群

一、说明   实际的应用中,一般为了应用的高可用性,都会搭建集群环境去处理。部署多台应用,这样,即使一台有问题,其他热备应用可以立马顶上,继续提供服务。   ActiveMQ集群部署,基于zookeeper的应用程序协调服务和levelDB的持久化方案。   本文中,基于一个系统环境,搭建伪集群模式,通过不同端口的配置,达到集群安装的效果。   基本环境:jdk-7u80-linux-x...

weixin_30572613的博客 229

ActiveMQ+ZooKeeper高可用集群

一 、ActiveMQ主要的几类部署方式比较 1、默认的单机部署(kahadb) 2、基于ZooKeeper的主从(levelDB Master/Slave) 3、基于共享数据库的主从(Shared JDBC Master/Slave) 二、 服务器说明 三、 数据准备 四、 activemq 配置 上传到指定位置 解压 修改brokerName的值 注释掉默认的persistenceA...

猎人在吃肉 1456

windows搭建ActiveMQ伪集群

注:本次搭建 ActiveMQ 伪集群依赖 zookeeper 集群,请先搭建zookeeper 集群 一、规划 ActiveMQ 伪集群端口 主机IP:127.0.0.1 控制台端口:8161;8162;8163 集群通信端口:5151;5152;5153 消息端口:6161;61...

chenzhuoti9155的博客 380

ActiveMQ 笔记(七)ActiveMQ的多节点集群

一、Activemq集群思想 1、使用Activemq集群的原因 面试题: 引入消息中间件后如何保证其高可用 2、集群实现思路 基于zookeeperLevelDB搭建ActiveMQ集群集群仅提供主备方式的高可用集群功能,避免单点故障。 3、集群方案(共有三种) 主要是基于zookeeper+replicated-leveldb-store的主从集群 基于shareFil...

喜欢历史的码农 3527

zookeeper+activemq高可用 基于伪集群

此篇文章是基于前面几篇文章原理图2.每个消息队列都是一个伪集群2.1伪集群配置 #参考上一篇文章2.2伪集群直接的网桥的配置 集群1链接到集群2集群1的Ip:192.168.56.18 192.168.56.19 192.168.56.20<networkConnectors> <networkConnectoruri="static:(...

weixin_34295316的博客 145

ActiveMQ单主机集群案例

前言 集群分为两种方式:1.伪集群集群节点都搭在一台机器上2.真集群集群节点分布在多台机器上更多详细:真集群伪集群的区别 该教程使用的是伪集群,由于在一个主机上实现ActiveMQ集群,这里直接使用了Shared File System Master Slave模式(共享文件系统)。没有结合ZooKeeper。 该教程是使用3个A...

weixin_33912638的博客 403

ActiveMQ 集群搭建高可用方案设计(二)

Master-Slave 架构、Broker 网络集群配置、负载均衡与故障转移机制。

1347
上一篇: ActiveMQ 高可用集群安装、配置、高可用测试 (ZooKeeper + LevelDB)
下一篇: ActiveMQ 高可用+负载均衡集群的安装、配置、高可用测试 ZooKeeper + LevelDB + Static discovery
Adelly
博客等级 码龄10年 61粉丝 32原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值