2c4g服务器部署rocketmq?

2核4G(2c4g)的服务器 上部署 RocketMQ 是可行的,但需要根据资源限制进行适当调整和优化。以下是详细的部署步骤和注意事项:


📌 一、环境准备

1. 操作系统

推荐使用 Linux 系统(如 CentOS、Ubuntu),因为 RocketMQ 原生支持 Linux。

2. Java 环境

RocketMQ 需要 Java 8 或以上版本。

java -version

如果没有安装 Java,可以使用如下命令安装(以 Ubuntu 为例):

sudo apt update
sudo apt install openjdk-8-jdk -y

设置 JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

📌 二、下载 RocketMQ

从 Apache 官网 下载合适版本(推荐使用稳定版):

wget https://archive.apache.org/dist/rocketmq/4.9.4/apache-rocketmq-all-bin-release.zip
unzip apache-rocketmq-all-bin-release.zip -d /usr/local/rocketmq

📌 三、启动 NameServer 和 Broker

1. 启动 NameServer(默认内存配置可能过高)

由于是 2c4G 的机器,建议降低 JVM 内存参数。

修改启动脚本中的 JVM 参数(避免 OOM):

cd /usr/local/rocketmq/bin
vim runserver.sh

修改以下内容(根据你的实际路径):

# 原来可能是:
JAVA_OPT="${JAVA_OPT} -Xms4g -Xmx4g"

# 修改为:
JAVA_OPT="${JAVA_OPT} -Xms256m -Xmx256m"

然后启动 NameServer:

nohup ./mqnamesrv &

查看日志确认是否启动成功:

tail -f logs/startup.log

2. 启动 Broker

同样修改 runbroker.sh 中的 JVM 参数:

vim runbroker.sh

将:

JAVA_OPT="${JAVA_OPT} -Xms8g -Xmx8g"

改为:

JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m"

然后启动 Broker(单机模式):

nohup ./mqbroker -n localhost:9876 -c ../conf/broker.conf &

如果出现内存不足问题,还可以进一步调小 -Xms-Xmx,比如到 256m。


📌 四、解决本地 IP 问题(关键!)

RocketMQ 默认会使用本地网卡 IP 注册,但在云服务器中可能会注册成内网 IP,导致客户端无法连接。

解决方法:在 broker.conf 中添加:

brokerIP1=你的公网IP

同时关闭自动注册本机 IP:

useLocalIP=false

也可以在启动命令中指定:

./mqbroker -n localhost:9876 -c ../conf/broker.conf -b 你的公网IP:10911

📌 五、测试生产与消费消息

RocketMQ 自带了示例生产者和消费者程序,可以测试是否正常工作。

设置环境变量(可选):

export NAMESRV_ADDR=localhost:9876

生产消息:

export NAMESRV_ADDR=localhost:9876
./tools.sh org.apache.rocketmq.example.quickstart.Producer

消费消息:

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

📌 六、常见问题与优化建议

❗1. 内存不足(OOM)

  • 调整 runserver.shrunbroker.sh 中的 JVM 参数。
  • 可以考虑使用更轻量级的消息队列(如 ActiveMQ Artemis)用于低配服务器。

❗2. 磁盘空间不足

  • RocketMQ 默认会写入大量日志文件,建议定期清理或挂载大容量磁盘。
  • 修改存储路径(在 broker.conf 中):
storePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog

❗3. 不允许X_X访问

  • 检查防火墙设置,确保开放端口:
    • 9876(NameServer)
    • 10911(Broker)
    • 10909(Broker HA)

✅ 七、总结

项目 推荐值
NameServer JVM 内存 -Xms256m -Xmx256m
Broker JVM 内存 -Xms512m -Xmx512m
存储目录 自定义路径(如 /data/rocketmq/store
是否适合生产? 单节点不建议用于高并发生产环境,可用于开发测试或低频业务

如果你有更多需求,例如集群部署、Docker 化部署、持久化、监控等,我也可以继续为你提供详细方案。欢迎继续提问!

未经允许不得转载:秒懂云 » 2c4g服务器部署rocketmq?