消息队列--ActiveMQ集群部署
一、activeMQ主要的部署方式?
1,默认的单机部署(kahadb)
activeMQ默认的存储单机模式,如果配置文件不做修改,则默认使用此模式。以本地的kahadb文件的方式进行存储,性能完全依赖本地磁盘,不能提供高可用。
2,基于zookeeper主从模式(levelDB Master/Slave)
基于zookeeper来选举一个master,其他节点作为slave实时同步消息,levelDB会优先采用内存存储消息,异步同步到磁盘。该方式读写性能都较好,写性能能媲美非持久化消息。
优点:实现高可用和数据安全,性能较好。
缺点:由于zookeeper的选举机制,必须要使用2n+1(n>=1)的节点,才能实现高可用。
3,基于共享数据库的主从模式(Shared JDBC Master/Slave)
可以基于常用的mysql,mariadb,oracle等数据库。
每个节点启动都会争抢数据库锁,从而保证master的唯一性,其他节点作为备份,一直等待数据库锁的释放。
因为所有消息读写,其实都是数据库操作,activeMQ节点本身压力很小,性能完全取决于数据库性能。
优点:实现高可用和数据安全,一般两个节点就可以实现高可用。
缺点:性能和稳定性都依赖于数据库。
二、基于zookeeper的activeMQ单台服务器集群部署
1,环境需求
Centos7系统,java环境(jdk),zookeeper安装包,activeMQ安装包
2,部署jdk环境
jdk安装包下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

上面这个是最新版的,我使用的是jdk-8u121-linux-x64.tar.gz。
2.1 上传压缩包到服务器,在当前有压缩包的目录下进行操作。
2.2 创建文件夹
mkdir /application
2.3 解压压缩包(根据你自己的包名进行修改)
tar xf jdk-8u121-linux-x64.tar.gz -C /application/
2.4 创建软链接(根据你自己的包名进行修改)
ln -s /application/jdk1.8.0_121/ /application/jdk
2.5 配置环境变量
vim /etc/profile
在最后面添加这么几行:
export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
2.6 使环境变量生效
source /etc/profile
2.7 查看jdk配置情况
命令行输入 java -version 显示:

则配置成功。
3,安装zookeeper单机集群
3.1 获取zookeeper安装包
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
3.2 安装配置(配置3个)
3.2.1 生成3个文件
tar xf zookeeper-3.4.14.tar.gz -C /usr/local/zookeeper1
tar xf zookeeper-3.4.14.tar.gz -C /usr/local/zookeeper2
tar xf zookeeper-3.4.14.tar.gz -C /usr/local/zookeeper3
3.2.2 修改 zookeeper1 的配置文件(我的内网地址是172.16.1.8)
cd /usr/local/zookeeper1/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
将文件里面的内容清空,后加入以下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper1/data 文件存放位置
clientPort=2181 端口
server.1=172.16.1.8:2881:3881 第一个节点IP和端口(使用内网)
server.2=172.16.1.8:2882:3882 第二个节点IP和端口
server.3=172.16.1.8:2883:3883 第三个节点IP和端口
3.2.3 创建 zookeeper1 的 myid 文件
cd /usr/local/zookeeper1
mkdir data
echo "1" > /usr/local/zookeeper1/data/myid
3.2.4 修改 zookeeper2 的配置文件
cd /usr/local/zookeeper2/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
将文件里面的内容清空,后加入以下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper2/data 文件存放位置
clientPort=2182 端口
server.1=172.16.1.8:2881:3881 第一个节点IP和端口(使用内网)
server.2=172.16.1.8:2882:3882 第二个节点IP和端口
server.3=172.16.1.8:2883:3883 第三个节点IP和端口
3.2.5 创建 zookeeper1 的 myid 文件
cd /usr/local/zookeeper2
mkdir data
echo "2" > /usr/local/zookeeper2/data/myid
3.2.6 修改 zookeeper3 的配置文件
cd /usr/local/zookeeper3/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
将文件里面的内容清空,后加入以下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper3/data 文件存放位置
clientPort=2183 端口
server.1=172.16.1.8:2881:3881 第一个节点IP和端口(使用内网)
server.2=172.16.1.8:2882:3882 第二个节点IP和端口
server.3=172.16.1.8:2883:3883 第三个节点IP和端口
3.2.7 创建 zookeeper1 的 myid 文件
cd /usr/local/zookeeper3
mkdir data
echo "3" > /usr/local/zookeeper3/data/myid
3.2.8 启动zookeeper集群
/usr/local/zookeeper1/bin/zkServer.sh start
/usr/local/zookeeper2/bin/zkServer.sh start
/usr/local/zookeeper3/bin/zkServer.sh start
3.2.9 查看zookeeper集群状态
/usr/local/zookeeper1/bin/zkServer.sh status


其中,follower是跟随者,leader为领导者。
4,部署单台服务器activeMQ集群
4.1 下载activeMQ安装包
下载地址为:http://mirror.bit.edu.cn/apache//activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz
4.2 创建3个文件目录(3个)
tar xf apache-activemq-5.15.9-bin.tar.gz
cp -r apache-activemq-5.15.9 /application/activemq1
cp -r apache-activemq-5.15.9 /application/activemq2
cp -r apache-activemq-5.15.9 /application/activemq3
4.3 分别修改 activemq1、activemq2、activemq3的配置文件
4.3.1 修改 activemq1、activemq2、activemq3的 jetty.xml 文件
vim /application/activemq1/conf/jetty.xml

vim /application/activemq2/conf/jetty.xml

vim /application/activemq3/conf/jetty.xml

4.3.2 修改 activemq1、activemq2、activemq3的 activemq.xml 文件
vim /application/activemq1/conf/activemq.xml
将 <persistenceAdapter> 文件的内容修改成以下内容:

将 <transportConnectors> 文件中的url修改,如果一样则无需修改

3个配置文件中的brokeName一定要一致(3个文件都要修改)

vim /application/activemq2/conf/activemq.xml
将 <persistenceAdapter> 文件的内容修改成以下内容:

将 <transportConnectors> 文件中的url修改,如果一样则无需修改

vim /application/activemq3/conf/activemq.xml
将 <persistenceAdapter> 文件的内容修改成以下内容:

将 <transportConnectors> 文件中的url修改,如果一样则无需修改

4.3.3 启动集群(那个先启动,就是Master)
/application/activemq1/bin/activemq start
/application/activemq2/bin/activemq start
/application/activemq3/bin/activemq start
4.3.4 查看启动日志
tail -fn 100 /application/activemq1/data/activemq.log
master启动:

slave启动:

登录服务器验证:
输入公网ip,加master端口访问:

消息队列--ActiveMQ集群部署的更多相关文章
- 13张PPT带你了解主动式消息队列处理集群
前言 偷偷和你们说,我搞了一份内部资料,该内部资料共有13张PPT,据作者透露,该PPT至少花了整整1周时间才编写完成,其内容简洁明了,内容深度足够,易于初学者理解,也给深度开发人员分享了不一样的消息 ...
- 消息队列kafka集群搭建
linux系统kafka集群搭建(3个节点192.168.204.128.192.168.204.129.192.168.204.130) 本篇文章kafka集群采用外部zookeeper,没采 ...
- ActionMQ集群部署
ActiveMQ集群部署 一.应用场景 消息中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件.目 ...
- Dubbo入门到精通学习笔记(十四):ActiveMQ集群的安装、配置、高可用测试,ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试
文章目录 ActiveMQ 高可用集群安装.配置.高可用测试( ZooKeeper + LevelDB) ActiveMQ高可用+负载均衡集群的安装.配置.高可用测试 准备 正式开始 ActiveMQ ...
- ActiveMQ集群整体认识
出自:https://segmentfault.com/a/1190000014592517 前言 最终需要掌握 Replicated LevelDB Store部署方式,这种部署方式是基于ZooKe ...
- RabbitMQ消息队列(十)-高可用集群部署实战
前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. RabbitMQ集群基本概念 Rabbit模式大概分为以下三种 ...
- (十)RabbitMQ消息队列-高可用集群部署实战
原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...
- centos6下ActiveMQ+Zookeeper消息中间件集群部署记录
由于最近一个项目并发请求压力比较大,所以考虑改进架构,引入消息中间件集群作为一个缓冲消息队列,具体需求:1)将大量的WebService请求报文发送到mq集群之中,并保持消息先后顺序2)保证每个消息的 ...
- ActiveMQ伪集群部署
本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...
随机推荐
- 几个常用markdown工具的主要优缺点
几个常用markdown工具的主要优缺点 最近对几个热门的markdown工具做了一个对比表 表格 脚注 图片和图床 平台 移动端 实时预览 收费 操作难度 导出功能 mweb 非常棒 预览正常显示 ...
- 达梦产品技术支持培训-day7-DM8数据库备份与还原-原理
(本文部分内容摘自DM产品技术支持培训文档,如需要更详细的文档,请查询官方操作手册,谢谢) 1.DM8备份还原简介 1.1.基本概念 (1)表空间与数据文件 ▷ DM8表空间类型: ▷ SYSTEM ...
- 超级简单的照片画廊MVC
下载Gallery.zip - 23.5 MB 介绍 我想在我的个人网站上添加一个简单的图片库,但找不到任何合适的方法来从文件夹而不是数据库中挑选图片.也许我应该看得更仔细些!尽管如此,下面是我实现的 ...
- CentOS 7 系统的安装
1.进入安装界面 2.选择"Install CentOS 7" 3.进入欢迎界面,默认语言为"English",点击"Continue" 进 ...
- RHSA-2018:0007-重要: 内核 安全更新(需要重启、存在EXP)
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...
- ansible-playbook简介
1. ansible-playbook简介 • Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的. • 简单来说,playbooks 是一种简单的 ...
- Python+Appium自动化测试(3)-编写自动化脚本
之前一篇博客已经讲述怎样手动使用appium-desktop启动测试机上的app,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登 ...
- Java-JDK动态代理(AOP)使用及实现原理分析
Java-JDK动态代理(AOP)使用及实现原理分析 第一章:代理的介绍 介绍:我们需要掌握的程度 动态代理(理解) 基于反射机制 掌握的程度: 1.什么是动态代理? 2.动态代理能够做什么? 后面我 ...
- 蒲公英 · JELLY技术周刊 Vol.25 · Webpack 5 正式发布,你学废了么
蒲公英 · JELLY技术周刊 Vol.25 阔别两年,Webpack 5 正式发布了,不仅清理掉很多冗余的功能,同样也为我们带来了很多新鲜的能力,不论是默认开启的持久缓存,还是反病毒保护,亦或者被其 ...
- (SpringBoot-Jpa)使用Idea数据库自动脚本Generate POJOS生成 Entity对象,
因:使用SpringBoot -jpa,需要手动配置Entity 但是如果你的表中有很多属性,或者有很多表怎么办?? 每个手动写? 还是用mybatis.写mapper??? 解决:使用idea自动工 ...