rocketmq部署启动指南

发布时间:2021-06-26 09:29:24 作者:chen
来源:亿速云 阅读:207
# RocketMQ部署启动指南

## 目录
1. [RocketMQ概述](#rocketmq概述)
2. [环境准备](#环境准备)
3. [单机模式部署](#单机模式部署)
   - [3.1 下载安装包](#31-下载安装包)
   - [3.2 目录结构解析](#32-目录结构解析)
   - [3.3 配置修改](#33-配置修改)
   - [3.4 启动NameServer](#34-启动nameserver)
   - [3.5 启动Broker](#35-启动broker)
4. [集群模式部署](#集群模式部署)
   - [4.1 多Master模式](#41-多master模式)
   - [4.2 多Master多Slave模式](#42-多master多slave模式)
5. [控制台部署](#控制台部署)
6. [生产环境调优建议](#生产环境调优建议)
7. [常见问题排查](#常见问题排查)
8. [附录](#附录)

---

## RocketMQ概述
Apache RocketMQ是一款开源的分布式消息中间件,具有以下核心特性:
- 低延迟:在高压下可实现毫秒级消息投递
- 高吞吐:单机支持10万级TPS
- 高可用:支持多副本机制和故障自动转移
- 分布式:支持水平扩展和亿级消息堆积能力
- 功能丰富:支持顺序消息、事务消息、定时消息等高级特性

典型应用场景包括:
- 应用解耦
- 异步通信
- 流量削峰
- 日志收集
- 消息分发

## 环境准备

### 硬件要求
| 角色        | 最低配置                | 推荐配置                |
|------------|-------------------------|-------------------------|
| NameServer | 2核CPU/4GB内存/50GB存储 | 4核CPU/8GB内存/100GB存储|
| Broker     | 4核CPU/8GB内存/500GB存储| 8核CPU/16GB内存/1TB存储 |

### 软件要求
- 操作系统:Linux/Unix(CentOS 7+或Ubuntu 16.04+)
- JDK:1.8+(推荐OpenJDK 11)
- Maven:3.2+(仅源码编译需要)
- 磁盘:建议SSD,EXT4/XFS文件系统

### 网络要求
- 确保服务器间网络互通
- 开放以下默认端口:
  - NameServer:9876
  - Broker:10909(VIP端口),10911(主端口),10912(从端口)

## 单机模式部署

### 3.1 下载安装包
```bash
# 下载最新二进制包(以4.9.4为例)
wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
unzip rocketmq-all-4.9.4-bin-release.zip
cd rocketmq-all-4.9.4-bin-release

3.2 目录结构解析

bin/        # 启动脚本
conf/       # 配置文件
lib/        # 依赖库
logs/       # 日志目录
store/      # 消息存储目录(自动创建)

3.3 配置修改

编辑conf/broker.conf

# Broker标识(需唯一)
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0

# 存储配置
storePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog

# NameServer地址
namesrvAddr=127.0.0.1:9876

# 内存配置(根据机器配置调整)
sendMessageThreadPoolNums=16
pullMessageThreadPoolNums=32

3.4 启动NameServer

# 启动NameServer(前台运行)
nohup sh bin/mqnamesrv &

# 验证启动
tail -f ~/logs/rocketmqlogs/namesrv.log
# 看到"The Name Server boot success"表示成功

3.5 启动Broker

# 指定配置文件启动
nohup sh bin/mqbroker -c conf/broker.conf &

# 验证启动
tail -f ~/logs/rocketmqlogs/broker.log 
# 看到"The broker[broker-a, 192.168.1.100:10911] boot success"表示成功

# 测试消息发送
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

集群模式部署

4.1 多Master模式

架构特点: - 所有节点都是Master - 配置简单,性能最高 - 单点故障会导致部分消息不可用

部署步骤(以2节点为例): 1. 修改每台机器的broker.conf

   # 节点1配置
   brokerClusterName=DefaultCluster
   brokerName=broker-a
   brokerId=0
   
   # 节点2配置
   brokerClusterName=DefaultCluster
   brokerName=broker-b
   brokerId=0
  1. 启动所有NameServer(建议至少2个)

  2. 在各节点启动Broker: “`bash

    节点1

    nohup sh bin/mqbroker -c conf/broker.conf -n “ns1:9876;ns2:9876” &

# 节点2 nohup sh bin/mqbroker -c conf/broker.conf -n “ns1:9876;ns2:9876” &


### 4.2 多Master多Slave模式
架构特点:
- 每个Master配置1个Slave
- 支持同步/异步复制
- 自动故障转移,可用性高

部署示例(2M-2S):
1. Master配置:
   ```properties
   # master-a配置
   brokerRole=SYNC_MASTER
   flushDiskType=ASYNC_FLUSH
   
   # master-b配置
   brokerRole=SYNC_MASTER
   flushDiskType=ASYNC_FLUSH
  1. Slave配置: “`properties

    slave-a配置

    brokerRole=SLAVE brokerName=broker-a brokerId=1

# slave-b配置 brokerRole=SLAVE brokerName=broker-b brokerId=1


3. 启动顺序:
   ```bash
   # 先启动NameServer
   # 再启动所有Master
   # 最后启动Slave

控制台部署

RocketMQ官方提供可视化控制台:

# 下载控制台
git clone https://github.com/apache/rocketmq-dashboard.git
cd rocketmq-dashboard

# 修改配置
vim src/main/resources/application.yml
# 配置namesrvAddr和端口

# 打包运行
mvn clean package -Dmaven.test.skip=true
java -jar target/rocketmq-dashboard-1.0.0.jar

访问http://ip:8080即可查看: - 集群状态 - Topic管理 - 消息轨迹 - 消费者组信息

生产环境调优建议

JVM参数优化

# NameServer示例(bin/runserver.sh)
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g"
JAVA_OPT="${JAVA_OPT} -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

# Broker示例(bin/runbroker.sh)
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m"

操作系统优化

# 内核参数
echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
echo 'fs.file-max=655350' >> /etc/sysctl.conf
sysctl -p

# 文件描述符
ulimit -n 655350

存储优化

  1. 使用SSD并单独挂载数据目录
  2. 关闭atime更新:
    
    mount -o remount,noatime /data
    
  3. 建议CommitLog目录单独挂载

常见问题排查

启动失败问题

  1. 端口冲突

    netstat -tunlp | grep 9876
    kill -9 <PID>
    
  2. 磁盘空间不足

    df -h
    # 清理日志或扩容存储
    
  3. JDK版本不兼容

    java -version
    # 确保使用JDK 1.8+
    

生产消费问题

  1. 消息堆积

    • 增加消费者实例
    • 调整消费线程数:consumer.setConsumeThreadMin(20)
  2. 消息重复

    • 实现幂等消费逻辑
    • 开启消息轨迹追踪

附录

常用命令

# 查看Broker状态
sh bin/mqadmin clusterList -n 127.0.0.1:9876

# 创建Topic
sh bin/mqadmin updateTopic -n 127.0.0.1:9876 -b 127.0.0.1:10911 -t TestTopic

# 查看消费进度
sh bin/mqadmin consumerProgress -n 127.0.0.1:9876 -g ConsumerGroup

参考资源

注:本文基于RocketMQ 4.9.4版本编写,不同版本可能存在配置差异,请以官方文档为准。 “`

该指南包含约4300字,采用标准的Markdown格式编写,包含: 1. 完整的部署流程(单机/集群) 2. 配置优化建议 3. 问题排查方法 4. 可视化控制台部署 5. 生产环境调优方案

可根据实际环境调整配置参数和部署架构。建议部署前仔细阅读官方Release Notes获取版本特定说明。

推荐阅读:
  1. RocketMQ 集群部署
  2. oVirt新手部署指南

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rocketmq

上一篇:Spring初始化Bean的使用方法

下一篇:js如何实现下拉菜单点击旁边收起效果

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》