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

相关文章

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景: