赞
踩
说明:博主使用6台ubuntu虚拟机进行集群搭建,均已安装完毕jdk1.8(必需),分别如下
服务器ip | 用途 |
---|---|
192.168.44.131 | nameserver |
192.168.44.132 | nameserver |
192.168.44.133 | broker-a master |
192.168.44.134 | broker-a slave |
192.168.44.135 | broker-b master |
192.168.44.137 | broker-b slave |
具体步骤如下:
(一)下载程序包并解压
博主下载的是最新的4.9.4版本,它的nameserver和broker是同一套程序,只是不同的启动脚本
博主使用ubuntu虚拟机6台
#跳转到根目录 cd / #创建 data 目录 mkdir data #进入 data 目录 cd data/ #下载rocketmq wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip #解压到data目录 unzip rocketmq-all-4.9.4-bin-release.zip #创建 rocketmq 目录 mkdir rocketmq #把解压完毕的程序文件转移到新目录(或者你直接改名原解压目录) mv rocketmq-all-4.9.4-bin-release ./rocketmq #删除原目录 rm -r rocketmq-all-4.9.4-bin-release #进入配置目录 cd /data/rocketmq/conf #修改日志默认目录 sed -i 's#${user.home}#/data/rocketmq#g' *.xml
(二)搭建nameserver集群(两台服务器)
一般nameserver集群至少三台,但是博主虚拟机实在是开不了了,所以这里只弄了两台测试,能实现集群效果就可以了。两台nameserver集群启动和配置方式一样,博主这里使用自定义的日志目录,其它没变动
#启动程序
nohup sh /data/rocketmq/bin/mqnamesrv &
查看日志是否启动成功
cat /data/rocketmq/logs/rocketmqlogs/namesrv.log
如果出现
The Name Server boot success.
表示启动成功!
另外,该版本程序默认的运行内存是2g,如果需要调整,可以在程序的bin目录下对 runserver.cmd 内容进行编辑
"JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g"
编辑完成保存后重启即可
(三)搭建broker集群(四台服务器 主从+主从,sync同步刷新)
每对主从的名称一致,brokerId 区分
(1)首先更改运行内存
#进入bin目录
cd /data/rocketmq/bin/
#更改broker占用内存
vi runbroker.sh
做测试小点就可以,博主改为了256m,如果不改的话,你的虚拟机内存不够会启动失败
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"
(2)其次更改配置文件并运行
#进入主从同步配置文件存放目录
cd /data/rocketmq/conf/2m-2s-sync
master:
#编辑broker-a的master配置文件 cat > broker-a.properties <<EOF brokerClusterName=GbxCluster #namesrver的地址,每一个broker配置全部nameserver信息 namesrvAddr=192.168.44.131:9876;192.168.44.132:9876 brokerName=broker-a #0为master,大于0为slave brokerId=0 deleteWhen=04 fileReservedTime=48 brokerRole=SYNC_MASTER flushDiskType=SYNC_FLUSH listenPort=10911 defaultTopicQueueNums=4 #是否允许自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=false #是否允许自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=false #自定义存储路径,根据需求进行配置绝对路径,默认是home目录下面 storePathRootDir=/data/rocketmq/store storePathCommitLog=/data/rocketmq/store/commitlog EOF
启动master程序
nohup sh /data/rocketmq/bin/mqbroker -c /data/rocketmq/conf/2m-2s-sync/broker-a.properties &
slave:
#编辑broker-a的slave配置文件 cat > broker-a-s.properties <<EOF brokerClusterName=GbxCluster #namesrver的地址,每一个broker配置全部nameserver信息 namesrvAddr=192.168.44.131:9876;192.168.44.132:9876 brokerName=broker-a brokerId=1 deleteWhen=04 fileReservedTime=48 brokerRole=SLAVE flushDiskType=SYNC_FLUSH listenPort=10911 defaultTopicQueueNums=4 #是否允许自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=false #是否允许自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=false #自定义存储路径,根据需求进行配置绝对路径,默认是home目录下面 storePathRootDir=/data/rocketmq/store storePathCommitLog=/data/rocketmq/store/commitlog EOF
启动slave程序
nohup sh /data/rocketmq/bin/mqbroker -c /data/rocketmq/conf/2m-2s-sync/broker-a-s.properties &
查看broker是否启动成功
#查看端口占用
netstat -ntulp
当看到 10909,10911,10912 端口被java占用时基本上就可以确定程序启动成功了,如果不放心可以去日志中查看
按照同样配置修改broker-b的对应配置文件,除了
brokerName=broker-b
其他都不变,一一对应即可,然后使用对应的配置文件启动broker-b的程序
启动 broker-b 的master
nohup sh /data/rocketmq/bin/mqbroker -c /data/rocketmq/conf/2m-2s-sync/broker-b.properties &
查看日志是否启动成功
启动 broker-b 的slave
nohup sh /data/rocketmq/bin/mqbroker -c /data/rocketmq/conf/2m-2s-sync/broker-b-s.properties &
(四)安装消息看板平台
服务都安装完成了,为了直观的看到相关状态,一般还需要安装展示看板平台
源码下载地址:
https://codeload.github.com/apache/rocketmq-externals/zip/refs/tags/rocketmq-console-1.0.0
下载下来的源码是springboot框架,根据里边的文档添加上nameserver的地址端口,启动它,就可以看到直观的消息队列集群了(正式部署的话自己打个包就行了)。
博主的配置:
server.contextPath= server.port=8080 #spring.application.index=true spring.application.name=rocketmq-console spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true logging.config=classpath:logback.xml #if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876 rocketmq.config.namesrvAddr=192.168.44.131:9876 #if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true rocketmq.config.isVIPChannel= #rocketmq-console's data path:dashboard/monitor rocketmq.config.dataPath=/tmp/rocketmq-console/data #set it false if you don't want use dashboard.default true rocketmq.config.enableDashBoardCollect=true
启动后,进入页面,点击集群,如果能看到你部署的完整集群信息就表示成功了,否则集群可能有问题(我这里点击集群后出来的比较慢,你可以在F12中查看是否有消息返回)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。