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

目录

  • [0. 引言](#0. 引言)
  • [1. 下载安装包](#1. 下载安装包)
    • [1.1 高版本直接下载安装包](#1.1 高版本直接下载安装包)
    • [1.2 下载源码包进行编译](#1.2 下载源码包进行编译)
  • [2. namesrv和broker安装](#2. namesrv和broker安装)
    • [2.1 安装](#2.1 安装)
    • [2.2 放开服务器端口](#2.2 放开服务器端口)
    • [2.3 测试](#2.3 测试)
  • [3. 配置开机自启](#3. 配置开机自启)
    • [3.1 配置namesrv开机自启](#3.1 配置namesrv开机自启)
    • [3.2 配置broker开机自启](#3.2 配置broker开机自启)

0. 引言

之前我们针对本机电脑安装rocketmq进行了讲解,同时对rocketmq的核心原理和常用方法进行了演示,接下来我们继续从部署架构层来讲解rocketmq的可用性保障,但在搭建rocketmq集群之前,我们先对linux环境下的单机服务搭建进行讲解

1. 下载安装包

环境准备:jdk1.8(大家提前在linux上安装jdk, 这里不再单独说明)

1.1 高版本直接下载安装包

1、下载安装包

rocketmq4.9.5 版本及以上的的可以通过以下地址下载安装包
https://dist.apache.org/repos/dist/release/rocketmq/

在服务器上通过wget指令即可下载,注意"bin"字样的是编译好的安装包,"source"字样的是源码包,源码包还要自己编译才能进行安装,编译教程参考下文

shell 复制代码
wget https://dist.apache.org/repos/dist/release/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip

1.2 下载源码包进行编译

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

1、对于4.9.5以下的版本,就需要我们自己下载源码包进行编译

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

服务器上可以通过wget直接下载

shell 复制代码
wget https://github.com/apache/rocketmq/archive/refs/tags/rocketmq-all-4.8.0.zip

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

shell 复制代码
yum update
yum install maven

检查安装版本

shell 复制代码
mvn -v

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

shell 复制代码
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

4、该目录下的rocketmq-4.8.0.tar.gz和rocketmq-4.8.0.zip就是编译好的安装包。我们将安装包复制到安装目录下即可

2. namesrv和broker安装

2.1 安装

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

2、解压安装包

shell 复制代码
unzip rocketmq-4.8.0.zip

rocketmq的安装实际上安装启动namesrv和broker,如果不清楚这两者间的关系和作用的,可以查看专栏之前的文章
RocketMQ快速入门:namesrv、broker、dashboard的作用及消息发送、消费流程(三)

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

shell 复制代码
cd rocketmq-4.8.0
vim bin/runserver.sh

(1) 调整JAVA_HOME为自己的java安装目录

(2)如果需要调整namesrv占用内存的也可在此处调整

4、同样的修改runbroker脚本

shell 复制代码
vim bin/runbroker.sh

除了修改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配置文件

shell 复制代码
vim conf/broker.conf 

添加内容:

shell 复制代码
namesrvAddr = 192.168.244.27:9876 # 填服务器ip, 如有公网ip填公网ip
autoCreateTopicEnable = true # 开启topic自动创建
brokerIP1 = 192.168.244.27

6、创建日志目录

shell 复制代码
mkdir -p /data/logs/rocketmq

7、启动namesrv

shell 复制代码
nohup sh bin/mqnamesrv > /data/logs/rocketmq/nameserver.log &

查看启动日志

shell 复制代码
tail -500f /data/logs/rocketmq/nameserver.log

9、启动broker

shell 复制代码
nohup sh bin/mqbroker -n localhost:9876 > /data/logs/rocketmq/broker.log &

查看启动日志

shell 复制代码
tail -500f /data/logs/rocketmq/broker.log

出现如下字样说明启动成功

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

shell 复制代码
./bin/mqshutdown namesrv
./bin/mqshutdown broker

2.2 放开服务器端口

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

shell 复制代码
firewall-cmd --add-port=10911/tcp --permanent
firewall-cmd --add-port=10909/tcp --permanent
firewall-cmd --add-port=9876/tcp --permanent
# 开启后重新加载
firewall-cmd --reload

2.3 测试

12、通过之前文章中书写的消息发送代码测试一下

消费也成功

3. 配置开机自启

3.1 配置namesrv开机自启

1、创建namesrv自启脚本

shell 复制代码
vi /etc/systemd/system/namesrv.service

内容如下

shell 复制代码
[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

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

shell 复制代码
systemctl daemon-reload
systemctl enable namesrv.service

3、启动服务

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

shell 复制代码
ps -ef | grep namesrv
shell 复制代码
kill -9 2298
shell 复制代码
# 启动
systemctl start namesrv.service
# 停止
systemctl stop namesrv.service
# 查看服务状态
systemctl status namesrv.service

3.2 配置broker开机自启

创建自启脚本

shell 复制代码
vi /etc/systemd/system/broker.service

脚本内容

shell 复制代码
[Unit]
Description=rocketmq broker
Documentation=broker
After=network.target

[Service]
Type=sample
User=root
ExecStart=/data/rocketmq-4.8.0/bin/mqbroker -n localhost:9876 /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

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

shell 复制代码
systemctl daemon-reload
systemctl enable broker.service

3、启动服务

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

shell 复制代码
# 启动
systemctl start broker.service
# 停止
systemctl stop broker.service
# 查看服务状态
systemctl status broker.service
相关推荐
蜜獾云1 分钟前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
小屁不止是运维2 分钟前
麒麟操作系统服务架构保姆级教程(五)NGINX中间件详解
linux·运维·服务器·nginx·中间件·架构
Hacker_Oldv7 分钟前
WPS 认证机制
运维·服务器·wps
bitcsljl15 分钟前
Linux 命令行快捷键
linux·运维·服务器
ac.char18 分钟前
在 Ubuntu 下使用 Tauri 打包 EXE 应用
linux·运维·ubuntu
Cachel wood38 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Youkiup1 小时前
【linux 常用命令】
linux·运维·服务器
qq_297504611 小时前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
_oP_i1 小时前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_437398211 小时前
Linux扩展——shell编程
linux·运维·服务器·bash