rocketmq4.7.1 linux安装

2024-02-23 13:20
文章标签 linux 安装 rocketmq4.7

本文主要是介绍rocketmq4.7.1 linux安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rocketmq单机安装

1 准备 【可忽略】

配置jdk
配置maven 【编译rocketmq-console用】
# 安装maven
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz
# 赋权
chmod -R 777 maven/
# 配置
vi /etc/profile
# 【1】 配置maven
#  刷新配置
source /etc/profile
# 验证
mvn -v

【1】 配置maven系统环境

#配置maven环境变量
export MAVEN_HOME=/usr/maven/apache-maven-3.6.3
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin

【2】配置maven settting.xml
打开maven的配置文件setting.xml,里面有个配置项目

<mirrors><mirror><id>aliyun</id><mirrorOf>central</mirrorOf><name>aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror><mirror><id>UK</id><name>UK Central</name><url>http://uk.maven.org/maven2</url><mirrorOf>central</mirrorOf></mirror>
</mirrors>
## 镜像存放路径
<localRepository>/home/repository</localRepository>
## 默认jkd版本<id>jdk-1.8</id>    
<activation>    <activeByDefault>true</activeByDefault>    <jdk>1.8</jdk>    
</activation>    
<properties>    <maven.compiler.source>1.8</maven.compiler.source>    <maven.compiler.target>1.8</maven.compiler.target>    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>    
</properties>

2 安装Rocketmq

# 下载
wget http://mirrors.hust.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
# 解压
unzip rocketmq-all-4.7.1-bin-release.zip
# 进入rocketm目录
cd rocketmq-all-4.7.1-bin-release

3 修改JVM配置

进到/rocketmq-all-4.7.1-bin-release/bin下编辑runserver.sh 与 runbroker.sh文件根据个人虚拟机大小进行修改

##查找sh脚本中的JVM参数设置:
find . -name '*.sh' | xargs egrep 'Xms'

需要修改JVM参数的文件:
bin/runserver.sh
bin/runbroker.sh
bin/tools.sh

## vi runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=64m -XX:MaxPermSize=128m"
## vi runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=64m -XX:MaxPermSize=128m"
## vi tools.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

在这里插入图片描述

4 配置RocketMQ环境变量

## 修改环境变量
vi /etc/profile
## ....修改配置
## 刷新配置
source /etc/profile
export ROCKETMQ=/data/mq/rocketmq-all-4.7.1-bin-release
export PATH=$PATH:$ROCKETMQ/bin

5.1 启动NAMESERVER

Name Server的默认端口为9876,运行sh bin/mqnamesrv -p可查看Name Server的配置项,并可通过-c namesrv.conf方式指定配置文件启动;

# 后台启动
nohup sh bin/mqnamesrv >/dev/null 2>&1 &## 查看日志:namesrv.log
## RocketMQ的默认日志路径为 ~/logs/rocketmqlogs/
tail -f ~/logs/rocketmqlogs/namesrv.log## 停止 nameserver
sh bin/mqshutdown namesrv   

在这里插入图片描述

5.2 启动BROKER

mqbroker 启动默认使用 /conf/broker.conf文件的配置

mqbroker
-c,–configFile 代理配置属性文件
-h,–help Print help
-m,–printImportantConfig 打印重要配置项
-n,–namesrvAddr 指定服务器地址列表(内网地址) eg: 192.168.0.1:9876;192.168.0.2:9876
-p,–printConfigItem 打印所有配置项

# 后台启动
# 如果/conf/broker.conf 中配置了namesrvAddr  这里就不需要配置了
nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 &
# 或者
# autoCreateTopicEnable=true 生产环境不要开启
nohup sh bin/mqbroker -n 192.168.2.174:9876 -c conf/broker.conf autoCreateTopicEnable=true >/dev/null 2>&1 &
## 查看RocketMQ进程
ps -ef | grep -v grep | grep rocketmq 
## 查看日志
tail -f ~/logs/rocketmqlogs/broker.log
## 停止 broker
sh bin/mqshutdown broker

6 测试

## 设置环境变量 指定Name Server 地址
export NAMESRV_ADDR=localhost:9876
## 集群环境 设置环境变量
#export NAMESRV_ADDR=192.168.0.1:9876;192.168.0.2:9876,192.168.0.3:9876## 启动生产者
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer## 启动消费者
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

rocketmq 集群安装

参考:
RocketMQ 集群部署 - 简书
高可用RocketMQ集群搭建 - 知乎

broker 机器信息

Master 1:172.18.24.5
Slave 1:172.18.24.6
Master 2:172.18.24.7
Slave 2:172.18.24.8
namesrv 机器信息(这里为了演示,复用了 3 台主机做 Name Server。正式生产环境应该要考虑配置单独的 3 台机器做 Name Server)

Name Server 1:172.18.24.5
Name Server 2:172.18.24.6
Name Server 3:172.18.24.7

配置 rocketmq broker-a(在 Master 1 上操作)

# vim conf/2m-2s-sync/broker-a.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=172.18.24.5:9876;172.18.24.6:9876;172.18.24.7:9876

配置 rocketmq broker-a-s(在 Slave 1 上操作)

# vim conf/2m-2s-sync/broker-a-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=172.18.24.5:9876;172.18.24.6:9876;172.18.24.7:9876

配置 rocketmq broker-b(在 Master 2 上操作)

# vim conf/2m-2s-sync/broker-b.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=172.18.24.5:9876;172.18.24.6:9876;172.18.24.7:9876

配置 rocketmq broker-b-s(在 Slave 2 上操作)

# vim conf/2m-2s-sync/broker-b-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=172.18.24.5:9876;172.18.24.6:9876;172.18.24.7:9876
## 修改日志默认路径
# sed -i 's#${user.home}/logs/#/data/logs/#g' conf/logback_broker.xml
# sed -i 's#${user.home}/logs/#/data/logs/#g' conf/logback_namesrv.xml
# sed -i 's#${user.home}/logs/#/data/logs/#g' conf/logback_tools.xml## 启动 Name Server,在 3 台 Name Server 上操作
nohup sh bin/mqnamesrv > /data/logs/rocketmqlogs/mqnamesrv.log 2>&1 & ## master1 slave1 省略。。。## 启动 Master 2,在 Master 2 上操作
sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties > /data/logs/rocketmqlogs/broker-b.log 2>&1 &## 启动 Slave 2,在 Slave 2 上操作
sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties > /data/logs/rocketmqlogs/broker-b-s.log 2>&1 &

补充

修改Name Server的端口

RocketMQ Name Server的默认端口为9876,可以通过以下方法修改Name Server的端口:

## 新增一个Name Server配置文件namesrv.conf,保存内容为:
listenPort=10076
## 启动Name Server时指定配置文件:
nohup sh bin/mqnamesrv -c namesrv.conf >/dev/null 2>&1 &
## 查看RocketMQ进程:
ps -ef | grep rocketmq
##查看RocketMQ Name Server的端口号:
netstat -tnlp | grep 
## 修改后Broker需要指定新的Name Server地址(端口)。

安装RocketMQ控制台

git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
## 将target/rocketmq-console-ng*.jar 放到和RocketMQ安装目录(本例为/usr/local/rocketmq)下
## 在RocketMQ安装目录下新建一个启动RocketMQ控制台的脚本来启动RocketMQ控制台:
nohup java -jar rocketmq-console-ng*.jar --server.port=xxxx  --rocketmq.config.namesrvAddr=localhost:9876 > /dev/null 2>&1 &
## 默认RocketMQ控制台不需要密码登录

参考:
https://github.com/apache/rocketmq-externals
https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console

ACL

【1】在broker.conf文件中添加

# 添加acl权限控制
aclEnable=true

【2】修改 plain_acl.yml 文件
accessKey 和 secretKey 长度必须大于6 ,且不能有@符号(大坑啊!!!)

# 修改accessKey 和 secretKey
accessKey: rocketmq1
secretKey: passwordxxxx

broker-a.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样  例如:在a.properties 文件中写 broker-a  在b.properties 文件中写 broker-b
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#Broker 的角色,ASYNC_MASTER=异步复制Master,SYNC_MASTER=同步双写Master,SLAVE=slave节点
brokerRole=ASYNC_MASTER
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘 
flushDiskType=SYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=10911
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.31.186:9876;192.168.31.231:9876
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.31.186
#存储路径
storePathRootDir=/data/rocketmq-all-4.7.0-bin-release/data/store-a
#commitLog 存储路径
storePathCommitLog=/data/rocketmq-all-4.7.0-bin-release/data/store-a/commitlog
#消费队列存储路径存储路径
storePathConsumerQueue=/data/rocketmq-all-4.7.0-bin-release/data/store-a/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq-all-4.7.0-bin-release/data/store-a/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq-all-4.7.0-bin-release/data/store-a/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq-all-4.7.0-bin-release/data/store-a/abort
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

错误解决

1)报错: There is insufficient memory for the Java Runtime Environment to continue

rocketmq 解决:There is insufficient memory for the Java Runtime Environment to continue_愿我如星君如月 … 夜夜流光相皎洁 …-CSDN博客

2)报错:org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest
解决:org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest_愿我如星君如月 … 夜夜流光相皎洁 …-CSDN博客

3)报错:Could not find or load main class org.apache.rocketmq.example.quickstart.Producer
解决:Could not find or load main class org.apache.rocketmq.example.quickstart.Producer_愿我如星君如月 … 夜夜流光相皎洁 …-CSDN博客

4)报错: org.apache.rocketmq.remoting.execption.RemotingConnectException:connect to failed

org.apache.rocketmq.remoting.execption.RemotingConnectException:connect to failed - 大碗2020 - 博客园

解决RocketMQ控制台出错:… remoting.exception.RemotingConnectException: connect to null failed_H_O_W_E的专栏-CSDN博客

参考

centos7中安装RocketMQ4.7版本_u011442726的博客-CSDN博客
在CentOS7上安装RocketMQ 4.7.1 – 运维派

这篇关于rocketmq4.7.1 linux安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/738772

相关文章

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主