整理一下RocketMQ在Linux上的安装
前言:
最近在学习消息中间件相关的知识,然后看见了一款叫
RocketMq
的中间件用的比较多,就学习了解了下。在学习的过程中,感觉RocketMq
老是需要自己手动去启动,想想自己有台快到期的服务器(Linux服务器)可以废物利用一下,以下是RocketMq
在Linux服务(CentOS)上的部署安装过程
准备工作:
- 64位的操作系统[64bit OS, Linux/Unix/Mac is recommended;(Windows user see guide below)](必须)
- 64位的Java环境[64bit JDK 1.8+;](必须)
- Maven环境[Maven 3.2.x;](可选,如果使用的是源码编译,必须要)
- 足够的内存空间[4g+ free disk for Broker server](可选,生产环境最好在4G以上)
Java环境的准备
可参考该文章上的配置即可:https://www.jnssd.com/2021/04/01/编程整理/#Java-相关环境配置项
Maven环境的准备
在Linux环境中安装
下载
下载地址:http://maven.apache.org/download.cgi
1
2这里的下载带了参数 --no-check-certificate,如果下载的时候报错可带上
wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
解压并配置环境
1
2
3
4
5
6
7
8
9
10
11
12
13解压
tar -zxvf apache-maven-3.8.4-bin.tar.gz
配置环境变量
# 编辑/etc下的profile文件
sudo nano /etc/profile 或者 vim nano /etc/profile
# 在profile文件追加如下信息(/opt/software/apache-maven-3.8.4是你服务器上面的maven解压地址)
export MAVEN_HOME=/opt/software/apache-maven-3.8.4
export PATH=$PATH:$MAVEN_HOME/bin
使环境变量生效
sudo source /etc/profile配置maven中央仓库和本地仓库地址
在maven的解压目录下settings.xml文件中找到如下信息并修改
1
[jiang@jnssd apache-maven-3.8.4]$ nano conf/settings.xml
配置本地仓库地址
在settings.xml文件中找到 localRepository关键字,添加如下信息:
1
<localRepository>/opt/software/apache-maven-3.8.4/repo</localRepository>
备注:/opt/software/apache-maven-3.8.4/repo即maven仓库在系统中的本地地址
配置maven仓库的中心地址,即maven从哪里拉包,这里使用阿里云镜像(国内使用比较快)
在settings.xml文件中找到 mirrors关键字,在该标签内追加如下信息:
1
2
3
4
5
6<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>校验maven环境
1
2
3
4
5
6
7
8[jiang@jnssd ~]$ clear
[jiang@jnssd ~]$ mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /opt/software/apache-maven-3.8.4
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /opt/software/jdk1.8.0_211/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.19.1.el7.x86_64", arch: "amd64", family: "unix"
RocketMQ的安装
下载:下载页面:https://rocketmq.apache.org/docs/quick-start/
下载解压并编译
1 | 下载 |
注:如果是测试环境,最好修改下RocketMQ
的Java虚拟机
的内存大小,RocketMQ
默认的是4g,进入bin
目录分别修改以下几个文件的内存值:
1 | 查找sh脚本中的JVM参数设置: |
需要修改的文件有:runserver.sh
、runbroker.sh
、tools.sh
,修改值如下(修改前记得先备份相应脚本,具体JVM大小根据实际情况设定):
runserver.sh
文件(该文件需根据jdk版本修改)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20'1' means releases befor Java 9
JAVA_MAJOR_VERSION=$("$JAVA" -version 2>&1 | sed -r -n 's/.* version "([0-9]*).*$/\1/p')
if [ -z "$JAVA_MAJOR_VERSION" ] || [ "$JAVA_MAJOR_VERSION" -lt "9" ] ; then
# 这里是jdk9版本以前的修改值
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
else
# 这里是jdk9版本以后的修改值
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log:time,tags:filecount=5,filesize=30M"
fi
jdk9版本以前修改后为
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
jdk9版本以后修改后为
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"runbroker.sh
文件1
2
3
4
5修改前
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
修改后
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"tools.sh
文件1
2
3
4
5修改前
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
修改后
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
启动和关闭Name Server
1 | 后台启动 |
Name Server的默认端口为9876,运行sh bin/mqnamesrv -p
可查看Name Server的配置项,并可通过-c namesrv.conf方式指定配置文件启动;
RocketMQ的默认日志路径为~/logs/rocketmqlogs/
;
可以将启动Name Server命令保存为脚本,以方便下次启动。
启动和关闭Broker
启动Broker时需要指定要连接的Name Server:
1 | 后台启动 |
连接时报No route info of this topic: XXpic错误
注:如果在代码中连接MQ报如下错误(No route info of this topic: pc
):
1 | Caused by: org.apache.rocketmq.client.exception.MQClientException: No route info of this topic: pc |
请以以下命令的形式启动Broker
1 | nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true >/dev/null 2>&1 & |
RocketMQ配置远程连接访问
修改RocketMQ目录下conf文件夹中的broker.conf配置文件
1
[jiang@jnssd rocketmq-4.9.2]$ nano conf/broker.conf
添加如下信息
1
2
3
4
5
6namesrvAddr = 需要连接的RocketMQ服务器IP地址:9876
brokerIP1 = 需要连接的RocketMQ服务器IP地址
如果,当前RocketMQ服务器IP地址是:220.181.38.148,配置如下
namesrvAddr = 220.181.38.148:9876
brokerIP1 = 220.181.38.148以配置文件形式启动Broker
1
nohup sh bin/mqbroker -n 220.181.38.148:9876 autoCreateTopicEnable=true -c conf/broker.conf >/dev/null 2>&1 &
注:启动命令中的
-c
必须包含,不然照着某篇博客中的无法启动(踩坑经历,无语)
配置RocketMQ监控页面
下载RocketMQ DashBoard看板
1 | git clone https://github.com/apache/rocketmq-dashboard.git |
修改nameserver地址
进入rocketmq-dashboard目录下的src/main/resources下,修改application.properties中的namesrvAddrs地址为RocketMQ服务地址
1 | nano src/main/resources/application.properties |
maven编译并启动spring boot
1 | mvn spring-boot:run |
如果需要maven编译打包运行
1 | mvn clean package -Dmaven.test.skip=true |
如果编译到yarn时报错,需要安装Node环境和Yarn环境,
下载nodejs
1
2
3
4
5
6
7
8
9
10
11
12
V8.x:
curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
V7.x:
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
V6.x:
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
V5.x:
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -yum安装nodejs
1
yum install -y nodejs
下载
1
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
安装
1
sudo yum install yarn