rocketmq多主多从同步写盘部署实战

由于线上消息队列一直使用的阿里云的ons而且价格比较昂贵,所以就萌生了放弃阿里云服务的想法自己搭建。但是因为原来已经使用的阿里云ons,加上开发在换用消息队列的学习成本。综合考虑使用了rocketmq,本文主要涉及涉及rocketmq的部署实战,后面会进一步分享原理方面。
系统版本:centos 7.3 (centos 6也是可以的)
maven版本:3.5.0
JDK版本: 1.8.0_111
git版本: 1.8.3
rocketmq版本:3.5.8
官网地址: https://github.com/alibaba/RocketMQ/releases/tag/v3.5.8
为了节约机器,我这里只用了三台。实际如果在线上为了高可用可以准备7台Linux服务器,尽可能的在每个服务器上部署一个服务。当然,在实际工作中如果服务器数量不足,那么可以同一台机器部署两个节点,比如:broker-a的主节点与broker-b的从节点部署在一台服务器,broker-a的从节点与broker-b的主节点部署在一台服务器,这样也会节省一些资源,同样也能达到相对的高可用的效果。

下载软件就不说了,这里直接说明安装过程:
# 主机名解析添加到hosts修改,否则后面启动会报错。

实际就是,指向export ROCKETMQ_HOME=/opt/rocketmq/devenv。
启动RocketMQ
修改默认配置
由于RocketMQ默认配置要求很高,比如内存至少就要4个G,开发调试环境根本吃不消,所以我们开始启动前需要先修改这些参数。否则的话,我们很有会遇到内存分配或者不够的问题。
# cd /opt/rocketmq/devenv
# 修改 runserver.sh,该文件为mqnamesrv的启动脚本。

# 配置中从文件

# borker-a-s的配置文件

# broker-b-master

# borker-b-s配置

#启动namesrv服务
分别在ip1,ip2,ip3机器上启动namesrv服务
nohup sh bin/mqnamesrv &
启动broker主节点或从节点
在服务器上启动broker主节点:

在服务器上启动broker从节点:

常见问题总结:
注意启动时报错如下:

这个错误前两个错误,是因为在java 8中,已经去除了,PermSize和MaxPermSize这2个参数,直接在runserver.sh,和runbroker.sh
Could not find or load main class,是因为环境变量添加的方式不对,使用我上文方式echo "ROCKETMQ_HOME=pwd" >> ~/.bash_profile,即可。

添加hosts解析就好了。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: