集群图
zookeeper集群,上一篇博客写了zookeeper集群的部署
Ip | 服务注册端口 | 主机名 | |
192.168.56.15 | 2181 | zk01 | |
192.168.56.16 | 2181 | zk02 | |
192.168.56.17 | 2181 | zk03 |
activemq部署
IP | 管控台端口 | 集群通讯端口 | 消息端口 |
192.168.56.15 | 8161 | 61621 | 51511 |
192.168.56.16 | 8162 | 61622 | 51512 |
192.168.56.17 | 8163 | 61623 | 51513 |
host解析必须做
[root@zk03 conf]# cat /etc/hosts 192.168.56.15 zk01 192.168.56.16 zk02 192.168.56.17 zk03
5.
5.1 zookeeper 集群不在配置,参看前面博客
5.2 activemq 安装包
说明: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管控台的端口
只需要该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存储模式
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.开机自动启动不要忘了做了!!
本文出自 “砖家博客” 博客,请务必保留此出处http://wsxxsl.blog.51cto.com/9085838/1887846
activemq+zookeeper 集群部署基于levedb
原文地址:http://wsxxsl.blog.51cto.com/9085838/1887846