rocketMQ环境搭建
- 下载zip安装包 地址: http://rocketmq.apache.org/dowloading/releases/
- 解压
unzip rocketmq-all-4.3.2-bin-release.zip
cd rocketmq-all-4.3.2-bin-release/
如下图
到此安装已经结束
rocketMQ的软件目录说明
1.benchmark目录包括运行benchmark程序的shell脚本
2.bin目录包括各个组件启动/停止的脚本
3.conf目录是配置文件目录
4.lib目录是rocketMQ运行所使用的jar包
bin目录说明
conf目录说明
准备工作已经完成,接下来便可以启动相应的组件
启动nameserver
在bin目录下,执行如下指令:
nohup sh mqnamesrv > /root/logs/rocketmqlogs/namesrv.log 2>&1 &
查看日志,确定是否成功:
tail -f /root/logs/rocketmqlogs/namesrv.log
查看端口是否已经被监听
netstat -nltp
可以在其他机器上以同样的方法启动部署nameserver,以支持高可用
启动broker
配置broker单节点启动, 修改自带的配置文件broker.conf
namesrvAddr=namesrvIP:9876 #nameserver的IP,多个用分号隔开
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-test #存储路径指定
brokerIP1=本机公网IP #很重要 ,说明如下
broker启动的时候会遍历本地的所有网卡ip,过滤掉 "127.0"和"192.168"开头的ip地址 然后得到第一个ip,作为本机ip; 那么问题来了,当这台机器有很多别的网卡(如:安装docker后) broker使用的ip可能是docker的,这就会导致客户端无法连接
执行如下指令,启动
我是在conf目录下执行,其他目录请自行修改脚本路径
nohup sh ../bin/mqbroker -c broker.conf > /root/logs/rocketmqlogs/broker.log 2>&1 &
查看日志
tail -f /root/logs/rocketmqlogs/broker.log
查看端口
broker高可用配置(两主两从,从节点交叉部署),逻辑关系如下
配置文件如下:
机器1上的master broker配置
broker-a
namesrvAddr=namesrvIP:9876;namesrvIP2:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-a
brokerIP1=本机公网IP
机器2上的master broker配置
broker-b
namesrvAddr=namesrvIP:9876;namesrvIP2:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-b
brokerIP1=本机公网IP
机器1上的slave broker配置
slave-b
namesrvAddr=namesrvIP:9876;namesrvIP2:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=10912
storePathRootDir=/home/rocketmq/store-b
brokerIP1=本机公网IP
机器2上的slave broker配置
slave-a
namesrvAddr=namesrvIP:9876;namesrvIP2:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=10912
storePathRootDir=/home/rocketmq/store-a
brokerIP1=本机公网IP
机器1上的配置文件
-rw-r--r-- 1 root root 928 Nov 5 2018 broker-a.properties
-rw-r--r-- 1 root root 922 Nov 5 2018 broker-b-s.properties
机器2上的配置文件
-rw-r--r-- 1 root root 928 Nov 5 2018 broker-b.properties
-rw-r--r-- 1 root root 922 Nov 5 2018 broker-a-s.properties
然后使用如下命令,分别启动四个broker,即可
nohup sh ../bin/mqbroker -c config_file > /root/logs/rocketmqlogs/broker.log 2>&1 &
说明: config_file是各个broker对应的配置文件,执行命令前请替换;broker.log是各个broker的日志文件,执行命令前请替换
这样一个高可用的RocketMQ集群就搭建好了
rocketMQ-console安装
rocketMQ-console是可视化管理平台,可以方便我们对mq的管理;不过官方的安装包中并没有该组件,该组件是由社区在维护,rocketMQ的各种对外扩展功能均在rocketmq-externals项目中;GitHub地址:
https://github.com/apache/rocketmq-externals
rocketMQ-console是一个spring boot项目,所以我们下载此项目,编译,打包,发布即可使用了
项目配置简单修改下
部署成功之后,访问,界面如下
rocketMQ环境搭建到此结束,使用愉快