本文主要是介绍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安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!