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.開機自動啓動不要忘了作了!!

相關文章
相關標籤/搜索