当前位置:   article > 正文

RocketMQ快速入门: linux安装RocketMQ并配置开机自启(一)_linux启动rocketmq

linux启动rocketmq

0. 引言

针对rocketMQ的学习,首当其冲的就是正确安装服务,所以我们今天来看linux下如何安装rocketmq及其控制台服务,并设置各个服务的开机自启

1. 下载安装包

安装包提供两种方式,一种是直接下载官方编译好的安装包,简单直接,一种是需要二开,下载源码自行编译,我们分别讲解。

1.1 直接下载安装包

1、下载安装包,这里我选择4.8.0版本示例,大家可以根据自己的需要选择版本
下载路径:https://rocketmq.apache.org/release-notes/2020/12/21/4.8.0

选择bin包类型,source为源码包,后续我们单独讲解源码包安装形式
在这里插入图片描述

2、将下载的安装包上传到linux服务器,或者可以直接在服务器上通过wget指令下载

wget https://archive.apache.org/dist/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip --no-check-certificate
  • 1

1.2 下载源码包进行编译

官方文档: https://rocketmq.apache.org/zh/docs/quickStart/01quickstart/

1、这里我们以4.8.0版本为例,先下载源码,下载地址:https://github.com/apache/rocketmq/releases?page=2

在这里插入图片描述
服务器上可以通过wget直接下载

wget https://github.com/apache/rocketmq/archive/refs/tags/rocketmq-all-4.8.0.zip
  • 1

2、如果想在服务器上直接编译,那需要在服务器上安装maven

yum update
yum install maven
  • 1
  • 2

检查安装版本

mvn -v
  • 1

在这里插入图片描述

3、maven编译源码,或者也可以在本机idea编译好上传到服务器

unzip rocketmq-all-4.8.0.zip
# 若未安装unzip工具,可通过yum安装
yum -y install unzip

cd rocketmq-all-4.8.0/
mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U
cd distribution/target/rocketmq-4.8.0/rocketmq-4.8.0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4、该目录下的rocketmq-4.8.0.tar.gz和rocketmq-4.8.0.zip就是编译好的安装包。我们将安装包复制到安装目录下即可
在这里插入图片描述

2. namesrv和broker安装

因为rocketmq是基于java的,所以需要大家提前安装好java环境,这里不再单独说明jdk的安装了

2.1 安装

1、进入你自定义的安装目录

2、解压安装包

unzip rocketmq-4.8.0.zip
  • 1

rocketmq的安装实际上安装启动namesrv和broker,如果不清楚这两者间的关系和作用的,可以继续学习专栏后续的文章:

RocketMQ快速入门:namesrv、broker、dashboard的作用及消息发送、消费流程(三)

3、进入安装目录,修改namesrv启动脚本

cd rocketmq-4.8.0
vim bin/runserver.sh
  • 1
  • 2

(1) 调整JAVA_HOME为自己的java安装目录
在这里插入图片描述
(2)如果需要调整namesrv占用内存的也可在此处调整,这里我们虚拟机是2G的,将其jvm内存调小一点
在这里插入图片描述
4、同样的修改runbroker脚本

vim bin/runbroker.sh
  • 1

除了修改jdk路径和内存大小外,因为我这里用的jdk1,8, 因此broker还需要垃圾回收器,否则会报错Error: VM option 'UseG1GC' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.

-XX:+UseG1GC前添加-XX:+UnlockExperimentalVMOptions即可,或者换成其他垃圾回收器,比如namesrv的CMS
在这里插入图片描述

5、修改broker.conf配置文件

vim conf/broker.conf 
  • 1

添加内容:

namesrvAddr = 192.168.244.27:9876 # 填服务器ip, 如有公网ip填公网ip
autoCreateTopicEnable = true # 开启topic自动创建
brokerIP1 = 192.168.244.27
  • 1
  • 2
  • 3

6、创建日志目录

mkdir -p /data/logs/rocketmq
  • 1

7、启动namesrv

nohup sh bin/mqnamesrv > /data/logs/rocketmq/nameserver.log &
  • 1

查看启动日志

tail -500f /data/logs/rocketmq/nameserver.log
  • 1

在这里插入图片描述

9、启动broker

nohup sh bin/mqbroker -n localhost:9876 > /data/logs/rocketmq/broker.log &
  • 1

查看启动日志

tail -500f /data/logs/rocketmq/broker.log
  • 1

出现如下字样说明启动成功
在这里插入图片描述

10、如果需要关闭服务,通过如下指令关闭即可

./bin/mqshutdown namesrv
./bin/mqshutdown broker
  • 1
  • 2

2.2 放开服务器端口

11、开启端口,如果没有打开防火墙,则不用配置

firewall-cmd --add-port=10911/tcp --permanent
firewall-cmd --add-port=10909/tcp --permanent
firewall-cmd --add-port=9876/tcp --permanent
# 开启后重新加载
firewall-cmd --reload
  • 1
  • 2
  • 3
  • 4
  • 5

2.3 测试

12、通过消息发送代码测试一下,或者可以通过下文讲解的管理后台查看是否正常连接

发送代码见专栏其他文章讲解:集成java客户端实现各类消息发送|异步、同步、顺序、单向、延迟、事务(五)附带源码

在这里插入图片描述
消费也成功
在这里插入图片描述

2.4 安装rocketmq 控制台

docker pull apacherocketmq/rocketmq-dashboard:latest
docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
  • 1
  • 2
  • 方式二:源码编译安装

在rocketmq的拓展项目rocketmq-externals早期的版本中是包含了控制台项目rocketmq-console的,后单独抽取为独立项目rocketmq-dashboard了,提供 Broker 集群信息查看,Topic 管理,Producer、Consumer 信息展示,消息查询等等常用功能。所以我们可以通过下载项目源码进行编译:https://github.com/apache/rocketmq-dashboard))

1、下载源码
2、修改一下端口和namesever地址
在这里插入图片描述
3、maven打包(如果是直接在服务器上打包的,要记得提前安装maven)

mvn clean package -Dmaven.test.skip=true
  • 1

在这里插入图片描述

4、上传jar包到服务器,启动项目

nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &
  • 1

查看启动日志

tail -f nohup.out
  • 1

在这里插入图片描述

5、开通端口

firewall-cmd --add-port=9876/tcp --permanent
firewall-cmd --add-port=9888/tcp --permanent
firewall-cmd --add-port=10909/tcp --permanent
firewall-cmd --add-port=10911/tcp --permanent
firewall-cmd --reload
  • 1
  • 2
  • 3
  • 4
  • 5

6、访问 ip:9888
在这里插入图片描述
7、如果启动报错:remotingConnectException: connect to 192.168.244.50 :10909 failed
(1)这是要如上述所说在broker.conf中配置brokerIP1 = 192.168.244.50 ,然后放开10909端口,两者都做了后,先重启下namesever,然后再重启broker
(2)关闭isVIPChannel,默认是开通的vip通道的,而vip通过10909实现监控,我们可以通过页面上关闭vip通道
这里需要额外注意,如果关闭了vip通道,生产者和消费者中也要声明关闭

// 生产者关闭vip通道
producer.setVipChannelEnabled(false);

// 消费者关闭vip通道
consumer.setVipChannelEnabled(false);
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
8、如果访问报错org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 192.168.244.50 :10911 failed
(1)检查10911端口是否放开,如果没有将端口放开即可

3. 配置开机自启

3.1 配置namesrv开机自启

1、创建namesrv自启脚本

vi /etc/systemd/system/namesrv.service
  • 1

内容如下

[Unit]
Description=rocketmq nameserver
Documentation=namesrv
After=network.target

[Service]
Type=sample
User=root
ExecStart=/data/rocketmq-4.8.0/bin/mqnamesrv > /data/logs/rocketmq/nameserver.log 
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=0
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2、加载脚本,并添加到开机项

systemctl daemon-reload
systemctl enable namesrv.service
  • 1
  • 2

3、启动服务

注意:如果之前已经启动过,先通过ps指令查询进程id,然后通过kill -9杀掉进程后再用systemctl启动服务

ps -ef | grep namesrv
  • 1

在这里插入图片描述

kill -9 2298
  • 1
# 启动
systemctl start namesrv.service
# 停止
systemctl stop namesrv.service
# 查看服务状态
systemctl status namesrv.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.2 配置broker开机自启

创建自启脚本

vi /etc/systemd/system/broker.service
  • 1

脚本内容

[Unit]
Description=rocketmq broker
Documentation=broker
After=network.target

[Service]
Type=sample
User=root
ExecStart=/data/rocketmq-4.8.0/bin/mqbroker -c /data/rocketmq-4.8.0/conf/broker.conf > /data/logs/rocketmq/broker.log 
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=0
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2、加载脚本,并添加到开机项

systemctl daemon-reload
systemctl enable broker.service
  • 1
  • 2

3、启动服务

注意:如果之前已经启动过,先通过ps指令查询进程id,然后通过kill -9杀掉进程后再用systemctl启动服务

# 启动
systemctl start broker.service
# 停止
systemctl stop broker.service
# 查看服务状态
systemctl status broker.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结

综上,我们针对rocketmq的各类组件安装就讲解完成了,大家可以动手搭建起来,下文我们将继续讲解rocketmq的基础知识

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/877434
推荐阅读
相关标签
  

闽ICP备14008679号