RocketMq-01-整体部署与快速实战
一、简介
Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性,万亿级容量和灵活的可伸缩性。 它由四个部分组成:nameserver,broker,生产者和使用者。 它们中的每一个都可以水平扩展,而没有单个故障点。 如上面的屏幕截图所示。nameserver:提供轻量级的服务发现和路由。 每个名称服务器记录完整的路由信息,提供相应的读写服务,并支持快速的存储扩展。Broker:通过提供轻量级的TOPIC和QUEUE机制来存储消息。
二、集群部署与配置
参考链接(官网Quick Start):
http://rocketmq.apache.org/docs/quick-start/
环境
JDK版本:1.8.0_221
rocketmq版本:
roqall4.3.2incubatingbinrelease.zip
运行环境
JDK版本:1.8.0_221
rocketmq版本:rocketmqall4.3.2
系统:centos 7
1.配置环境变量
vim /etc/profile 插入JDK和RocketMq环境变量
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#rocketmq
export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq‐all‐4.1.0‐incubating
export PATH=$ROCKETMQ_HOME/bin:$PATH
刷新环境变量: source /etc/profile
2.修改broker配置
配置文件地址:/usr/local/rocketmq/conf/broker.conf
#集群名称,可自定义
brokerClusterName=DefaultCluster
brokerName=broker‐a
brokerId=0
brokerIP1=192.168.241.198
//定义服务地址,主存地址
namesrvAddr=192.168.241.198:9876
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
#消息存储根路径
storePathRootDir=/data/rocketmq/store
#日志路径
storePathCommitLog=/data/rocketmq/store/commitlog
3.启动脚本配置修改(可选)
机器内存不够(一般针对虚拟机),修改/usr/local/rocketmq/bin/runserver.sh 与 /usr/local/rocketmq/bin/runbroker.sh中JAVA_OPT关于内存的设置
#修改此处的内存大小,默认为4g,一般我们的虚拟机内存不会太大
#所以此处修改为256m,可以根据自己机器的配置合理设置
JAVA_OPT="${JAVA_OPT} ‐server ‐Xms256m ‐Xmx256m ‐Xmn128m ‐XX:MetaspaceSi ze=64m ‐XX:MaxMetaspaceSize=128m"
4.启动namesrv
nohup sh bin/mqnamesrv ‐n 192.168.241.198:9876 &
5.启动broker
nohup sh bin/mqbroker ‐n 192.168.241.198:9876 autoCreateTopicEnable=true &
指定配置文件启动
nohup sh bin/mqbroker ‐n 192.168.241.198:9876 ‐c conf/broker.conf autoCre ateTopicEnable=true &
6.rocketmq多机集群部署
准备2个虚拟机分别是虚拟机centos-node-01与centos-node-02,分别部署2个NameServer,并在每台机器上分别启动一个Master和一个Slave,互为主备,在主目录下的conf文件夹下提供了多种broker配置模式,分别有:2m-2s-async,2m-2s-sync,2m-noslave,可以以此为模版做如下配置:
以
2m-2s-sync同步为例
1.
配置192.168.241.198 Master和Slave
Master broker-m.conf配置如下:
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
listenPort=10811
storePathRootDir=/root/rocketmq/store‐m
Slave broker-s.conf配置如下
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 //namesrv地址 不配置默认localhost:9876
brokerClusterName=DefaultCluster //集群名称
brokerName=broker-a //broker名称
brokerId=1 // 0是master,非0是slave
deleteWhen=04 // 凌晨4点删除消息
fileReservedTime=48 //消息保存48小时
brokerRole=SLAVE //broker角色
flushDiskType=ASYNC_FLUSH //消息持久化方式 同步刷盘/异步刷盘
autoCreateTopicEnable=true //发送消息时如果Topic不存在,则自动创建
listenPort=10911 //broker通信端口
storePathRootDir=/root/rocketmq/store‐s // 消息持久化根目录
2.
配置192.168.241.199 Master和Slave
Master broker-m.conf配置如下:
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
listenPort=10811
storePathRootDir=/root/rocketmq/store‐m
Slave broker-s.conf配置如下
namesrvAddr =192.168.241.198:9876;192.168.241.199:9876 //namesrv地址 不配置默认localhost:9876
brokerClusterName=DefaultCluster //集群名称
brokerName=broker-b //broker名称
brokerId=1 // 0是master,非0是slave
deleteWhen=04 // 凌晨4点删除消息
fileReservedTime=48 //消息保存48小时
brokerRole=SLAVE //broker角色
flushDiskType=ASYNC_FLUSH //消息持久化方式 同步刷盘/异步刷盘
autoCreateTopicEnable=true //发送消息时如果Topic不存在,则自动创建
listenPort=10911 //broker通信端口
storePathRootDir=/root/rocketmq/store‐s // 消息持久化根目录
启动mqnamesrv
nohup sh mqnamesrv &
启动master
nohup sh bin/mqbroker ‐c conf/broker‐m.conf &
启动slave
nohup sh bin/mqbroker ‐c conf/broker‐s.conf &
集群启动后查看集群监控状态
sh mqadmin clusterlist ‐n 192.168.241.198:9876
测试
测试发送端> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
测试消费端> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
7.控制台搭建
1.github下载地址:
https://github.com/apache/rocketmq-externals 选择分支:release-rocketmq-console-1.0.0
2.编辑application.properties配置文件,修改启动端口和对应的rocketMQ的namesrv地址
3.进入项目目录下打包:maven clean package -Dmaven.test.skip=true
4.上传jar包到对应服务器上并启动 :java -jar rocketmq-console-1.0.0.jar