盗用一张官网的结构部署图
RocketMQ集群解决了单机版RocketMQ所存在的单点故障问题,并且还可以对RocketMQ性能进行横向的拓展。
RocketMQ分为四个部分:
- 生产者集群 (只能往broker的master节点写入消息)
- 消费者集群 (能消费broker中的master和slave节点的消息)
- NameServer集群 (没有主备之分)
- Broker集群 (区分master和slave)
此次搭建的是双Master+双Slave集群,下面开始具体的搭建步骤
1、安装包的准备
RocketMQ版本可以到官网上下载,可以找到之前的版本,RocketMQ官网地址
RocketMQ的可视化界面,这个可以下载RocketMQ源码自己编译下,很方便,我上传了编译好的jar包到我的百度网盘,需要的可以自行下载使用(地址),提取码441m,访问的端口是8081
2、开始配置环境
Rocket需要你的服务器已经安装了JDK,如果没有装,请自行百度安装,本机用的是JDK1.8,RocketMQ-4.7.0
本次安装是在两台机器上测试的,屌丝一枚,没有那么多的电脑,主要懒得弄虚拟机了,每台电脑一个master和salve,电脑IP为(192.168.135.110,192.168.135.73),下边介绍的是在一台机器上操作的,另一台机器一样的操作
配置RocketMQ的环境变量
解压RocketMQ安装包,解压之后的结构应该是这样
RocketMQ默认配置的Xms和Xmx是2g,需要的可以自行配置一下,配置runbroker.cmd和runserver.cmd这两个文件
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
RocketMQ已经为我们提供了几个集群环境配置,我们在2m-2s-sync这个基础上修改
- 2m-2s-async:双Master+双Slave,异步刷盘
- 2m-2s-sync:双Master+双Slave,同步刷盘
- 2m-noslave:双Master
修改红框里面的两个文件
broker-a.properties
broker-a-s.properties
-
namesrvAddr=192.168.113.11:9876;192.168.113.12:9876,NamerServer 的地址,可以是多个。
-
brokerName=broker-a
Broker 的名称, Master 和Slave 通过使用相同的Broker 名称来表明相互关系,以说明某个Slave 是哪个Master 的Slave 。 -
brokerId=0
一个Master Barker 可以有多个Slave, 0 表示Master ,大于0 表示不同Slave 的ID 。 -
deleteWhen=04
与fi leReservedTim巳参数呼应,表明在几点做消息删除动作,默认值04 表示凌晨4 点。 -
fileReservedTime=48
在磁盘上保存消息的时长,单位是小时,自动删除超时的消息。 -
brokerRole=SYNC_MASTER
broker Role 有3 种: SYNC_MASTER 、ASYNC_MASTER 、SLAVE 。关键词SYNC 和ASYNC 表示Master 和Slave 之间同步消息的机制, SYNC 的意思是当Slave 和Master 消息同步完成后,再返回发送成功的状态。 -
flushDiskType=ASYNC_FLUSH
flushDiskType 表示刷盘策略,分为SYNC_FLUSH 和ASYNC_FLUSH 两种,分别代表同步刷盘和异步刷盘。同步刷盘情况下,消息真正写人磁盘后再返回成功状态;异步刷盘情况下,消息写人page_cache 后就返回成功状态。 -
listenPort=10911
Broker 监听的端口号,如果一台机器上启动了多个Broker , 则要设置不同的端口号,避免冲突。 -
storePathRootDir,storePathCommitLog...配置的是RocketMQ message存储的地址
现在使用云服务或多网卡的机器比较普遍, Broker 自动探测获得的ip地址可能不符合要求,通过brokerIP1 =192.168.135.110 这样的配置参数,可以设置Broker 机器对外暴露的ip 地址
至此一台机器配置完成,配置另一台电脑,和上边步骤一样
3、启动nameServer和broker
启动nameServer,window下可以直接点击mqnamesrv.cmd启动,也可以用命令行启动,出现success字样,启动成功
start mqnamesrv -n "192.168.135.73:9876" &
启动broker,需要手动加载咱们配置的broker配置文件,否则不生效
启动broker-a.properties
start mqbroker -c E:\rocketmq-all-4.7.0-bin-release\conf\2m-2s-sync\broker-a.properties &
启动broker-a-s.properties
start mqbroker -c E:\rocketmq-all-4.7.0-bin-release\conf\2m-2s-sync\broker-a-s.properties &
出现这种情况,则broker启动成功
之后启动另一台机器的broker
至此,RocketMQ的下载、配置、安装都已经完成,上边有我发布的RocketMQ的可视化界面的JAR包,直接用命令行启动就行
下篇文章写RocketMQ的生产者和消费者。。。