Activemq的高可用——基于Zookeeper的主从集群

一、Activemq相关介绍

  1. 简介
    Activemq 是Apache出品,最流行的,能力强劲的开源消息总线。完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现

  2. Activemq的特性
    多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP 完全支持JMS1.1和J2EE 1.4规范
    (持久化,XA消息,事务)

    对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性

    通过常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resourceadaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE1.4商业服务器上

    支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

    支持通过JDBC和journal提供高速的消息持久化

    从设计上保证了高性能的集群,客户端-服务器,点对点

    支持Ajax

    支持与Axis的整合 可以很容易得调用内嵌JMS provider,进行测试

二、基于Zookeeper的主从集群

  1. 说明
    ActiveMQ 5.9.0新推出的主从实现,基于zookeeper来选举出一个master,其他节点自动作为slave实时同步消息。因为有实时同步数据的slave的存在,master不用担心数据丢失,所以leveldb会优先采用内存存储消息,异步同步到磁盘,所以该方式的activeMQ读写性能最好因为选举机制要超过半数,所以最少需要3台节点,才能实现高可用。如果集群是两台则master失效后slave会不起作用,所以集群至少三台。此种方式仅实现主备功能,避免单点故障,没有负载均衡功能。

  2. 环境准备
    IP
    192.168.3.10 server1
    192.168.3.11 server2
    192.168.3.12 server3
    安装软件信息:
    apache-activemq-5.13.0-bin.tar.gz
    zookeeper-3.5.2-alpha.tar.gz
    ZooInspector.zip

  3. 搭建Zookeeper集群
    (1)将zookeeper-3.5.2-alpha.tar.gz文件解压到/home/wzh/zk目录;
    (2)将zoo_sample.cfg复制一份为 zoo.cfg,并修改其配置信息
    wzh@hd-master:~/zk/zookeeper-3.5.2-alpha/conf$ cp zoo_sample.cfg zoo.cfg
    wzh@hd-master:~/zk/zookeeper-3.5.2-alpha/conf$vim zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/tmp/zookeeper

clientPort=2181

server.1=192.168.3.10:2888:3888

server.2=192.168.3.11:2888:3888

server.3=192.168.3.11:2888:3888

(3)创建/tmp/zookeeper目录
在该目录下创建名为myid的文件,内容为1(这个值随server而改变)

(4)将server1上的/home/wzh/zk/zookeeper-3.5.2-alpha文件夹复制到server2,server3,然后创建/tmp/zookeeper目录

在该目录下创建名为myid的文件,内容为2

(5)启动zookeeper
分别启动三个IP中的zookeeper,启动信息如下:

wzh@hd-master:~/zk/zookeeper-3.5.2-alpha/bin$ ./zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /home/wzh/zk/zookeeper-3.5.2-alpha/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED
  1. 搭建Activemq群集

(1)在10机器中,将apache-activemq-5.13.0-bin.tar.gz解压到/home/wzh/amq

(2)修改activemq.xml配置文件
①将broker节点的brokerName设置为wzhamq

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

②将persistenceAdapter的持久化方式选用replicatedLevelDB,将kahaDB方式注释掉

<persistenceAdapter>
       <!--
          <kahaDB directory="${activemq.data}/kahadb"/>
       -->
      <replicatedLevelDB 
              directory="${activemq.data}/leveldb" 
              replicas="3" 
              bind="tcp://0.0.0.0:0"        
              zkAddress="192.168.3.10:2181,192.168.3.11:2181"     
              hostname="192.168.3.10"          
              sync="local_disk"          
              zkPath="/activemq/leveldb-stores"/>
      </persistenceAdapter>

将apache-activemq-5.13.复制到11,12机器

wzh@hd-master:~/amq$ scp -r apache-activemq-5.13.0/ wzh@192.168.3.11:/tmp

修改配置文件中的hostname=“192.168.3.11”

修改配置文件中的hostname=“192.168.3.12”

(3)启动ActiveMQ

wzh@hd-master:~/amq$ ./apache-activemq-5.13.0/bin/activemq status
INFO: Loading '/home/wzh/amq/apache-activemq-5.13.0//bin/env'
INFO: Using java '/opt/java/jdk1.8.0_91/bin/java'
ActiveMQ is running (pid '2031')
wzh@hd-master:~/amq$

依次启动192.168.3.11,192.168.3.12机器中的Activemq

  1. 集群管理

(1)通过使用ZooInspector工具查看zookeeper集群情况

(2)http://192.168.3.10:8161/admin/ 默认用户名与口令为admin登录ActiveMQ管理端

五、总结

通过以上步骤,便可以实现Activemq的主从集群,当Master主节点出现故障宕机后,Slave从节点便会通过投票机制,票数最多的Slave从节点升级为新的Master主节点,用来提供服务。当故障节点恢复之后,会重新加入到集群中并连接 Master 进入Slave 模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值