在Linux环境下安装MQ(以RocketMQ 7.0为例)需要经过环境准备、软件下载、配置部署、服务启动及验证测试等步骤,以下是详细操作流程:
环境准备
在安装RocketMQ 7.0前,需确保系统满足基础要求,具体如下表所示:
组件 | 要求 |
---|---|
操作系统 | CentOS 7.4+、Ubuntu 20.04 LTS等主流Linux发行版 |
JDK版本 | 8+(推荐OpenJDK 11,可通过java -version 检查) |
磁盘空间 | 至少10GB(存储日志与消息数据) |
端口 | Name Server默认9876、Broker默认10911(监听端口)、10912(快照端口) |
依赖安装(以CentOS为例):
# 安装OpenJDK 11 yum install -y java-11-openjdk-devel # 验证Java版本 java -version
安装步骤
创建安装目录与专用用户
为提升安全性,建议创建非root用户运行RocketMQ:
# 创建mq用户 useradd -m -s /bin/bash mq # 创建安装目录 mkdir -p /opt/rocketmq chown -R mq:mq /opt/rocketmq
下载RocketMQ 7.0安装包
从官方GitHub仓库下载二进制压缩包(以Linux 64位为例):
# 切换至mq用户 su - mq # 下载安装包(也可手动下载后上传至服务器) wget https://github.com/apache/rocketmq/releases/download/rocketmq-all-7.0.0/rocketmq-all-7.0.0-bin-release.zip # 解压至安装目录 unzip rocketmq-all-7.0.0-bin-release.zip -d /opt/rocketmq/ mv /opt/rocketmq/rocketmq-all-7.0.0-bin-release /opt/rocketmq/rocketmq-7.0.0
配置环境变量
编辑/etc/profile
文件,添加RocketMQ全局环境变量:
vi /etc/profile
在文件末尾添加以下内容:
export ROCKETMQ_HOME=/opt/rocketmq/rocketmq-7.0.0 export PATH=$PATH:$ROCKETMQ_HOME/bin
使配置生效:
source /etc/profile
修改核心配置文件
RocketMQ的核心配置为broker.conf
,需根据实际需求调整参数:
# 复制配置模板 cp $ROCKETMQ_HOME/conf/broker.conf.example $ROCKETMQ_HOME/conf/broker.conf # 编辑配置文件 vi $ROCKETMQ_HOME/conf/broker.conf
关键参数说明及修改建议:
# 集群名称 brokerClusterName=DefaultCluster # Broker名称,同一集群内需唯一 brokerName=broker-a # Broker ID,0表示Master,>0表示Slave brokerId=0 # Name Server地址,多个地址以分号分隔 namesrvAddr=localhost:9876 # 存储路径,建议使用独立磁盘 storePathRootDir=/opt/rocketmq/store # commitLog文件大小限制(默认1GB) mapedFileSizeCommitLog=1073741824 # 消息刷盘策略:ASYNC_FLUSH(异步刷盘)、SYNC_FLUSH(同步刷盘) flushDiskType=ASYNC_FLUSH # 是否允许自动创建Topic,生产环境建议关闭 autoCreateTopicEnable=false # 是否允许自动创建订阅组,生产环境建议关闭 autoCreateSubscriptionGroup=false # Broker对外监听地址,0.0.0.0表示所有网卡 listenAddr=0.0.0.0
启动服务
RocketMQ需先启动Name Server,再启动Broker,具体步骤如下:
(1)启动Name Server
nohup sh $ROCKETMQ_HOME/bin/mqnamesrv > /opt/rocketmq/logs/namesrv.log 2>&1 &
验证:检查日志tail -f /opt/rocketmq/logs/namesrv.log
,若出现The Name Server boot success...
则启动成功。
(2)启动Broker
nohup sh $ROCKETMQ_HOME/bin/mqbroker -c $ROCKETMQ_HOME/conf/broker.conf > /opt/rocketmq/logs/broker.log 2>&1 &
验证:检查日志tail -f /opt/rocketmq/logs/broker.log
,若出现The broker[broker-a, 10.0.0.1:10911] boot success...
则启动成功。
验证安装
使用RocketMQ提供的命令行工具测试消息发送与消费:
(1)发送消息
sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
若输出类似SendResult [sendStatus=SEND_OK, msgId=...]
,则发送成功。
(2)消费消息
sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
若输出类似Consume message[msgId=...] body: Hello RocketMQ!
,则消费成功。
常用管理命令
- 查看进程:
ps -ef | grep rocketmq
- 停止Name Server:
sh $ROCKETMQ_HOME/bin/mqshutdown namesrv
- 停止Broker:
sh $ROCKETMQ_HOME/bin/mqshutdown broker
- 查看端口占用:
netstat -tunlp | grep 9876
(Name Server)
相关问答FAQs
问题1:启动Broker时报错“java.net.BindException: Address already in use”,如何解决?
解答:该错误通常因端口被占用导致,可通过以下步骤排查:
- 检查端口占用情况:
netstat -tunlp | grep 10911
(Broker监听端口); - 若端口被占用,可通过
kill -9 <PID>
杀死占用进程; - 若需修改端口,编辑
broker.conf
,调整listenPort
参数(如listenPort=10913
),重启Broker即可。
问题2:如何设置RocketMQ开机自启?
解答:可通过创建systemd
服务实现开机自启,以Name Server为例:
-
创建服务文件:
vi /etc/systemd/system/rocketmq-namesrv.service
,写入以下内容:[Unit] Description=RocketMQ Name Server After=network.target [Service] User=mq Group=mq ExecStart=$ROCKETMQ_HOME/bin/mqnamesrv ExecStop=$ROCKETMQ_HOME/bin/mqshutdown namesrv LimitNOFILE 65536 [Install] WantedBy=multi-user.target
-
重新加载systemd配置:
systemctl daemon-reload
; -
启用开机自启:
systemctl enable rocketmq-namesrv
; -
启动服务:
systemctl start rocketmq-namesrv
。
Broker服务同理,创建rocketmq-broker.service
文件并配置ExecStart
为Broker启动命令即可。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/23144.html