-
192.168.192.130
-
192.168.192.131
-
192.168.192.134
Zookeeper环境准备
主机ip | 消息端口 | 通信端口 | 节点目录/user/local/ |
192.168.192.130 | 2181 | 2888:3888 | zookeeper |
192.168.192.131 | 2181 | 2888:3888 | zookeeper |
192.168.192.134 | 2181 | 2888:3888 | zookeeper |
ActiveMQ环境准备:
主机IP | 集群通信端口 | 消息端口 | 控制台端口 | 节点目录/user/local/ |
192.168.192.130 | 62621 | 51511 | 8161 | activemq-cluster/node1 |
192.168.192.131 | 62622 | 51512 | 8162 | activemq-cluster/node2 |
192.168.192.134 | 62623 | 51513 | 8163 | activemq-cluster/node3 |
2.搭建zookeeper环境(三个虚拟机操作一样)
-
解压zookeeper-3.4.5.tar.gz 复制到/opt/usr/local下(三台虚拟机都这么做)
-
配置zookeeper的环境变量。vim/etc/profile(配置完成后要记得source /etc/profile 生效修改)
JAVA_HOME=/usr/lib/java/jdk1.7 ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.5 CLASS_PATH=.: J A V A _ H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar PATH= J A V A _ H O M E / b i n : JAVA_HOME/bin: JAVA_HOME/bin:ZOOKEEPER_HOME/bin:$PATH export JAVA_HOME CLASS_PATH ZOOKEEPER_HOME PATH
- 修改zookeeper配置文件名,到zookeeper的conf目录下将zoo_sample.cfg文件改名为zoo.cfg
$ mv zoo_sample.cfg zoo.cfg
- 编辑zoo.cfg文件
$ vim zoo.cfg
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. #这个地方的目录地址改一下 dataDir=/usr/local/zookeeper-3.4.5/data #日志目录 dataLogDir=/usr/local/zookeeper-3.4.5/logs # the port at which the clients will connect clientPort=2181 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to “0” to disable auto purge feature #autopurge.purgeInterval=1 #配置三个server server.0=192.168.192.130:2888:3888 server.1=192.168.192.131:2888:3888 server.2=192.168.192.134:2888:3888
- 在zookeeper-3.4.5目录下创建data文件夹和logs文件夹
$ cd /usr/local/zookeeper-3.4.5
$mkdir data
$mkdir logs
- 在三个虚拟机下的data文件夹下创建三个myid文件,并且三个文件里面分别写入0,1,2
$ cd /usr/local/zookeeper-3.4.5/data
#192.168.192.130下 vim myid 在文件里面写入0,保存退出 #192.168.192.131下 vim myid 在文件里面写入1,保存退出 #192.168.192.134下 vim myid 在文件里面写入2,保存退出
- 启动三个zookeeper
$ zkServer.sh start
[root@localhost data]# zkServer.sh start JMX enabled by default Using config: /usr/local/zookeeper-3.4.5/bin/…/conf/zoo.cfg Starting zookeeper … STARTED [root@localhost data]#
- ps:常用命令:
启动: zkServer.sh start
停止: zkServer.sh stop
重启: zkServer.sh restart
查看服务状态: zkServer.sh status
- 遇到的问题1:
用zkServer.sh start启动报错说zkServer.sh:未找到命令 就用 ./zkServer.sh start 来启动
- 遇到的问题2:
三台虚拟机启动后用zkServer.sh status查看状态发现有错误
[root@localhost conf]# zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper-3.4.5/bin/…/conf/zoo.cfg Error contacting service. It is probably not running.
然后用$zkServer.sh start-foreground命令来启动查看启动日志 发现日志报错
java.net.NoRouteToHostException: No route to host at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:579) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:388) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:765) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716) 2016-11-13 18:00:35,602 [myid:0] - WARN [QuorumPeer[myid=0]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@368] - Cannot open channel to 1 at election address /192.168.192.131:3888
java.net.NoRouteToHostException: No route to host at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:579) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:354) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:388) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:765) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716) 2016-11-13 18:00:36,035 [myid:0] - INFO [QuorumPeer[myid=0]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@774] - Notification time out: 800 2016-11-13 18:00:36,837 [myid:0] - WARN [QuorumPeer[myid=0]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@368] - Cannot open channel to 2 at election address /192.168.192.134:3888
初步断定是防火墙的问题,我们关闭防火墙试试看能不能解决问题
#关闭防火墙
$ systemctl stop firewalld.service
重新启动zookeeper我们发现可以使用了。问题解决
3、搭建ActiveMQ并和Zookeeper建立集群
搭建三个ActiveMQ,分在三个服务器上,每一个服务器上一个。192.169.192.130是node1,192.168.192.131是node2,192.168.192.134是node3
(1) 解压 tar -zxvf apache-activemq-5.14.1-bin.tar.gz



