消息队列--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,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...
随机推荐
- 阿里云服务器安装mongodb并且启动
// 1.下载 我是直接在local里面创一个mongodb文件夹进行下载和解压 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_ ...
- MySQL 复制表(表结构、表结构和数据)
MySQL 中使用 命令行 复制表结构及数据的方法主要有以下几种: 1.只复制表结构 CREATE TABLE new_table SELECT * FROM old_table WHERE 1=2: ...
- Vue3实战系列:结合 Ant-Design-of-Vue 实践 Composition API
Vue 3 出来之后,很多人有如下想法,"又要学新东西啦"."我学不动了"等等. 但是事物总有它的两面性,前端知识更新的很快,利好勤奋好学的同学.计算机行业的迭 ...
- OpenCV Java Tutorials- Camera Calibration
2020-10-10原文地址:https://opencv-java-tutorials.readthedocs.io/en/latest/09-camera-calibration.html#id1 ...
- 利用Turtle绘制各种图形
首先引入函数库: 第一种: import turtle import turtle as t 第二种: from turtle import * 1:使用 turtle 库的 turtle.fd() ...
- 【转】了解nodejs、javascript间的关系!bom&dom&ecmascript
地址:https://www.cnblogs.com/JetpropelledSnake/p/9450810.html bom&dom:https://www.cnblogs.com/wang ...
- MySQL死锁系列-线上死锁问题排查思路
前言 MySQL 死锁异常是我们经常会遇到的线上异常类别,一旦线上业务日间复杂,各种业务操作之间往往会产生锁冲突,有些会导致死锁异常.这种死锁异常一般要在特定时间特定数据和特定业务操作才会复现,并且分 ...
- postgresql使用规范解读
表设计规范1.建议能使用小字节数类型,就不要用大字节数类型2.建议能用varchar(N).text就不用char(N):3.建议使用default NULL,而不用default '':4.建议使用 ...
- Learning Attention-based Embeddings for Relation Prediction in Knowledge Graphs
这篇论文试图将GAT应用于KG任务中,但是问题是知识图谱中实体与实体之间关系并不相同,因此结构信息不再是简单的节点与节点之间的相邻关系.这里进行了一些小的trick进行改进,即在将实体特征拼接在一起的 ...
- 原生JS实现动态折线图
原生JS实现动态折线图 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...