集羣圖java
zookeeper集羣,上一篇博客寫了zookeeper集羣的部署redis
Ip | 服務註冊端口 |
主機名 | |
192.168.56.15 | 2181 | zk01 | |
192.168.56.16 |
2181 | zk02 | |
192.168.56.17 |
2181 | zk03 |
activemq部署apache
IP | 管控臺端口 | 集羣通信端口 | 消息端口 |
192.168.56.15 |
8161 | 61621 | 51511 |
192.168.56.16 |
8162 | 61622 |
51512 |
192.168.56.17 |
8163 | 61623 | 51513 |
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&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&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&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.開機自動啓動不要忘了作了!!