ActiveMQ高可用集群的搭建
1 ActiveMQ集群的由来
2 ActiveMQ集群的主要部署方式 2.1 默认的单机部署(kahadb)
<kahaDB directory="${activemq.data}/kahadb"/>
2.2 基于共享数据库的主从(Shared JDBC Master/Slave)
<property name="driverClassName"value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/amq?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="maxActive" value="20"/>
<property name="poolPreparedStatements"value="true"/>
<jdbcPersistenceAdapter dataDirectory="${activemq.data}"dataSource="#mysql-ds"
createTablesOnStartup="false"/>
2.3 基于zookeeper以及可复制的 LevelDB实现
LevelDB 是 Google 开发的一套用于持久化数据的高性能类库。 LevelDB 并不是一种服务,用户需要自行实现 Server。 是单进程的服务,能够处理十亿级别规模 Key-Value 型数据,占用内存小。
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:62621"
zkAddress="localhost:2181,localhost:2182,localhost:2183"
hostname="localhost"
zkPath="/activemq/leveldb-stores"
/>
3 ActiveMQ高可用原理
1 基于zookeeper以及leveldb实现高可用ActiveMQ集群
1.1 ActiveMQ集群部署规划
版本: ActiveMQ 5.11.1
主机
|
集群间通信端口
|
消息端口
|
管控台端口
|
其他端口
|
安装目录
|
192.168.221.136
|
62621
|
11616
|
8161
|
以1开始即可
|
/usr/local/src/activemq-cluster
|
192.168.221.136
|
62622
|
21616
|
8162
|
以2开始即可
|
|
192.168.221.136
|
62623
|
31616
|
8163
|
以3开始即可
|
1.2 搭建ActiveMQ步骤 1.2.1 准备环境
1.2.2 修改管理控制台端口可在 conf/jetty.xml 中修改
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<property name="host" value="0.0.0.0"/>
<property name="port" value="8161"/>
</bean>
|
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<property name="host" value="0.0.0.0"/>
<property name="port" value="8162"/>
</bean>
|
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<property name="host" value="0.0.0.0"/>
<property name="port" value="8163"/>
</bean>
|
1.2.3 配置持久化适配器
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-cluster" dataDirectory="${activemq.data}">
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://192.168.221.136:62621"
zkAddress="192.168.80.129:2182,192.168.80.129:2183,192.168.80.129:2184"
hostname="192.168.80.129"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
</broker>
|
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-cluster" dataDirectory="${activemq.data}">
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://192.168.221.136:62622"
zkAddress="192.168.221.145:2181,192.168.221.145:2182,192.168.221.145:2183"
hostname="192.168.221.136"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
</broker>
|
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-cluster" dataDirectory="${activemq.data}">
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://192.168.221.136:62623"
zkAddress="192.168.221.145:2181,192.168.221.145:2182,192.168.221.145:2183"
hostname="192.168.221.136"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
</broker>
|
1.2.4 修改消息服务端口
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:11616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:1672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:11613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:11614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
|
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:21616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:2672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:21613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:2883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:21614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
|
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:31616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:3672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:31613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:3883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:31614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
|
1.2.5 启动3个ActiveMQ集群节点
/usr/local/src/activemq-cluster/apache-activemq-01/bin/activemq start
/usr/local/src/activemq-cluster/apache-activemq-02/bin/activemq start
/usr/local/src/activemq-cluster/apache-activemq-03/bin/activemq start
监听日志
tail -f /usr/local/src/activemq-cluster/apache-activemq-01/data/activemq.log
tail -f /usr/local/src/activemq-cluster/apache-activemq-02/data/activemq.log
tail -f /usr/local/src/activemq-cluster/apache-activemq-03/data/activemq.log
|
1.2.6 集群的节点状态分析
1.1.1 集群测试
1.1.2 客户端连接url配置优化
1.1.3 集群测试结果说明
ActiveMQ高可用集群的搭建相关推荐
- Kubernetes1.24版本高可用集群环境搭建(二进制方式)
背景: 虽然kubeadm方式安装集群更加简单些,配置相对比较少,但是生产环境还是建议二进制的方式安装,因为二进制的方式kubernetes的kube-apiserver.kube-controlle ...
- Hadoop的HA机制原理解析,与HA高可用集群环境搭建
2019独角兽企业重金招聘Python工程师标准>>> Hadoop的HA工作机制示意图 下面我们开始搭建这一套高可用集群环境 hadoop2.0已经发布了稳定版本了,增加了很多特性 ...
- ElasticSearch高可用集群环境搭建和分片原理
1.ES是如何实现分布式高并发全文检索 2.简单介绍ES分片Shards分片技术 3.为什么ES主分片对应的备分片不在同一台节点存放 4.索引的主分片定义好后为什么不能做修改 5.ES如何实现高可用容 ...
- k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...
- k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...
- conga下HA高可用集群的搭建(redhat6.5)
实验环境 redhat6.5虚拟机三台,各1G内存,时间同步 server1 172.25.44.1 server2 172.25.44.2 server3 172.25.44.3 火墙和sel ...
- Kubernetes实战:高可用集群的搭建和部署
摘要:官方只提到了一句"使用负载均衡器将 apiserver 暴露给工作节点",而这恰恰是部署过程中需要解决的重点问题. 本文分享自华为云社区<Kubernetes 高可用集 ...
- haproxy 基本搭建 + 高可用集群的搭建
1.首先对haproxy的源码包进行编译,获得haproxy的方式有多种:直接下在rpm,官网的源码包在本次的实验中使用的是haproxy-1.6.11.tar.gz haproxy被内置到红帽中 在 ...
- consul注册中心高可用集群的搭建经验
consul简介 Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性: 1.服务发现: Consul的客户端可用提供一个服务,比如 api 或者 ...
- 基于zookeeper(集群)+LevelDB的ActiveMq高可用集群安装、配置、测试
Linux 环境 zookeeper集群安装.配置.测试https://blog.csdn.net/weixin_40816738/article/details/100576259 MQ集群部署规划 ...
最新文章
- 创建一个显示所有预定义WPF颜色的ListBox
- Javascript 实现TreeView
- 用友3.0谋局“新两化” 融合创新迸发新动能
- 一些Python情结
- 新建/克隆虚拟机(配置)
- 教你一个快速视频处理的神器:Python moviepy
- c语言 静态链表插入排序,数据结构 - 表插入排序 具体解释 及 代码(C++)
- MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁
- vba html 教程 pdf,Word VBA教程:CanvasShapes集合
- 利用imnoise2函数产生数据的直方图
- 【改进灰狼优化算法】贪婪的非分层灰狼优化算法(Matlab代码实现)
- 经典策略之Dual Trust策略
- sklearn:make_blobs聚类数据生成器
- Hi3512的IPCAM开发
- 本地事务与分布式事务
- Error: Corrupted zip: missing XXX bytes.
- 自定义Navigator切换fragment
- 【一】1D测量 Measuring——translate_measure()算子
- 逃离天坑之后——谈谈技术路线该怎么走
- java将map转json字符串
热门文章
- html5 模板 知乎,Discuz贴吧知乎超级v2ex UTF(x520_v2ex)_Discuz模板_Discuz应用中心
- 主板风扇转不开机是什么问题_cpu风扇转主板不启动怎么办
- html插入mkv,mkv导入到PR中该怎么做?
- 【转载】django-数据库[ 配置 ]
- 我看韩寒-话题2010读后
- 在pc计算机vga是什么意思,电脑上的VGA线是什么样的?图片
- HDLBits练习——Exams/ece241 2013 q7
- 线下化妆品零售店如何做私域获客?
- 淘宝app搜索排名优化技巧
- 后盾网-CI框架实例教程-马振宇 - 学习笔记(1~2)