ActiveMQ + ZooKeeper 集群高可用配置

一. 准备条件:

(1) 最好是有3台服务器【2台也行, 只是根据(replicas/2)+1 公式至少得2个ActiveMQ服务存在才能保证运行, 自己测试的时候麻烦点, 关掉其中一个, 再开启, 看会不会选举到另一个ActiveMQ服务, 多试几次可以看到效果】

(2)  ActiveMQ安装参考: ActiveMQ

(3)  ZooKeeper安装参考:ZooKeeper

二. 配置 :

ActiveMQ根目录下的conf/activemq.xml, 原来默认如下:

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

修改为(hostname根据服务器不同做出改变, 其他配置相同):

  <persistenceAdapter>

    <replicatedLevelDB

      directory="${activemq.data}/leveldb"

      replicas="3"

      bind="tcp://0.0.0.0:0"

      zkAddress="172.17.110.1:2181"

      zkPassword="password"

      hostname="172.17.110.1"

      sync="local_disk"

      zkPath="/activemq/leveldb-stores"

      />
  </persistenceAdapter>

directory : 存储数据的路径

replicas : 集群中的节点数【(replicas/2)+1公式表示集群中至少要正常运行的服务数量】, 3台集群那么允许1台宕机, 另外两台要正常运行

bind : 当这个节点成为Master, 它会绑定配置好的地址和端口来履行主从复制协议

zkAddress : ZooKeeper的ip和port, 如果是集群, 则用逗号隔开(这里作为简单示例ZooKeeper配置为单点, 这样已经适用于大多数环境了, 集群也就多几个配置)

zkPassword : 当连接到ZooKeeper服务器时用的密码

hostname : 本机ip

sync :  在认为消息被消费完成前, 同步信息所存贮的策略, 如果有多种策略用逗号隔开, ActiveMQ会选择较强的策略(local_mem, local_disk则肯定选择存贮在本地硬盘)

zkPath : ZooKeeper选举信息交换的存贮路径

三. 测试

Step1 :

根据ZooKeeper的策略, 从三台ActiveMQ服务器选一台运行, 其他两台等待运行, 只是做数据上的主从同步。

所以, 启动ZooKeeper服务器和ActiveMQ服务器后, 访问http://172.17.110.1:8161/admin/ 、 http://172.17.110.2:8161/admin/、 http://172.17.110.3:8161/admin/ 只会有一个成功。

Step2 :

关闭能访问http://ip:8161/admin/的ActiveMQ服务, 访问其他两个, 其中有一个能访问, 说明ActiveMQ + ZooKeeper 集群高可用配置已经成功。

四. 参考文档

ActiveMQ官网

ZooKeeper官网

时间: 2024-10-05 06:44:03

ActiveMQ + ZooKeeper 集群高可用配置的相关文章

eureka集群高可用配置

譬如eureka.client.register-with-eureka和fetch-registry是否要配置,配不配区别在哪里:eureka的客户端添加service-url时,是不是需要把所有的eureka的server地址都写上,还是只需要写一个server就可以了(因为server之间已经相互注册了)?如果写上了所有的server地址,那相当于将每个client服务都往所有的server都添加了一遍,那还配置server间的相互注册有什么意义? 上面的这些问题在多数讲eureka集群教

activemq+zookeeper 集群部署基于levedb

集群图 zookeeper集群,上一篇博客写了zookeeper集群的部署 Ip 服务注册端口 主机名 192.168.56.15 2181 zk01 192.168.56.16 2181 zk02 192.168.56.17 2181 zk03 activemq部署 IP 管控台端口 集群通讯端口 消息端口 192.168.56.15 8161 61621 51511 192.168.56.16 8162 61622 51512 192.168.56.17 8163 61623 51513 h

基于heartbeat v1+ldirectord实现LVS集群高可用

前言 高可用集群,High Availability Cluster,简称HA Cluster,是指以减少服务中断时间为目的的服务器集群技术.通过上文可以看出,LVS集群本身并不能实现高可用,比如Director Server不能检测Real Server的健康度,一旦其中一台或全部Real Server宕机,Director Server还会继续转发请求,导致站点无法访问,同样,如果Director Server宕机站点就更不可能正常运转了.本文将讲解如何基于heartbeat v1实现LVS

CentOS6.5安装DRBD+MariaDB+Heartbeat实现数据库集群高可用

本实验使用两台服务器搭建: 系统                  CentOS6.5 tese02              IP:192.168.1.244 test03               IP:192.168.1.245 DRBD               版本:8.4.6 DRBD-UTIL       版本:8.9.2 MariaDB           版本:10.0.17 Heartbeat         版本:3.0.4 VIP                  

Rabbitmq集群高可用测试

Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模式.镜像模式 单一模式:最简单的情况,非集群模式. 没什么好说的. 普通模式:默认的集群模式. 对于Queue来说,消息实体只存在于其中一个节点,A.B两个节点仅有相同的元数据,即队列结构. 当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A.B间进行消息传

企业私有云之mariadb集群高可用

上篇文章介绍了openstack组件rabbitmq高可用,现在介绍其另一个重要组件mysql高可用. 我是本次选择mysql的版本是mariadb,集群方法是galera cluster多主集群. 其实也有很多其他方案,如pxc.mha等等,选择galera的原因是安装方便,使用与维护也方便,多主模式任何一个节点挂了都可以在另外节点查看数据,同时openstack各组件也支持配置集群方式的配置. 简介 MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实

zookeeper集群模式的配置

集群模式的配置 为了确保ZooKeeper服务的稳定与可靠性,通常是搭建成一个ZK集群来对外提供服务.关于ZooKeeper,需要明确一个很重要的特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的(本文下面就用―过半存活即可用|来代替这个特性吧^-^).正是基于这个特性,建议是将ZK集群的机器数量控制为奇数较为合适.为什么选择奇数台机器,我们可以来看一下,假如是4台机器构成的ZK集群,那么只能够允许集群中有一个机器down掉,因为如果down掉2台,那么只剩下2台机器,显然没有

Rabbitmq集群高可用

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法 RabbitMQ是流行的开源消息队列系统,用erlang语言开发 几个概念说明: Broker:简单来说就是消息队列服务器实体. Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列. Queue:消息队列载体,每个消息都会被投入到一个或多个队列. Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来. Routing Key:路由关键字,exchange根据

zookeeper 集群安装和配置

先主要介绍一下zoo.cfg的基本配置. tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data dataLogDir=/datalog clientPort=2181 electionAlg=3 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1:20883:30883 配置的基本信息 tickTime=2000:毫秒级的基本时间单位,