RocketMQ--环境搭建(单机&docker&集群)

一、单机安装

  1、安装RocketMQ需要使用JDK,首先需要配置好JDK,安装JDK

  2、下载并启动RocketMQ

# 下载RocketMQ
wget https://mirrors.bfsu.edu.cn/apache/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip
# 解压缩
unzip rocketmq-all-4.9.0-bin-release.zip
# 切换到bin目录
cd rocketmq-all-4.9.0-bin-release/bin/
# 后台启动namesrv
nohup ./mqnamesrv > /dev/null 2>&1 &
# 后台启动broker
nohup ./mqbroker -n localhost:9876 > /dev/null 2>&1 &

  如果出现如下问题:

      

   这是因为内存不足,导致java程序运行不起来,可以设置namesrv和broker的内占用内存

   修改runserver.sh和runbroker.sh中关于内存的配置

      

   3、验证消息

  首先修改namesrv的地址

#编辑profile文件 
vi /etc/profile 
#刷新 
source /etc/profile 
#设置nameserver服务器 
export NAMESRV_ADDR=localhost:9876

  然后验证消息发送和消息消费

#测试消息发送命令 
sh tools.sh org.apache.rocketmq.example.quickstart.Producer 
#测试消息接收命令 
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

二、Docker安装

  1、安装docker

  2、拉取镜像

docker pull foxiswho/rocketmq:server-4.3.2 
docker pull foxiswho/rocketmq:broker-4.3.2

  3、创建namesrv容器

docker run -di -p 9877:9876 --name=rmqserver -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" foxiswho/rocketmq:server-4.3.2

  4、创建broker容器

docker run -di -p 10911:10911 -p 10909:10909 --name=rmqbroker -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" foxiswho/rocketmq:broker-4.3.2

  5、配置broker

# 配置broker容器的配置文件
docker exec -it rmqbroker /bin/bash 
cd /etc/rocketmq/ 
vi broker.conf
#配置内容
brokerIP1=192.168.124.11
namesrvAddr=192.168.124.11:9876 
brokerName=broker-a

  6、重新启动

docker start rmqserver rmqbroker

  7、停止和删除容器

docker stop rmqbroker rmqserver 
docker rm rmqbroker rmqserver

三、集群搭建

  rocketmq已经提供了集群的样例

  1、修改如下配置文件:

${RocketMQ_HOME}/conf/2m-2s-sync/broker-a.properties
${RocketMQ_HOME}/conf/2m-2s-sync/broker-a-s.properties
${RocketMQ_HOME}/conf/2m-2s-sync/broker-b.properties
${RocketMQ_HOME}/conf/2m-2s-sync/broker-b-s.properties

  修改内容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=40911
storePathRootDir=/Users/hadoop/store-a/
storePathCommitLog=/Users/hadoop/store-a/commitlog/
storePathConsumerQueue=/Users/hadoop/store-a/consumequeue/

  需要说明一下,如果是同一台机子,监听端口需要修改不一样。

  2、启动broker

bin/mqbroker -c conf/2m-2s-sync/broker-a.properties -n localhost:9876 &
bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties -n localhost:9876 &
bin/mqbroker -c conf/2m-2s-sync/broker-b.properties -n localhost:9876 &
bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties -n localhost:9876 &

  5、查看

      

  6、对于broker的全量配置内容如下所示

#所属集群名字
brokerClusterName=tl-rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样; 在broker-b.properties中此处需要修改为:brokerName=broker-b
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=node1:9876;node2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/rocketmq-4.2.0/2m2s-data/store
#commitLog 存储路径
storePathCommitLog=/apps/rocketmq-4.2.0/2m2s-data/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/apps/rocketmq-4.2.0/2m2s-data/store/consumequeue
#消息索引存储路径
storePathIndex=/apps/rocketmq-4.2.0/2m2s-data/store/index
#checkpoint 文件存储路径
storeCheckpoint=/apps/rocketmq-4.2.0/2m2s-data/store/checkpoint
#abort 文件存储路径
abortFile=/apps/rocketmq-4.2.0/2m2s-data/store/abort
#限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

四、控制台

  1、搭建

# 拉取镜像
docker pull styletang/rocketmq-console-ng:1.0.0
# 创建并运行容器
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.124.11:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t styletang/rocketmq-console-ng:1.0.0

  2、查看

      

 

posted @ 2021-08-20 13:00  李聪龙  阅读(523)  评论(0编辑  收藏  举报