RocketMQ安装

服务器部署

# 前提:准备好JDK8环境

# 下载安装包到/home目录
[root@hadoop4 ~]# wget -O /home/rocketmq-all-4.7.1-bin-release.zip https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip

# 解压
[root@hadoop4 ~]# unzip rocketmq-all-4.7.1-bin-release.zip
# 修改broker配置文件
[root@hadoop4 ~]# cat rocketmq-all-4.7.1-bin-release/conf/broker.conf
  #nameServer地址,分号分割
  namesrvAddr=ip:9876

  #集群的名称
  brokerClusterName = DefaultCluster
  #broker 名称,用来区分broker组。
  brokerName = broker-a
  #同一个组内: 0代表主 非0代表从  
  brokerId = 0
  #删除文件的时间点,默认凌晨4点
  deleteWhen = 04

  #文件保留时间,默认48小时 
  fileReservedTime = 48

  #broker的角色
  #- ASYNC_MASTER 异步复制Master
  #- SYNC_MASTER 同步双写Master
  #- SLAVE
  brokerRole = ASYNC_MASTER
  #刷盘方式
  #- ASYNC_FLUSH异步刷盘
  #- SYNC_FLUSH同步刷盘
  #同步刷盘,保证数据的稳定性落盘
  flushDiskType = ASYNC_FLUSH

  #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  autoCreateTopicEnable=true

  # 如果mq服务需要在外网使用则配成外网,需要在内网使用则配成内网地址  
  brokerIP1=ip

  #Broker 对外服务的监听端口
  listenPort=10911


  #存储路径
  storePathRootDir=/home/rocketmq/data/store-a-0
  #commitLog 存储路径
  storePathCommitLog=/home/rocketmq/data/store-a-0/commitLog
  #消费队列存储路径存储路径
  storePathConsumeQueue=/home/rocketmq/data/store-a-0/consumequeue
  #消息索引存储路径
  storePathIndex=/home/rocketmq/data/store-a-0/index
  #checkPoint 文件存储路径
  storeCheckpoint=/home/rocketmq/data/store-a-0/checkPoint
  #abort 文件存储路径
  abortFile=/home/rocketmq/data/store-a-0/abort

# 修改JVM内存大小(runbroker.sh和runserver.sh)
  ...
  JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  ...
  
# 运行NameServer
[root@hadoop4 ~]# nohup sh bin/mqnamesrv &
# 运行broker
[root@hadoop4 ~]# nohup sh bin/mqbroker  &

Docker部署

[root@hadoop4 RocketMQ]# cat Dockerfile
FROM aaronst21/centos7_with_jdk8:1.8.0_251
USER root

# 设置环境变量
ENV ROCKETMQ_VERSION=4.7.1
ENV ROCKETMQ_HOME /usr/local/rocketmq-${ROCKETMQ_VERSION}

# 设置临时变量
#ARG user=default
#ARG usergroup=default

# 将解压后的 RocketMQ 包拷贝到 docker 容器中
COPY rocketmq-all-${ROCKETMQ_VERSION}-bin-release ${ROCKETMQ_HOME}

WORKDIR ${ROCKETMQ_HOME}

# 创建用户和组
#RUN groupadd ${usergroup} &&\
#    useradd -g ${usergroup} ${user} &&\
#    chown -R ${usergroup}:${user} ${ROCKETMQ_HOME} &&\
#    chown -R ${usergroup}:${user} ${JAVA_HOME} &&\
#    su ${user}

EXPOSE 9876 10909 10911
# 运行server
CMD ./bin/mqnamesrv
# 运行broker
#CMD ./bin/mqbroker

[root@hadoop4 RocketMQ]# docker build -t rocketmq:server .
[root@hadoop4 RocketMQ]# docker build -t rocketmq:broker .
[root@hadoop4 RocketMQ]# docker run -idt --name rocketmq-server -p 9876:9876 rocketmq:server
[root@hadoop4 RocketMQ]# docker run -idt --name rocketmq-broker -p 9877:9876 -v /home/rocketmq/broker.conf:/usr/local/rocketmq-4.7.1/conf/broker.conf -v /home/rocketmq/data:/home/rocketmq/data rocketmq:broker

部署可视化监控工具

# 克隆rocketmq-console-ng代码
git clone https://github.com/StyleTang/rocketmq-console-ng.git

# 可手动修改application.properties配置文件namesrv地址或运行时指定
# 编译打包
mvn clean package -Dmaven.test.skip=true

# 运行
java -jar rocketmq-console-1.0.0-SNAPSHOT.jar --server.port=10086 --rocketmq.config.namesrvAddr='ip:9876' &

# 浏览器访问
http://127.0.0.1:10086

异常

  • 错误信息

java.lang.RuntimeException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <null> failed

错误原因

9876、10909、10911、10912端口未放开。

  • Broker启动命令出错,未指定使用的配置文件。

解决办法

放开端口。正确启动broker命令如下:

nohup sh bin/mqbroker  -c conf/broker.conf  &

posted @ 2021-11-09 16:47  MegaloBox  阅读(115)  评论(0编辑  收藏  举报