RocketMQ双Master集群搭建

RocketMQ 的Git地址:https://github.com/apache/rocketmq

RocketMQ双Master集群搭建

在Apache RocketMQ官网下载源码,或者使用上面提供的github地址下载源码,并使用Apache RocketMQ官网提供的方式打包

mvn -Prelease-all -DskipTests clean install -U

RocketMQ双Master集群搭建

构建结果

RocketMQ双Master集群搭建

在源码文件distribution/target/apache-rocketmq的目录下,可以查看到打好的tar包

RocketMQ双Master集群搭建RocketMQ双Master集群搭建

本文要实现的是双Master模式的RocketMQ集群。两台Linux虚拟机分别为192.168.0.220、192.168.0.221。

192.168.0.220     NameServer      Broker

192.168.0.221     NameServer      Broker


修改220、221上的hosts

vi /etc/hosts

RocketMQ双Master集群搭建

service network restart   重启网络服务

确保两台机器相互之间是可以ping通的

RocketMQ双Master集群搭建

将apache-rocketmq.tar.gz上传到220、221两台机器上。在/usr/local下,新建rocketmq目录,并将tar包解压到该目录下。

tar -zxvf apache-rocketmq.tar.gz -C /usr/local/rocketmq/


创建存储路径

cd /usr/local/rocketmq

mkdir store

mkdir ./store/commitlog

mkdir ./store/consumequeue

mkdir ./store/index


修改220、221上的RocketMQ日志配置文件

mkdir /usr/local/rocketmq/logs

cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml


RocketMQ配置文件

RocketMQ双Master集群搭建

修改220节点上的配置文件

RocketMQ双Master集群搭建

下图中的配置与上面/usr/local/rocketmq/store下新建的存储路径对应

RocketMQ双Master集群搭建


ASYNC_FLUSH相对于SYNC_FLUSH来说,执行速度更快,但是在宕机的情况下,可能会出现少量的消息丢失。后者安全性更高,在宕机情况下不会出现消息丢失。

RocketMQ双Master集群搭建


修改221节点上的配置文件,同样也是修改broker-a.properties

RocketMQ双Master集群搭建


分别修改220、221节点上的broker-b.properties,其内容与自己所在节点上的broker-a.properties基本相同,唯一需要修改的是brokerName=broker-b


集群JVM调优

vim /usr/local/rocketmq/bin/runbroker.sh   设置Broker的JVM参数

RocketMQ双Master集群搭建

根据虚拟Linux的实际情况,设置为:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"


vim /usr/local/rocketmq/bin/runserver.sh   设置NameServer的JVM参数

RocketMQ双Master集群搭建

根据虚拟Linux的实际情况,设置为:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"


先启动NameServer,再启动Broker

在linux中nohup指令的用法

nohup program &  使进程在用户退出登录后仍旧继续执行,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守护进程功能。


在220、221机器上执行指令,启动NameServer

cd  /usr/local/rocketmq/bin

nohup sh mqnamesrv &

RocketMQ双Master集群搭建

查看nameserver的日志信息,确认220、221中NameServer启动成功。

cd  /usr/local/rocketmq/logs/rocketmqlogs

vi namesrv.log

RocketMQ双Master集群搭建

启动220上的BrokerServer A

cd  /usr/local/rocketmq/bin

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties autoCreateTopicEnable=true  >/dev/null 2>&1 &    

启动221机器上的BrokerServerB

cd  /usr/local/rocketmq/bin

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties  autoCreateTopicEnable=true  >/dev/null 2>&1 & 


查看220上的Broker启动日志信息

cd  /usr/local/rocketmq/logs/rocketmqlogs

vi broker.log

RocketMQ双Master集群搭建

RocketMQ双Master集群搭建

查看221上的Broker启动日志信息

RocketMQ双Master集群搭建

使用jps指令查看当前系统的Java进程

RocketMQ双Master集群搭建



RocketMQ管控台

在github上开源的RocketMQ扩展项目地址

https://github.com/apache/rocketmq-externals

RocketMQ双Master集群搭建

RocketMQ双Master集群搭建

进入rocketmq-console,点击README.md查看rocketmq-console注意事项

RocketMQ双Master集群搭建

提示信息


RocketMQ双Master集群搭建

下载该项目并导入到Eclipse,其中rocketmq-console即控制台项目。修改application.properties中的namesrvAddr

rocketmq.config.namesrvAddr=192.168.0.220:9876;192.168.0.221:9876

在命令行中进入到磁盘中rocketmq-console对应目录,执行mvn clean package -Dmaven.test.skip=true

RocketMQ双Master集群搭建

查看生成的jar包

RocketMQ双Master集群搭建


启动并查看rocketmq-console

在Windows的命令行中,执行如下指令

java  -jar  rocketmq-console-ng-1.0.0.jar

访问地址  http://127.0.0.1:8080

RocketMQ双Master集群搭建


RocketMQ双Master集群搭建

集群

RocketMQ双Master集群搭建


消息

RocketMQ双Master集群搭建