MQ集群搭建

以下所有的服务器地址为当前所使用的服务器IP地址。

以下所有的路径需要改为当前所安装的路径。

1.环境准备

两台linux服务器(CentOS7)

openJDK 1.8

maven非必须

ssh工具 finalshell

部署结构如下:


2.搭建步骤

2.1 首先两台服务器都需要下载rocketMq。包为rocketmq-all-4.6.1-bin-release.zip,下载好后使用unzip命令进行解压,并重命名为rocketMq

2.2 然后两台linux服务器都需要配置环境变量,包括java、rocketMQ。

2.3rocketmq提供多种管理方式,命令行和界面等,

apache提供一个开源的扩展项目: https://github.com/apache/rocketmq-externals 里面包含一个子项目rocketmq-console,配置下,打个包就可以用了。

最好将rocketmq-console和rocketMq放在同一个目录下。

最后的目录结构为下图所示:

2.4 进入节点一下的rocketMq下的conf文件夹

选择采用主从异步的方式,所以再进入2m-2s-async文件夹;角色broker-a.properties、broker-b-s.properties

vimbroker-a.properties:

#所属集群名字

brokerClusterName=sns-rocket-mq-cluster

#broker名字,注意此处不同的配置文件填写的不一样

brokerName=10.16.148.58

#brokerId 0 表示 Master,>0 表示 Slave

brokerId=0

# Broker 对外服务的监听端口

listenPort=10911

#nameServer地址,分号分割

namesrvAddr=10.16.148.58:9876;10.16.148.59:9876

# 删除文件时间点,默认凌晨 4点

deleteWhen=04

#文件保留时间,默认 48 小时

fileReservedTime=72

#Broker role有3种:SYNC MASTER、ASYNC MASTER、SLAVE。关键词SYNC和ASYNC表示Master和Slave之间同步消息的机制,SYNC即同步更新,指当Slave和Master消息同步完成后,再返回发送成功的状态。ASYNC即异步更新,master与slave有短暂消息延迟,毫秒级。本文在此使用了异步复制集群模式,线上环境推荐使用同步双写模式,即SYNC_MASTER

brokerRole=ASYNC_MASTER

# 刷盘方式 ASYNC_FLUSH 异步刷盘

flushDiskType=ASYNC_FLUSH

#存储路径

storePathRootDir=../rocketmq/store/rootdir-a

storePathCommitLog=../rocketmq/store/commitlog-a

# 是否允许 Broker 自动创建Topic

autoCreateTopicEnable=true

# 是否允许 Broker 自动创建订阅组

autoCreateSubscriptionGroup=true

再vim broker-b-s.properties

brokerClusterName=sns-rocket-mq-cluster

brokerName=127.0.0.1

listenPort=10921

namesrvAddr=127.0.0.1:9876;127.0.0.2:9876

brokerId=1

deleteWhen=04

fileReservedTime=72

brokerRole=SLAVE

storePathRootDir=../rocketmq/store/rootdir-b-s

storePathCommitLog=../rocketmq/store/commitlog-b-s

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

flushDiskType=ASYNC_FLUSH

2.5 进入节点二下的rocketMq下的conf文件夹;角色broker-b.properties、broker-a-s.properties

vim broker-b.properties;

brokerClusterName=sns-rocket-mq-cluster

brokerName=127.0.0.1

brokerIP1=127.0.0.1

brokerId=0

listenPort=10911

namesrvAddr=127.0.0.1:9876;10.127.0.0.1:9876

deleteWhen=04

fileReservedTime=72

brokerRole=ASYNC_MASTER

storePathRootDir=../rocketmq/store/rootdir-b

storePathCommitLog=../rocketmq/store/commitlog-b

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

flushDiskType=ASYNC_FLUSH

再vim broker-a-s.properties

brokerClusterName=sns-rocket-mq-cluster

brokerName=127.0.0.1

listenPort=10921

namesrvAddr=127.0.0.1:9876;10.127.0.0.1:9876

brokerId=1

deleteWhen=04

fileReservedTime=72

brokerRole=SLAVE

storePathRootDir=../rocketmq/store/rootdir-a-s

storePathCommitLog=../rocketmq/store/commitlog-a-s

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

flushDiskType=ASYNC_FLUSH

自此,配置文件已修改完成。store文件夹以及它下面的文件夹都需要在两台服务器上手动创建一下。

并且需要创建一个日志文件夹。mkdir -p ../rocketmq/logs

2.6 调JVM启动参数

调一下JVM,包括nameserver 和 broker。限于自己机器的配置,参数调小一下。但Rocketmq最少的堆是1g,否则无法启动。两台机器执行相同的操作。

在rocketMq/bin/runbroker.sh中:


2.7 编写mqnamesrv脚本

两台机器都需要mqnamesrv的启动脚本,分别配置就好。

两台机器都需要新建一个startNameSrv.sh;

#! /bin/sh

nohup sh /apps/idm/rocketMq/bin/mqnamesrv >> /apps/idm/rocketMq/logs/mqnamesrv.log 2>&1 &

2.8 编写broker启动脚本

节点一机器只需启动broker-a和broker-b-s。

新建一个startBroker-a.sh启动脚本;

#! /bin/sh

nohup sh ../rocketMq/bin/mqbroker -c ../rocketMq/conf/2m-2s-async/broker-a.properties > ../rocketMq/logs/broker-a.log 2>&1 &

新建一个startBroker-b-s.sh启动脚本

#! /bin/sh

nohup sh ../rocketMq/bin/mqbroker -c ../rocketMq/conf/2m-2s-async/broker-b-s.properties > ../rocketMq/logs/broker-b-s.log 2>&1 &

节点二机器只需启动broker-b和broker-a-s。

新建一个startBroker-b.sh启动脚本;

#! /bin/sh

nohup sh ../rocketMq/bin/mqbroker -c ../rocketMq/conf/2m-2s-async/broker-b.properties > ../rocketMq/logs/broker-b.log 2>&1 &

新建一个startBroker-a-s.sh启动脚本

#! /bin/sh

nohup sh ../rocketMq/bin/mqbroker -c ../rocketMq/conf/2m-2s-async/broker-a-s.properties > ../rocketMq/logs/broker-a-s.log 2>&1 &

好了,启动脚本已经编写完成。接下来就是run的阶段了。

2.9 启动

先分别在两台机器上启动nameserver,再启动broker,两台机器的启动顺序:

启动nameserver---启动broker master---启动broker slave,done。

启动完成后,可以同时jps命令看一下启动情况:

一个namesrv,两个broker。


可以再通过mqadmin clusterList --namesrvAddr=127.0.0.1:9876命令看一下服务器状态:


2.10 部署启动rocketmq管控台

进入2.3步骤中所下载的mq-Console文件夹,编辑application.yml文件,将两台服务器的地址填入


然后再新建一个start_MqConsole.sh文件:

#! /bin/sh

nohup /apps/software/jdk8u242-b08/bin/java -jar ../mq-Console/rocketmq-console-ng-1.0.1.jar --server.port=28080 --spring.config.location=../mq-Console/application.yml >> ../mq-Console/console.log &

然后启动它!!!

然后再访问它


大功告成!!!

2.10 关闭服务

关闭namesrv服务

mqshutdown namesrv

关闭broker服务

mqshutdown broker

2.11 期间遇到的坑

broker始终启动不起来;后来通过查阅资料发现将store文件夹中的内容全部删除即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容