zookeeper+activemq实现高可用消息队列

来源:互联网 发布:有色金属价格走势软件 编辑:程序博客网 时间:2024/06/03 21:49

使用ZooKeeper实现的Master-Slave实现方式,是对ActiveMQ进行高可用的一种有效的解决方案,高可用的原理:使用ZooKeeper(集群)注册所有的ActiveMQ Broker。只有其中的一个Broker可以对外提供服务(也就是Master节点),其他的Broker处于待机状态,被视为Slave。如果Master因故障而不能提供服务,则利用ZooKeeper的内部选举机制会从Slave中选举出一个Broker充当Master节点,继续对外提供服务。

准备三台虚拟机 已经安装好了jdk

192.168.1.236

192.168.1.237

192.168.1.238


1.安装zookeeper集群
1)下载好:zookeeper-3.4.8.tar.gz
tar -zxvf zookeeper-3.4.8.tar.gz -C /usr/local/  #解压到zookeeper到/user/local
mv zookeeper-3.4.8 zookeeper #改一下名字太长不好操作
2)   cd /usr/local/zookeeper/
mkdir data #数据存放
mkdir logs #日志存放
     cd /usr/local/zookeeper/conf/
mv zoo_sample.cfg zoo.cfg #修改zoo.cfg
vim zoo.cfg,修改如下几项
dataDir=/usr/local/zookeeper/data/
dataLogDir=/usr/local/zookeeper/logs
最后增加
server.1=192.168.1.236:2888:3888 
server.2=192.168.1.237:2888:3888 
server.3=192.168.1.238:2888:3888 
        在/usr/local/zookeeper/data下创建myid文件内容 236机器上为1、237机器上为2、238机器上为3和上面配置文          件zoo.cfg中的序号一一对应
3)将配置好的zoo.cfg复制到其它两台机器上并且修改myid中的序号
4)启动zookeeper(三台都要启动)

关闭防火墙: service iptables stop 
启动:    /usr/local/zookeeper/bin/zkServer.sh start 
查看zookeeper状态:
/usr/local/zookeeper/bin/zkServer.sh status
zookeeper 安装成功
2安装activemq

  解压: 

tar -zxvf apache-activemq-5.11.2-bin.tar.gz  -C /usr/local/
       cd /usr/local/ &&  mv apache-activemq-5.11.2/ activemq   #将解压好的文件重命名,改的简单一些

      修改配置文件
       vim /usr/local/activemq/conf/activemq.xml
修改内容如下:

第一处修改:brokerName=”activemq-cluster”(三个节点都需要修改,并且改为一样的)

第二处:

将如下信息

<persistenceAdapter>              <kahaDB directory="${activemq.data}/kahadb"/>  </persistenceAdapter> 
修改为:

 <persistenceAdapter>                <replicatedLevelDB                          directory="${activemq.data}/leveldb"                          replicas="3"                           bind="tcp://0.0.0.0:0"                          zkAddress="192.168.1.236:2181,192.168.1.237:2181,192.168.1.238:2181"                         hostname="192.168.1.236"  sync="local_disk"                        zkPath="/activemq/leveldb-stores"     />

其中个属性表示:

directory : 存储数据的路径
replicas : 集群中的节点数【(replicas/2)+1公式表示集群中至少要正常运行的服务数量】, 3台集群那么允许1台宕机, 另外两台要正常运行
bind : 当这个节点成为Master, 它会绑定配置好的地址和端口来履行主从复制协议(官方建议不要改动)
zkAddress : ZooKeeper的ip和port, 如果是集群, 则用逗号隔开(这里作为简单示例ZooKeeper配置为单点, 这样已经适用于大多数环境了, 集群也就多几个配置)

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


同样将安装好的activemq复制到其它两台机器并且修改hostname

3.启动测试:

bin/activemq start

因为使用zookeeper做负载均衡,三台只有一台是master,其他两台处于等待状态,所以只有其中一台提供服务,但一旦这台服务器宕机以后,会有另外一台顶替上来,所以其他几个ip地址是打不开的,只有一台能打开在客户端使用

http://192.168.1.236:8161/admin/

http://192.168.1.237:8161/admin/

http://192.168.1.238:8161/admin/

只有236能打开

默认用户名admin 密码admin  在conf/users.properties中配置

0 0
原创粉丝点击