跳转至

rocketmq部署

部署 RocketMQ 通常包括以下几个步骤,从简单的单机部署到生产级的集群部署,以下是详细步骤:


一、环境准备

  1. 操作系统
  2. Linux 是推荐的环境,但也支持 Windows。

  3. 依赖环境

  4. JDK 1.8 或更高版本(Java 环境)。
  5. 配置 JAVA_HOME 环境变量。
  6. 确保服务器网络通畅,端口未被占用(默认 9876 为 NameServer 端口,1091110909 为 Broker 使用的端口)。

  7. 下载 RocketMQ

  8. RocketMQ 官方 GitHub 仓库 下载稳定版本的二进制包或源码。

  9. 解压并配置

  10. 将下载的 RocketMQ 解压到指定目录。

二、单机部署

1. 启动 NameServer

NameServer 是 RocketMQ 的服务发现组件,负责管理 Broker 信息。

# 进入 RocketMQ 目录
cd rocketmq-all-<version>/bin

# 启动 NameServer
nohup sh mqnamesrv > logs/nameserver.log 2>&1 &

2. 启动 Broker

Broker 是消息的存储和转发组件。

# 启动 Broker
nohup sh mqbroker -n localhost:9876 > logs/broker.log 2>&1 &

参数说明: - -n localhost:9876:指定 NameServer 地址。 - logs/broker.log:日志文件路径。

3. 验证服务

使用 jps 查看是否有 NamesrvStartupBrokerStartup 两个 Java 进程运行。

jps

三、集群部署(推荐生产环境使用)

1. 部署架构

集群部署一般包括: - 多个 NameServer:提高 NameServer 的可用性。 - 多个 Broker: - Master-Slave 模式:实现高可用(推荐)。 - 多 Master 模式:实现更高的吞吐量。


2. 配置 NameServer

在每台 NameServer 节点上执行以下步骤:

nohup sh mqnamesrv > logs/nameserver.log 2>&1 &

3. 配置 Broker

为每个 Broker 节点创建独立的配置文件,例如 broker-a.propertiesbroker-b.properties,示例如下:

Master 配置文件(broker-a.properties)

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0 # Master
namesrvAddr=<nameserver1_ip>:9876;<nameserver2_ip>:9876
storePathRootDir=/path/to/store
storePathCommitLog=/path/to/commitlog

Slave 配置文件(broker-a-s.properties)

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1 # Slave
namesrvAddr=<nameserver1_ip>:9876;<nameserver2_ip>:9876
storePathRootDir=/path/to/store-slave
storePathCommitLog=/path/to/commitlog-slave

启动 Broker:

nohup sh mqbroker -c conf/broker-a.properties > logs/broker-a.log 2>&1 &
nohup sh mqbroker -c conf/broker-a-s.properties > logs/broker-a-s.log 2>&1 &


四、测试部署

  1. 发送消息: 使用 RocketMQ 提供的工具发送测试消息。

    sh tools.sh org.apache.rocketmq.example.quickstart.Producer

  2. 接收消息: 接收测试消息。

    sh tools.sh org.apache.rocketmq.example.quickstart.Consumer


五、可选配置(优化和高可用)

1. 日志配置

修改 logback_broker.xmllogback_namesrv.xml 中的日志级别和路径。

2. JVM 参数调整

根据服务器配置调整 runserver.shrunbroker.sh 中的 JVM 参数:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC"

3. 运维工具

RocketMQ 提供 Web 控制台,可以方便地管理和监控集群: - 下载:RocketMQ Dashboard - 部署并访问。


六、常见问题

  1. NameServer 无法连接
  2. 检查 9876 端口是否开放。
  3. 确保 namesrvAddr 配置正确。

  4. Broker 无法启动

  5. 确保 storePathCommitLogstorePathRootDir 有足够的权限。
  6. 检查 JVM 参数是否适配当前硬件。

  7. 高可用验证

  8. 停止 Master Broker,测试 Slave 是否正常接管。