架构演进|RocketMQ集群搭建

Posted by lyp on Friday, December 28, 2018

TOC

前言

这篇文章以4.3.0版本为标准进行讲述在linux下部署RocketMQ集群(双MASTER无SALVE)实例,在此之前假设前提条件为已经部署了单机实例,可以查看单机部署实例这篇文章。

在业务量达到一定规模后,单机实例的RocketMQ也许不太够用了,这个时候就需要扩展RocketMQ的规模。

架构演进

在[Apache RocketMQ单机部署]()这篇文章中画出了单机部署下的一个架构图

可以看到,有四个角色,producer和consumer都是业务方的内容,不在rocketmq的部署范围之内,而nameserver和broker都只有一个,如果任意一个发生故障,都会发生单点故障的问题。

这个时候就需要搭建集群,防止单点故障的问题发生以及支持更大的业务量。而在RocketMQ中,nameserver和broker都可以进行横向扩展,本篇以broker进行讲述搭建双MASTER无SALVE集群架构

横向扩展broker有几种架构模式:

  • 单MASTER,也就是单机部署
  • 多MASTER无SLAVE,这是本篇讲述的架构模式,也是生产常用的架构模式
  • 多MASTER多SALVE,一个MASTER对应有一个SLAVE
  • 多MASTER多SAVLE,一个MASTER对应有多个SLAVE

需要加多一个broker到目前的架构中去,需要怎么做的?需要停机执行吗?
不需要的,只需要在另一台机器上配置好broker,启动broker,一个新的broker就加入到了当前的架构中去了。
结果架构图如下图所述:

以下是相关broker-b的配置


brokerClusterName = DefaultCluster  
brokerName = broker-b  
brokerId = 0  
deleteWhen = 04  
fileReservedTime = 48  
brokerRole = ASYNC_MASTER  
flushDiskType = ASYNC_FLUSH  

brokerIP1=172.17.59.147  
brokerIP2=172.17.59.147  
namesrvAddr=172.17.59.146:5776  
autoCreateTopicEnable=true

与broker-a对比,必须改的就只有brokerNamebrokerIP1brokerIP2属性,其他的都可一致,也可以下载我的broker-b配置文件进行修改