activemq+zookeeper 集群部署基于levedb

  1. 集群图java

    wKiom1hnIKPgGLvxAAEkCutmIdM854.png-wh_50

  2. zookeeper集群,上一篇博客写了zookeeper集群的部署redis

    Ip 服务注册端口
    主机名
    192.168.56.15 2181 zk01
    192.168.56.16
    2181 zk02
    192.168.56.17
    2181 zk03
  3. activemq部署apache


    IP 管控台端口 集群通信端口 消息端口
    192.168.56.15
    8161 61621 51511
    192.168.56.16
    8162 61622
    51512
    192.168.56.17
    8163 61623 51513
  4. host解析必须作vim

[root@zk03 conf]# cat /etc/hosts
192.168.56.15 zk01
192.168.56.16 zk02
192.168.56.17 zk03

5.bash

 5.1 zookeeper 集群不在配置,参看前面博客dom

 5.2 activemq 安装包    tcp

 说明:zk03 是zookeeper的 activemq03 是activemq的 jdk 是java环境 redis不用管
 三台机器所有部署
 [root@zk03 opt]# pwd
/opt
[root@zk03 opt]# ll
total 12
lrwxrwxrwx  1 root root    21 Dec 31 18:20 activemq03 -> apache-activemq-5.9.0
drwxr-xr-x 10  501 games 4096 Oct 15  2013 apache-activemq-5.9.0
lrwxrwxrwx  1 root root    11 Dec 25 01:27 jdk -> jdk1.7.0_80
drwxr-xr-x  8   10   143 4096 Apr 11  2015 jdk1.7.0_80
lrwxrwxrwx  1 root root    11 Dec 25 19:35 redis -> redis-3.0.6
drwxr-xr-x  4 root root    27 Dec 25 19:38 redis-3.0.6
drwxr-xr-x  2 root root   125 Dec 31 18:20 tools
lrwxrwxrwx  1 root root    15 Dec 25 01:29 zk03 -> zookeeper-3.4.9
drwxr-xr-x 12 1001  1001 4096 Dec 25 01:48 zookeeper-3.4.9
[root@zk03 opt]#

 5.3 修改全部activemq管控台的端口ide

只须要该118行的端口
[root@zk01 conf]# pwd
/opt/activemq01/conf
[root@zk01 conf]# grep 8161 jetty.xml 
 118:      <property name="port" value="8161"/>
[root@zk01 conf]# grep -n  8161 jetty.xml 
118:        <property name="port" value="8161"/>
[root@zk01 conf]# 
[root@zk02 conf]# grep -n 8162  jetty.xml 
118:        <property name="port" value="8162"/>
135:                    <property name="port" value="8162" />  #默认注释的端口 不用管
[root@zk02 conf]# 
[root@zk03 conf]# grep -n  8163 jetty.xml 
118:        <property name="port" value="8163"/>
[root@zk03 conf]#

5.4 修改broker的名称测试

 vi activemq.xml
 只须要修改brokerName="dubboedu"   默认是localhost
 三台改为同样的
 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="dubboedu" dataDirectory="${activemq.data}">

5.5 修改集群通信的端口以及leveldb存储模式orm

 vim activemq.xml文件中<persistenceAdapter>中的内容
  zk01:
        <persistenceAdapter>
              <replicatedLevelDB
                  directory="${activemq.data}/leveldb"   #基于leveldb数据存放路径
                  replicas="3"   #复制的分片的个数 这里是三台
                  bind="tcp://0.0.0.0:62621"   #集群通信的端口
                  zkAddress="192.168.56.51:2181,192.168.56.16:2181,192.168.56.17:2181"
                  hostname="zk01"  #主机名
                  zkPath="/activemq/leveldb-stores" #zookeeper中的路径
                />
        </persistenceAdapter>
  zk02:
      <persistenceAdapter>
                  <replicatedLevelDB
                        directory="${activemq.data}/leveldb"
                        replicas="3"
                        bind="tcp://0.0.0.0:62622"
                        zkAddress="192.168.56.51:2181,192.168.56.16:2181,192.168.56.17:2181"
                        hostname="zk02"
                        zkPath="/activemq/leveldb-stores"
                      />
        </persistenceAdapter>
        
  zk03:
           <persistenceAdapter>
                <replicatedLevelDB
                  directory="${activemq.data}/leveldb"
                  replicas="3"
                  bind="tcp://0.0.0.0:62623"
                  zkAddress="192.168.56.51:2181,192.168.56.16:2181,192.168.56.17:2181"
                  hostname="zk03"
                  zkPath="/activemq/leveldb-stores"
/>
        </persistenceAdapter>


5.6 修改消息端口

  activemq.xml配置文件
 zk01
 
  [root@zk01 conf]# grep  -n  51511 activemq.xml 
120:            <transportConnector name="openwire" uri="tcp://0.0.0.0:51511?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
[root@zk01 conf]# 

  zk02
  
  [root@zk02 conf]# grep  -n 51512 activemq.xml 
120:            <transportConnector name="openwire" uri="tcp://0.0.0.0:51512?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
[root@zk02 conf]# 

 zk03
 
 [root@zk03 conf]# grep -n  51513 activemq.xml 
120:            <transportConnector name="openwire" uri="tcp://0.0.0.0:51513?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

6.启动activemq

zookeeper必定要提早启动
顺序启动activemq
[root@zk01 bin]# /opt/activemq01/bin/activemq start 
INFO: Using default configuration
(you can configure options in one of these file: /etc/default/activemq /root/.activemqrc)

INFO: Invoke the following command to create a configuration file
/opt/activemq01/bin/activemq setup [ /etc/default/activemq | /root/.activemqrc ]

INFO: Using java '/opt/jdk/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/opt/activemq01/data/activemq-zk01.pid' (pid '4541')


[root@zk02 conf]# /opt/activemq02/bin/activemq start
INFO: Using default configuration
(you can configure options in one of these file: /etc/default/activemq /root/.activemqrc)

INFO: Invoke the following command to create a configuration file
/opt/activemq02/bin/activemq setup [ /etc/default/activemq | /root/.activemqrc ]

INFO: Using java '/opt/jdk/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/opt/activemq02/data/activemq-zk02.pid' (pid '4492')
[root@zk02 conf]# 


[root@zk03 conf]# /opt/activemq03/bin/activemq start
INFO: Using default configuration
(you can configure options in one of these file: /etc/default/activemq /root/.activemqrc)

INFO: Invoke the following command to create a configuration file
/opt/activemq03/bin/activemq setup [ /etc/default/activemq | /root/.activemqrc ]

INFO: Using java '/opt/jdk/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/opt/activemq03/data/activemq-zk03.pid' (pid '2296')

7.查看分片以及zookeeper的信息

登陆任意一台zookeeper就行
[root@zk02 bin]# pwd
/opt/zk02/bin
[root@zk02 bin]# ./zkCli.sh   -server 192.168.56.16:2181
[zk: 192.168.56.16:2181(CONNECTED) 0] ls  /
[activemq, dubbo, zookeeper]
[zk: 192.168.56.16:2181(CONNECTED) 1] ls /activemq
[leveldb-stores]
[zk: 192.168.56.16:2181(CONNECTED) 2] ls /activemq/leveldb-stores
[00000000002, 00000000001, 00000000000]
[zk: 192.168.56.16:2181(CONNECTED) 3] 
elected值不为空的是消息activemq的master节点
[zk: 192.168.56.16:2181(CONNECTED) 3] get /activemq/leveldb-stores/00000000002
{"id":"dubboedu","container":null,"address":null,"position":-1,"weight":1,"elected":null}
cZxid = 0x400000012
ctime = Sat Dec 31 19:33:44 CST 2016
mZxid = 0x400000012
mtime = Sat Dec 31 19:33:44 CST 2016
pZxid = 0x400000012
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x259544b516a0000
dataLength = 89
numChildren = 0
[zk: 192.168.56.16:2181(CONNECTED) 4] get /activemq/leveldb-stores/00000000001
{"id":"dubboedu","container":null,"address":null,"position":-1,"weight":1,"elected":null}
cZxid = 0x400000008
ctime = Sat Dec 31 19:33:16 CST 2016
mZxid = 0x400000015
mtime = Sat Dec 31 19:33:45 CST 2016
pZxid = 0x400000008
cversion = 0
dataVersion = 8
aclVersion = 0
ephemeralOwner = 0x359544bcfbb0001
dataLength = 89
numChildren = 0
[zk: 192.168.56.16:2181(CONNECTED) 5] get /activemq/leveldb-stores/00000000000
{"id":"dubboedu","container":null,"address":"tcp://zk01:62621","position":-1,"weight":1,"elected":"0000000000"}
cZxid = 0x400000005
ctime = Sat Dec 31 19:32:51 CST 2016
mZxid = 0x40000000d
mtime = Sat Dec 31 19:33:17 CST 2016
pZxid = 0x400000005
cversion = 0
dataVersion = 4
aclVersion = 0
ephemeralOwner = 0x359544bcfbb0000
dataLength = 111
numChildren = 0
[zk: 192.168.56.16:2181(CONNECTED) 6]

8 测试高可用activemq

  8.1 正产三个节点: 

[zk: 192.168.56.16:2181(CONNECTED) 3] ls /activemq/leveldb-stores
[00000000002, 00000000001, 00000000000]
[zk: 192.168.56.16:2181(CONNECTED) 4]

 8.2 此时activemq02处于主节点,停掉主节点

停掉主节点activemq:
[root@zk02 bin]# ./activemq stop 
查看消息队列的信息,能够看出从新选出来主节点
[zk: 192.168.56.16:2181(CONNECTED) 4] ls /activemq/leveldb-stores
[00000000002, 00000000000]
[zk: 192.168.56.16:2181(CONNECTED) 5] ls /activemq/leveldb-stores/00000000002
[]
[zk: 192.168.56.16:2181(CONNECTED) 6] get /activemq/leveldb-stores/00000000002
{"id":"dubboedu","container":null,"address":null,"position":-1,"weight":1,"elected":null}
cZxid = 0x400000012
ctime = Sat Dec 31 19:33:44 CST 2016
mZxid = 0x400000012
mtime = Sat Dec 31 19:33:44 CST 2016
pZxid = 0x400000012
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x259544b516a0000
dataLength = 89
numChildren = 0
[zk: 192.168.56.16:2181(CONNECTED) 7] get /activemq/leveldb-stores/00000000000
{"id":"dubboedu","container":null,"address":"tcp://zk01:62621","position":-1,"weight":1,"elected":"0000000000"}
cZxid = 0x400000005
ctime = Sat Dec 31 19:32:51 CST 2016
mZxid = 0x40000000d
mtime = Sat Dec 31 19:33:17 CST 2016
pZxid = 0x400000005
cversion = 0
dataVersion = 4
aclVersion = 0
ephemeralOwner = 0x359544bcfbb0000

8.3 启动activemq02

[root@zk02 bin]# ./activemq start

查看消息队列的信息  
[zk: 192.168.56.16:2181(CONNECTED) 8] ls /activemq/leveldb-stores             
[00000000003, 00000000002, 00000000000]               #从新加进来
[zk: 192.168.56.16:2181(CONNECTED) 9]

8.5java代码连接activemq

java  conf 消息队列的配置文件

failover:(tcp://192.168.56.15:51511,tcp://192.168.56.16:51512.tcp://192.168.56.17:51513)?random=false
mq.username=admin
my.password=admin        #这是消息队列的用户名和密码 生产场景本身修改
mq.pool.maxConnection=10
queueName=队列的名称

9.开机自动启动不要忘了作了!!

相关文章
相关标签/搜索