消息队列--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,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...
随机推荐
- python 中的三种等待方式
为什么要用等待时间: 今天在写App的自动化的脚本时发现一个元素,但是往往执行脚本是报错( An element could not be located on the page using the ...
- 最全vue的vue-amap使用高德地图插件画多边形范围
一.在vue-cli的框架下的main.js(或者main.ts)中引入高德插件,代码如下: import Vue from 'vue' import VueAMap from 'vue-amap' ...
- xxe 新手学习记录
在做某题时遇到了xxe漏洞,学习+记录 这里因为环境暂时关了,现在复现不了,所以在网络上又找到了一些xxe题目环境 这里有 PikaChu靶场里的xxe环境,这个环境可以在BUUCTF里开,但是这里我 ...
- 实验二 HTML中图片和超链接的应用
实验二 HTML中图片和超链接的应用 [实验目的] 1.通过本例要求掌握常见的图像格式及图像的插入方法. 2.能够修改图像属性,利用外部图像处理软件编辑图像. 3.掌握设置各类超级连接的方法. 4.灵 ...
- docker registry 记录
部署 运行下面命令获取registry镜像 docker pull registry 下载到的版本默认为 docker.io/registry latest 将registry镜像运行并生成一个容器 ...
- linux安装jdk-centos7系统:
1 官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- Vue企业级优雅实战05-框架开发01-登录界面
预览本文的实现效果: # gitee git clone git@gitee.com:cloudyly/dscloudy-admin-single.git # github git clone git ...
- 【应用服务 App Service】App Service 中部署Java应用中文乱码现象
问题情形 有时候部署在 Azure App Service的 Java应用会出现乱码 详细日志 无 问题原因 因为 App Service默认的编码为gbk,所以在显示页面或传递中文字符时就会出现乱 ...
- 设备屏幕与Size Class对应
- (静默安装)Cent OS 6_5(x86_64)下安装Oracle 11g
Cent OS 6_5(x86_64)下安装Oracle 11g 1 硬件要求 1.1 内存 & swap 物理内存不少于1G 硬盘可以空间不少于5G swap分区空间不少于2G Mini ...