Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RocketMQ分布式消息中间件-Centos7安装运行

RocketMQ分布式消息中间件-Centos7安装运行

作者头像
Java帮帮
发布于 2019-12-13 04:35:32
发布于 2019-12-13 04:35:32
1K00
代码可运行
举报
运行总次数:0
代码可运行

消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。最近公司的项目也是用上了RocketMQ,所以这里记录一下RocketMQ环境安装部署过程。

环境准备

我们假设你已经设置好如下环境,没有的先自行安装环境,这里不做展开

  • Centos7:我这里用的是阿里云服务器,Centos7,内核:3.10.0-693.2.2.el7.x86_64
  • JDK1.8:JDK版本:JDK_1.8.0_201_64-Bit
  • Maven:Apache Maven 3.6.0
  • unzip:解压工具,用来解压安装包,没有该工具可直接使用 yum install unzip -y 安装

# 文档及代码

  • Apache 上开源官方地址:https://rocketmq.apache.org/
  • GitHub 托管地址:https://github.com/apache/rocketmq
  • 阿里官方的介绍文档:http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/
  • Apache 官方提供的 “快速入门” 文档:https://rocketmq.apache.org/docs/quick-start/
  • RocketMQ的运行方式非常简单,这里简单记录一下步骤,最主要的还是记录安装运行过程中踩过的坑
  • 该篇介绍两种运行方式,均参照官方文档操作,以当前最新4.5.0版本为例,所有操作均在 /root 目录进行

# 安装方式一:二进制直接运行

  • 二进制文件:http://mirrors.shu.edu.cn/apache/rocketmq/4.5.0/rocketmq-all-4.5.0-bin-release.zip
  • 下载二进制文件:wget http://mirrors.shu.edu.cn/apache/rocketmq/4.5.0/rocketmq-all-4.5.0-bin-release.zip
  • 解压:unzip rocketmq-all-4.5.0-bin-release.zip
  • 进入解压后的二进制文件目录:cd rocketmq-all-4.5.0-bin-release
  • 看到以下目录结构:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
drwxr-xr-x 2 root root  4096 Mar 29 17:37 benchmark
drwxr-xr-x 3 root root  4096 Mar 29 17:37 bin
drwxr-xr-x 6 root root  4096 Mar 29 17:37 conf
drwxr-xr-x 2 root root  4096 Mar 29 17:37 lib
-rw-r--r-- 1 root root 17336 Mar 28 19:52 LICENSE
-rw-r--r-- 1 root root  1337 Mar 28 19:53 NOTICE
-rw-r--r-- 1 root root  2521 Mar 28 19:53 README.md

启动NameServer服务

  • 后台启动Name Server服务:nohup sh bin/mqnamesrv &
  • 查看启动日志:tail -f ~/logs/rocketmqlogs/namesrv.log

这里如果你的系统配置如果不够高那么你可能会遇到如下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ec800000, 2147483648, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /root/rocketmq-all-4.5.0-bin-release/hs_err_pid16614.log

日志已经提示出来了,你也可以打开日志文件查看详细信息:tail -f ~/logs/rocketmqlogs/broker.log

这里的报错是因为内存分配失败,解决方法请往下翻到第五节查看。

启动Broker服务

  • 后台启动Broker服务:nohup sh bin/mqbroker -n localhost:9876 &
  • 查看启动日志:tail -f ~/logs/rocketmqlogs/broker.log

这里同样可能会遇到内存分配失败的错误

运行消息生产者测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...

运行消息消费者测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...

两项测试如果均运行成功那么RocketMQ服务安装没什么问题了

关闭服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

# 安装方式二:源码编译运行

下载及编译

  • 源代码地址:http://mirrors.shu.edu.cn/apache/rocketmq/4.5.0/rocketmq-all-4.5.0-source-release.zip
  • 下载源码:wget http://mirrors.shu.edu.cn/apache/rocketmq/4.5.0/rocketmq-all-4.5.0-source-release.zip
  • 解压:unzip rocketmq-all-4.5.0-source-release.zip
  • 进入解压后的源码目录:cd rocketmq-all-4.5.0
  • 可以看到有如下文件:1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
drwxr-xr-x 3 root root  4096 Mar 29 13:20 acl
drwxr-xr-x 3 root root  4096 Mar 29 13:20 broker
-rw-r--r-- 1 root root   997 Mar 29 13:20 BUILDING
drwxr-xr-x 3 root root  4096 Mar 29 13:20 client
drwxr-xr-x 3 root root  4096 Mar 29 13:20 common
-rw-r--r-- 1 root root  1997 Mar 29 13:20 CONTRIBUTING.md
-rw-r--r-- 1 root root   271 Mar 29 13:20 DEPENDENCIES
drwxr-xr-x 2 root root  4096 Mar 29 13:20 dev
drwxr-xr-x 5 root root  4096 Mar 29 13:20 distribution
drwxr-xr-x 4 root root  4096 Mar 29 13:20 docs
drwxr-xr-x 3 root root  4096 Mar 29 13:20 example
drwxr-xr-x 3 root root  4096 Mar 29 13:20 filter
-rw-r--r-- 1 root root 11365 Mar 29 13:20 LICENSE
drwxr-xr-x 3 root root  4096 Mar 29 13:20 logappender
drwxr-xr-x 3 root root  4096 Mar 29 13:20 logging
drwxr-xr-x 3 root root  4096 Mar 29 13:20 namesrv
-rw-r--r-- 1 root root   168 Mar 29 13:20 NOTICE
drwxr-xr-x 3 root root  4096 Mar 29 13:20 openmessaging
-rw-r--r-- 1 root root 23992 Mar 29 13:20 pom.xml
-rw-r--r-- 1 root root  2521 Mar 29 13:20 README.md
drwxr-xr-x 3 root root  4096 Mar 29 13:20 remoting
drwxr-xr-x 3 root root  4096 Mar 29 13:20 srvutil
drwxr-xr-x 3 root root  4096 Mar 29 13:20 store
drwxr-xr-x 3 root root  4096 Mar 29 13:20 style
drwxr-xr-x 3 root root  4096 Mar 29 13:20 test
drwxr-xr-x 3 root root  4096 Mar 29 13:20 tools
  • 执行mvn命令编译:mvn -Prelease-all -DskipTests clean install -U,该过程可能会下载若干依赖,耐心等待即可
  • 有如下显示表示编译成功1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Apache RocketMQ 4.5.0 4.5.0:
[INFO]
[INFO] Apache RocketMQ 4.5.0 .............................. SUCCESS [  4.318 s]
[INFO] rocketmq-logging 4.5.0 ............................. SUCCESS [  3.083 s]
[INFO] rocketmq-remoting 4.5.0 ............................ SUCCESS [  2.057 s]
[INFO] rocketmq-common 4.5.0 .............................. SUCCESS [  3.052 s]
[INFO] rocketmq-client 4.5.0 .............................. SUCCESS [  3.730 s]
[INFO] rocketmq-store 4.5.0 ............................... SUCCESS [  4.995 s]
[INFO] rocketmq-srvutil 4.5.0 ............................. SUCCESS [  0.360 s]
[INFO] rocketmq-filter 4.5.0 .............................. SUCCESS [  1.033 s]
[INFO] rocketmq-acl 4.5.0 ................................. SUCCESS [  0.741 s]
[INFO] rocketmq-broker 4.5.0 .............................. SUCCESS [  2.966 s]
[INFO] rocketmq-tools 4.5.0 ............................... SUCCESS [  1.758 s]
[INFO] rocketmq-namesrv 4.5.0 ............................. SUCCESS [  0.745 s]
[INFO] rocketmq-logappender 4.5.0 ......................... SUCCESS [  0.707 s]
[INFO] rocketmq-openmessaging 4.5.0 ....................... SUCCESS [  0.594 s]
[INFO] rocketmq-example 4.5.0 ............................. SUCCESS [  0.780 s]
[INFO] rocketmq-test 4.5.0 ................................ SUCCESS [  1.218 s]
[INFO] rocketmq-distribution 4.5.0 ........................ SUCCESS [  5.352 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.829 s
[INFO] Finished at: 2019-04-08T17:53:30+08:00
[INFO] ------------------------------------------------------------------------
  • 进入编译后的目录:cd distribution/target/apache-rocketmq
  • 看到以下目录结构1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
drwxr-xr-x 2 root root  4096 Apr  8 17:53 benchmark
drwxr-xr-x 3 root root  4096 Mar 29 13:20 bin
drwxr-xr-x 6 root root  4096 Mar 29 13:20 conf
drwxr-xr-x 2 root root  4096 Apr  8 17:53 lib
-rw-r--r-- 1 root root 17336 Mar 29 13:20 LICENSE
-rw-r--r-- 1 root root  1337 Mar 29 13:20 NOTICE
-rw-r--r-- 1 root root  2521 Mar 29 13:20 README.md0
  • 到这里源码编译完成,下面的步骤跟二进制运行方式一样,请查看二进制运行方式

# 采坑记录

内存分配失败

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /root/rocketmq-all-4.5.0-bin-release/hs_err_pid17515.log

遇到这个错误,请修改 bin 目录下的 runserver.shrunbroker.sh 这两个文件:

runserver.sh

将默认的4g调整为合适的大小,我这里给了256m

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#===========================================================================================
# JVM Configuration
#===========================================================================================
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:Sof
tRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8  -XX:-UseParNewGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc.log -XX:+PrintGCDetails"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT}  -XX:-UseLargePages"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${BASE_DIR}/lib"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"

runbroker.sh

同理,将默认的8g调整为合适的大小,我这里也给了256m

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#===========================================================================================
# JVM Configuration
#===========================================================================================
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdap
tiveSizePolicy"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"

以上只是我个人在安装运行过程中的一些记录和遇到的坑,如有不完善的地方欢迎指出,我也会在文中继续补充完善。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RocketMQ4.8集群搭建全纪录
下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
loong576
2021/08/06
9540
RocketMQ-初体验RocketMQ(02)_单节点RocketMQ的安装
假如你没有云主机也没搭建本地虚拟机,那么推荐使用VMware Workstation Player 来搭建自己的虚机,Virtual Box 也不错,这两款体积都比较小,适合个人开发。
小小工匠
2021/08/17
1.8K0
K8S生产环境下的RocketMQ集群(双主双从+同步模式) - 完整部署笔记
RocketMQ主要有四大组成部分:NameServer、Broker、Producer、Consumer。
洗尽了浮华
2021/02/05
9.2K0
K8S生产环境下的RocketMQ集群(双主双从+同步模式) - 完整部署笔记
RocketMQ入门(一)
系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。
传说之下的花儿
2023/11/27
3040
RocketMQ入门(一)
Apache RocketMQ 消息队列部署与可视化界面安装
Apache RocketMQ是一个分布式、队列模型的消息中间件,具有低延迟、高性能和高可靠、万亿级容量和灵活的可扩展性。核心组件由四部分组成:Name Servers,Brokers,Producer 和 Consumer;它们中的每一个都可以水平扩展,而没有单一的故障节点。
陶陶技术笔记
2020/06/02
3.3K0
Apache RocketMQ 消息队列部署与可视化界面安装
【精选】在CentOS7上安装RocketMQ 4.8.0
在RocketMQ官网上找到下载RocketMQ4.8.0的链接,下载和解压RocketMQ:
鳄鱼儿
2024/05/21
6890
CentOS7.4下编译Hadoop-2.7.6
1. 使用系统和软件 操作系统:CentOS Linux release 7.4.1708 (Core) 64位 使用软件如下: jdk1.8.0_112.tar.gz hadoop-2.7.6-src.tar.gz apache-ant-1.9.11-bin.tar.gz apache-maven-3.5.3-bin.tar.gz findbugs-3.0.1.tar.gz protobuf-2.5.0.tar.gz 2. 必要的包安装 [root@mini05 ~]# yum install -y
踏歌行
2020/10/15
8710
CentOS7.4下编译Hadoop-2.7.6
Ubuntu20.04安装MySQL5.7.18、jdk1.8、tomcat8.0.47
在官网下载:https://dev.mysql.com/downloads/mysql/ 也可以选择用我的修改后的: 使用deb包进行安装 将下载好的mysql-server_5.7.18压缩包导入linux服务器,然后进行下面的操作。
云计算小黑
2022/12/28
7841
Ubuntu20.04安装MySQL5.7.18、jdk1.8、tomcat8.0.47
RedHad 7.x服务器操作记录
(1)查看版本和内核 [root@master ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.3 (Maipo) [root@master ~]# uname -a Linux master 3.10.0-514.el7.x86_64 #1 SMP Wed Oct 19 11:24:13 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux [root@master ~]# (2)查看磁
程裕强
2022/05/06
2600
Linux系统:centos7下搭建Rocketmq4.3中间件,和监控台
rocketmq的默认配置极其耗内存,要进行修改。 1)修改runserver.sh配置 注释掉原来的,添加新配置
知了一笑
2019/07/19
9170
分布式文件系统FastDFS详解
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
民工哥
2020/09/16
6470
分布式文件系统FastDFS详解
Fastdfs + Nginx整合部署
记一次Fastdfs + Nginx整合部署 1、环境介绍 操作系统:CentOS Linux release 7.6.1810 (Core) Nginx编译安装,版本-nginx/1.18.0 Fastdfs编译安装,版本-fastdfs-5.11 server ip 用途 Nginx 10.110.10.110 Nginx/1.18.0 Fastdfs 10.110.10.110 Fastdfs/5.11 2、上传需要的安装包 [root@test-10 src]# pwd /usr/local/sr
染指流年
2023/03/13
5540
Fastdfs + Nginx整合部署
Centos7.6搭建RocketMQ4.8全纪录
下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
loong576
2021/08/06
1.1K0
芋道 RocketMQ 安装部署
RocketMQ 是阿里巴巴在 2012 年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于 2017 年 9 月 25 日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。
芋道源码
2020/05/19
1.5K0
芋道 RocketMQ 安装部署
zookeeper-02 部署
1. 主机规划 主机名称 外网IP【外部访问】 内网IP 操作系统 备注 安装软件 docker01 10.0.0.11 172.16.1.11 CentOS 7.2 zookeeper-3.4.5【集群】 docker02 10.0.0.12 172.16.1.12 CentOS 7.2 zookeeper-3.4.5【集群】 docker03 10.0.0.13 172.16.1.13 CentOS 7.2 zookeeper-3.4.5【集群】 docker04 10.0.0.14 172.16
踏歌行
2020/10/15
3020
Install Joomla
因为插件丰富,架构灵活,可以简单而快速实现大部分的网站功能,在国外很受欢迎,连续好几年都获得开源 CMS 的冠军
franket
2021/08/11
1.1K0
ZooKeeper伪分布式集群安装及使用
ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
星哥玩云
2022/07/04
4080
RocketMQ源码编译安装
Producer:消息生产者,负责产生消息,一般由业务系统负责产生消息 Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费 Push Consumer:Consumer的一种,需要向Consumer对象注册监听 Pull Consumer:Consumer的一 种,需要主动请求Broker拉取消息 Producer Group:生产者集合,一般用于发送一类消息 Consumer Group:消费者集合,一般用于接受一类消息进行消费 Broker:MQ消息服务(中转角色,用于消息存储与生产消费转发)
端碗吹水
2020/12/01
7610
RocketMQ源码编译安装
Hadoop基础教程-第8章 Zookeeper(8.2 Zookeeper下载与安装)
ZooKeeper服务器是用Java创建的,它在JVM上运行。需要使用JDK 6或更高版本。这里我们使用JDK8,前文已经安装。
程裕强
2022/05/06
2580
Hadoop基础教程-第8章 Zookeeper(8.2 Zookeeper下载与安装)
号称下一代消息中间件!来看看它有多牛逼
最近这个 Apache Pulsar 消息中间件非常的火,号称下一代消息中件,今天,就一起来看看它到底有多牛逼?
民工哥
2021/07/16
5460
号称下一代消息中间件!来看看它有多牛逼
推荐阅读
相关推荐
RocketMQ4.8集群搭建全纪录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验