rocketmq部署
部署 RocketMQ 通常包括以下几个步骤,从简单的单机部署到生产级的集群部署,以下是详细步骤:
一、环境准备
- 操作系统:
-
Linux 是推荐的环境,但也支持 Windows。
-
依赖环境:
- JDK 1.8 或更高版本(Java 环境)。
- 配置
JAVA_HOME
环境变量。 -
确保服务器网络通畅,端口未被占用(默认
9876
为 NameServer 端口,10911
和10909
为 Broker 使用的端口)。 -
下载 RocketMQ:
-
从 RocketMQ 官方 GitHub 仓库 下载稳定版本的二进制包或源码。
-
解压并配置:
- 将下载的 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
查看是否有 NamesrvStartup
和 BrokerStartup
两个 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.properties
和 broker-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 &
四、测试部署
-
发送消息: 使用 RocketMQ 提供的工具发送测试消息。
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
-
接收消息: 接收测试消息。
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
五、可选配置(优化和高可用)
1. 日志配置
修改 logback_broker.xml
和 logback_namesrv.xml
中的日志级别和路径。
2. JVM 参数调整
根据服务器配置调整 runserver.sh
和 runbroker.sh
中的 JVM 参数:
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC"
3. 运维工具
RocketMQ 提供 Web 控制台,可以方便地管理和监控集群: - 下载:RocketMQ Dashboard - 部署并访问。
六、常见问题
- NameServer 无法连接:
- 检查
9876
端口是否开放。 -
确保
namesrvAddr
配置正确。 -
Broker 无法启动:
- 确保
storePathCommitLog
和storePathRootDir
有足够的权限。 -
检查 JVM 参数是否适配当前硬件。
-
高可用验证:
- 停止 Master Broker,测试 Slave 是否正常接管。