简介:本文详细介绍了在单机环境下部署RocketMQ集群的完整流程,包括环境准备、配置优化、集群启动与验证等关键步骤,并提供了常见问题解决方案和性能优化建议,帮助开发者快速搭建高可用的RocketMQ集群环境。
RocketMQ作为阿里巴巴开源的分布式消息中间件,凭借其高吞吐、低延迟和高可用的特性,已成为企业级应用的首选消息队列解决方案。在实际开发中,我们经常需要在单机环境下模拟集群部署,用于开发测试或学习研究。本文将详细介绍如何在单机环境下部署RocketMQ集群,涵盖从环境准备到验证测试的全流程。
虽然是在单机部署,但仍建议满足以下最低配置:
可从官网或GitHub获取最新版本:
wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zipunzip rocketmq-all-4.9.4-bin-release.zipcd rocketmq-4.9.4
在单机部署集群时,我们需要模拟多节点环境。典型的RocketMQ集群包含以下角色:
创建多个NameServer配置文件,以模拟集群环境:
# 创建NameServer1配置mkdir -p /tmp/rocketmq/namesrv1/confecho "listenPort=9876" > /tmp/rocketmq/namesrv1/conf/namesrv.properties# 创建NameServer2配置mkdir -p /tmp/rocketmq/namesrv2/confecho "listenPort=9877" > /tmp/rocketmq/namesrv2/conf/namesrv.properties
我们以2m-2s架构为例,配置两个Broker组:
Master节点配置(broker-a.properties):
brokerClusterName=DefaultClusterbrokerName=broker-abrokerId=0deleteWhen=04fileReservedTime=48brokerRole=SYNC_MASTERflushDiskType=ASYNC_FLUSHlistenPort=10911storePathRootDir=/tmp/rocketmq/store-astorePathCommitLog=/tmp/rocketmq/store-a/commitlognamesrvAddr=127.0.0.1:9876;127.0.0.1:9877
Slave节点配置(broker-a-s.properties):
brokerClusterName=DefaultClusterbrokerName=broker-abrokerId=1deleteWhen=04fileReservedTime=48brokerRole=SLAVEflushDiskType=ASYNC_FLUSHlistenPort=11011storePathRootDir=/tmp/rocketmq/store-a-sstorePathCommitLog=/tmp/rocketmq/store-a-s/commitlognamesrvAddr=127.0.0.1:9876;127.0.0.1:9877
类似地配置broker-b和broker-b-s。
nohup sh bin/mqnamesrv -c /tmp/rocketmq/namesrv1/conf/namesrv.properties > /tmp/namesrv1.log 2>&1 &nohup sh bin/mqnamesrv -c /tmp/rocketmq/namesrv2/conf/namesrv.properties > /tmp/namesrv2.log 2>&1 &
# 启动Broker组1nohup sh bin/mqbroker -c /tmp/rocketmq/conf/broker-a.properties > /tmp/broker-a.log 2>&1 &nohup sh bin/mqbroker -c /tmp/rocketmq/conf/broker-a-s.properties > /tmp/broker-a-s.log 2>&1 &# 启动Broker组2nohup sh bin/mqbroker -c /tmp/rocketmq/conf/broker-b.properties > /tmp/broker-b.log 2>&1 &nohup sh bin/mqbroker -c /tmp/rocketmq/conf/broker-b-s.properties > /tmp/broker-b-s.log 2>&1 &
jps -l | grep -E 'NamesrvStartup|BrokerStartup'
sh bin/mqadmin clusterList -n 127.0.0.1:9876
# 发送消息sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer# 接收消息sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
通过本文的详细指导,开发者可以在单机环境下成功部署RocketMQ集群,模拟真实生产环境进行开发和测试。这种部署方式虽然不能完全替代分布式部署,但对于学习RocketMQ原理、开发测试以及小型项目验证都具有重要价值。在实际应用中,建议根据业务需求灵活调整配置参数,以达到最佳性能。