问题描述:activemq-zookeeper集群第一次启动成功,activemq全部关闭后,再次启动时,总是只有最后一个activemq启动成功,mq服务启动时,会把上一个mq服务挤下线,日志提示:tcp://0.0.0.0:61616...地址已在使用。
问题未解决
服务器:CentOS7.9.2009
服务器IP:192.168.152.128、192.168.152.129、192.168.152.130
软件版本:activemq5.14.3、zookeeper-3.5.7
安装zookeeper
3台服务器做同样的操作:将zk安装包解压到/opt/colony目录下,得到目录zookeeper-3.5.7,进入conf目录,将文件zoo_sample.cfg改名为zoo.cfg,且修改两处:
# 修改1:数据存储路径
dataDir=/opt/colony/zookeeper-3.5.7/zkData
# 修改2:集群服务器 编号、IP、与Leader通信端口、选举端口
server.1=192.168.152.128:2888:3888
server.2=192.168.152.129:2888:3888
server.3=192.168.152.130:2888:3888
创建目录 /opt/colony/zookeeper-3.5.7/zkData 并在里面创建文件 myid ,输入不同编号,不要有空格,比如3台服务器编号分别为 1、2、3。
3台服务器均执行命令,开放端口:
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --reload
若启动仍报错,可能需要执行:
setsebool -P httpd_can_network_connect 1
启动3台CentOS的zookeeper服务:
/opt/colony/zookeeper-3.5.7/bin/zkServer.sh start
安装ActiveMQ
每台服务器均安装一个MQ服务。
进入目录
cd /opt/colony
下载安装包
wget https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.tar.gz
解压
tar -zxvf apache-activemq-5.14.3-bin.tar.gz
得到 apache-activemq-5.14.3,进入其 conf 目录,编辑 activemq.xml,修改标签 persistenceAdapter,3台服务器只有“hostname”改为当前服务器IP,其它地方一样。
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:61616"
zkAddress="192.168.152.128:2181,192.168.152.129:2181,192.168.152.130:2181"
zkPath="/opt/colony/apache-activemq-5.14.3/leveldb-stores"
hostname="当前服务器IP"
/>
</persistenceAdapter>
分别进入各 activemq 的bin目录,运行 ./activemq start 启动服务
进入zookeeper的bin目录,运行 ./zkCli.sh 启动客户端,运行
ls /opt/colony/apache-activemq-5.14.3/leveldb-stores
可看到三个节点
[00000000000, 00000000001, 00000000002]
获取zookeeper节点值
get /opt/colony/apache-activemq-5.14.3/leveldb-stores/00000000000
看到节点信息
{"id":"localhost","container":null,"address":"tcp://192.168.152.128:45778","position":-1,"weight":1,"elected":"0000000000"}
再次启动服务
以上配置第一次启动成功,但是把所有activemq服务关闭后再启动时,先启动的activemq服务总是在后启动的activemq服务启动后被强制下线,查看日志,提示服务的61616端口被占用,尝试修改服务端口为不同端口,且确保端口未被占用,各个服务又能启动成功,且zk客户端也能查询到。
进入activemq的conf目录,修改文件activemq.xml,将3个activemq的服务端口分别改为61616、61617、61618
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
结果
改端口启动后,再全部关闭,再启动又出现同样的问题,这到底是怎么回事呢,不知道能不能解决。