一、高可用集群

从ActiveMQ5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的Master-Slave实现方式,其他两种方式目录共享和数据库共享方式依然存在.

1、文件共享(KahaDB)

  1. <persistenceAdapter>
  2. <kahaDB directory="${activemq.data}/kahadb"/>
  3. </persistenceAdapter>

2、数据库共享

  1. <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  2. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  3. <property name="url" value="jdbc:mysql://localhost:3306/smq?relaxAutoCommit=true"/>
  4. <property name="username" value="root"/>
  5. <property name="password" value="root"/>
  6. <property name="maxActive" value="20"/>
  7. <property name="poolPreparedStatements" value="true"/>
  8. </bean>
  9. <persistenceAdapter>
  10. <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds" createTablesOnStartup="false"/>
  11. </persistenceAdapter>

3、复制的LevelDB

LevelDB是Google开发的用于持久化数据的高性能类库,LevelDB并不是一种服务,需要用户自己实现,能处理十亿级别规模的Key-Value型数据,占用内存小.

  1. <persistenceAdapter>
  2. <replicatedLevelDB
  3. directory="${activemq.data}/leveldb"
  4. replicas="3"
  5. bind="tcp://0.0.0.0:62621"
  6. zkAddress="192.168.1.81:2181,192.168.1.82:2182,192.168.1.83:2183"
  7. hostname="edu-zk-01"
  8. zkPath="/activemq1/leveldb-stores" />
  9. </persistenceAdapter>
  10. --SSDB(基于LevelDB)

高可用的原理:使用ZooKeeper(集群)注册所有的ActiveMQ Broker.只有其中的一个Broker可以提供服务,被视为Master,其他的Broker处于待机状态,被视为Slave.如果Master因故障不能提供服务,ZooKeeper会从Slave中选举出一个Broker充当Master

二、ActiveMQ集群部署规划

ZooKeeper集群环境:192.168.1.81:2181,192.168.1.82:2182,192.168.1.83:2183
ActiveMQ需要划分的端口:
      mq集群通讯端口(bind="tcp://0.0.0.0:62621" ActiveMQ相互之间通许,数据同步...)
      mq集群消息端口(conf/activeMq.xml 客户端监听端口)
      mq管理控制台监听端口(conf/jetty.xml)
一个高可用集群中每个ActiveMQ的BrokerName必须相同,否则不能加入集群

  1. <broker xmlns="http://activemq.apache.org/schema/core" brokerName="DobboEdu" dataDirectory="${activemq.data}">

三、客户端broker采用失败重连机制

  1. mq.brokerURL=failover:(tcp://192.168.1.81:51611,tcp://192.168.1.82:51611,tcp://192.168.1.83:51611)?randomize=false&initialReconnectDelay=1000&maxReconnectDelay=30000

当一个ActiveMQ节点挂掉,ActiveMQ服务一样正常使用,如果仅剩一个ActiveMQ节点,因为不能选举Master,ActiveMQ不能正常运转;如贵ZooKeeper集群出了问题,需要对
ActiveMQ重新启动一次.
replicatedLevelDB不支持延迟或者计划任务消息.这些消息存储在另外的LevelDB文件中,如果使用延迟或者计划任务消息,将不会复制到slave Broker上,不能实现消息的高可用.

四、负载均衡集群

1.集群一链接集群二

集群一中所有ActiveMQ配置如下:加在persistenceAdapter适配器节点前,networkConnector uri 为集群二的消息端口,这里采用失败重连机制

  1. <networkConnectors>
  2. <networkConnector uri="static:{tcp://192.168.1.101:53531,tcp://192.168.1.101:53532,tcp://192.168.1.101:t3533}" duplex="false"/>
  3. </networkConnectors>

2.集群二链接集群一

集群二中所有ActiveMQ配置如下:加在persistenceAdapter适配器节点前,networkConnector uri 为集群一的消息端口,这里采用失败重连机制

    1. <networkConnectors>
    2. <networkConnector uri="static:{tcp://192.168.1.101:53511,tcp://192.168.1.101:53512,tcp://192.168.1.101:t3513}" duplex="false"/>
    3. </networkConnectors>

JMS之——ActiveMQ高可用+负载均衡集群的更多相关文章

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

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

  2. LVS+Keepalived搭建MyCAT高可用负载均衡集群

    LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...

  3. 测试LVS+Keepalived高可用负载均衡集群

    测试LVS+Keepalived高可用负载均衡集群 1. 启动LVS高可用集群服务 此时查看Keepalived服务的系统日志信息如下: [root@localhost ~]# tail -f /va ...

  4. Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

    配置环境说明: KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G  系统盘20G cpu 4核 Haproxy keepalived 2台 192.168.1.10 192 ...

  5. Keepalived+Nginx实现高可用负载均衡集群

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+nginx双主高可用负载均衡集群及LAMP应用keepalived-1 ...

  6. Keepalived+LVS(dr)高可用负载均衡集群的实现

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2 ...

  7. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

  8. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  9. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

随机推荐

  1. LR脚本用户自定义C语言函数

    LR脚本实战:用户自定义C语言函数 Loadrunner可以使用标准C语言的函数,因此我们可以在脚本中编写自己的函数用于调用,把脚本结构化,更好的进行重用. 先看一个例子: Action() { in ...

  2. Java基础:类加载机制

    之前的<java基础:内存模型>当中,我们大体了解了在java当中,不同类型的信息,都存放于java当中哪个部位当中,那么有了对于堆.栈.方法区.的基本理解以后,今天我们来好好剖析一下,j ...

  3. Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程

     Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程 一.准备工具: QT-SDK for Windows:http://get.qt.nokia.com/qtsdk/qt-sd ...

  4. nigin配置安全:三个案例看Nginx配置安全(转)

    转:https://www.leavesongs.com/PENETRATION/nginx-insecure-configuration.html 三个案例看Nginx配置安全 PHITHON  之 ...

  5. python初步入门

    下载并安装python后,将安装路径加到path环境变量中,即可在命令行窗口使用 help(obj)  --查看帮助 import 文件名   --导入一个文件 from  文件名 import 方法 ...

  6. uva 10648(简单dp)

    Recently one of my friend Tarik became a member of the food committee of an ACM regional competition ...

  7. python 日历(Calendar)模块

    另附一篇文章:http://www.jb51.net/article/77971.htm 序号 函数及描述 1. calendar.calendar(year,w=2,l=1,c=6) 返回一个多行字 ...

  8. 【动态规划】CDOJ1692 这是一道比CCCC简单题更有想象力的中档题

    f(i,j)表示打了i行出现j个bug的方案数. 还是跟背包有点像嘛. #include<cstdio> using namespace std; int n,m,b,mod,a[510] ...

  9. 【动态规划】mr359-最大公约数之和

    [题目大意] 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. 输入一个正整数S. 输出最大的约数之和. 样例输入 Sample Input 11 样例输出 Sample ...

  10. python基础之数据类型,交互,格式化输出,基本运算符

    数据类型 1.什么是数据类型? 变量值才是我们存的数据,所以数据类型指的是变量值的种类 2.为何数据要分类? 变量值是用来保存现实世界中的状态的,那么针对不同的状态,就应该用不同类型的数据去表示 3. ...