一、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集群部署的更多相关文章

  1. 13张PPT带你了解主动式消息队列处理集群

    前言 偷偷和你们说,我搞了一份内部资料,该内部资料共有13张PPT,据作者透露,该PPT至少花了整整1周时间才编写完成,其内容简洁明了,内容深度足够,易于初学者理解,也给深度开发人员分享了不一样的消息 ...

  2. 消息队列kafka集群搭建

    linux系统kafka集群搭建(3个节点192.168.204.128.192.168.204.129.192.168.204.130)    本篇文章kafka集群采用外部zookeeper,没采 ...

  3. ActionMQ集群部署

    ActiveMQ集群部署 一.应用场景 消息中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件.目 ...

  4. Dubbo入门到精通学习笔记(十四):ActiveMQ集群的安装、配置、高可用测试,ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试

    文章目录 ActiveMQ 高可用集群安装.配置.高可用测试( ZooKeeper + LevelDB) ActiveMQ高可用+负载均衡集群的安装.配置.高可用测试 准备 正式开始 ActiveMQ ...

  5. ActiveMQ集群整体认识

    出自:https://segmentfault.com/a/1190000014592517 前言 最终需要掌握 Replicated LevelDB Store部署方式,这种部署方式是基于ZooKe ...

  6. RabbitMQ消息队列(十)-高可用集群部署实战

    前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. RabbitMQ集群基本概念 Rabbit模式大概分为以下三种 ...

  7. (十)RabbitMQ消息队列-高可用集群部署实战

    原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...

  8. centos6下ActiveMQ+Zookeeper消息中间件集群部署记录

    由于最近一个项目并发请求压力比较大,所以考虑改进架构,引入消息中间件集群作为一个缓冲消息队列,具体需求:1)将大量的WebService请求报文发送到mq集群之中,并保持消息先后顺序2)保证每个消息的 ...

  9. ActiveMQ伪集群部署

    本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...

随机推荐

  1. IDEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在问题处理

    公司新项目需使用java技术栈,便使用IDEA搭建了一个多SpringBoot项目的聚合工程,因为初次使用,遇到了很多问题,maven打包时各种报错,在网上查了好多终于解决了,为巩固记忆,特作此记录. ...

  2. 使用phpword获取doc中的表格数据

    1. 首先确定使用phpword是可以读取word文档中表格里面的数据, 使用的phpword版本0.17.0 2.理解word文档内容的存储逻辑规则(这里只做简单概述) 一般做博文喜欢直接贴代码,直 ...

  3. junit调试(No tests found matching )

    使用junit调试程序时报错:initializationError(org.junit.runner.manipulation.Filter)java.lang.Exception: No test ...

  4. 实验一 HTML基本标签及文本处理

    实验一 HTML基本标签及文本处理 [实验目的] 1.掌握利用因特网进行信息游览.搜索,下载网页.图片.文字和文件: 2.对给定的网站,能指出网站的链接结构.目录结构.页面布局方式: 3.掌握HTML ...

  5. Java 10 种常用第三方服务

    严格意义上说,所有软件的第三方服务都可以自己开发,不过从零到一是需要时间和金钱成本的.就像我们研发芯片,投入了巨大的成本,但仍然没有取得理想的成绩,有些事情并不是一朝一夕,投机取巧就能完成的. Jav ...

  6. MeteoInfoLab脚本示例:SeaWiFS HDF Grid数据

    SeaWiFS HDF Grid数据读取,特别是涉及到了文件的众多属性数据的读取,数据取对数后绘图.脚本程序: #Add data file f = addfile('D:/Temp/hdf/S199 ...

  7. 浅谈MircoPython---ESP8266

    一.连接WIFI 在Putty会话窗口输入 >>>help() 打印的消息会告诉你如何连接WIFI import network sta_if = network.WLAN(netw ...

  8. 以太坊PoW

    ethash ethash(eth+hash)是以太坊设计的挖矿算法,为了实现ASIC-resistance,ethash依赖于对内存资源的访问,是一种memory-hard函数.同时为了支持轻节点对 ...

  9. spring boot:用shardingjdbc实现多数据源的分库分表(shardingsphere 4.1.1/spring boot 2.3.1)

    一,shardingjdbc的用途 1,官方站介绍: Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈, 它由 JDBC.Proxy 和 Sidecar( ...

  10. linux(centos8):jmeter5.3并发测试实例(参数在范围内随机取值)

    一,测试的url地址说明: 1,这是一个秒杀功能的url: http://127.0.0.1:8080/second/skusecond?actid=2020&skuid=cpugreen&a ...