【RocketMq实战第三篇】-RocketMq双机集群

x33g5p2x  于2021-12-19 转载在 其他  
字(3.3k)|赞(0)|评价(0)|浏览(380)

前言

由于我的电脑内存不够大,所以集群方式没办法做了,rocketmq很吃内存。本文我会把书上资料的步骤给大家贴出来。如有疑问请直接联系我,联系方式在最下方。

正文

启动 RocketMQ 的顺序是先启动 NameServer,再启动 Broker,这时候消 息队列已 经可以提供服务了,想发送消息就使用 Producer来发送,想接收消息 就使用 Consumer来接收 。 很多应用程序既要发送,又要接收,可以启动多个Producer 和 Consumer 来发送多种消息,同时接收多种消息 。

为了消除单点故障,增加可靠性或增大吞吐 量 ,可以在多台机器上部署多 个 NameServer 和 Broker,为每个 Broker部署一个或多个 Slave。

下图是RocketMQ各角色之间的关系

多机集群配置和部署

用两台物理机,搭建 出双主 、 双从 、 无单点故 障的高可用 RocketMQ集群。 假设这两台物理机的 IP分别是 192.168.100.131 和 192.168 . 100.132 。

启动多个 NameServer 和 Broker

首先我们两台机器上都应有同样的rocketMQ服务,具体做法,包括安装启动,查看日志等点击链接:【RocketMq实战第一篇】-RocketMq下载与安装

首先在这 两台机器上分别启动 NameServer ( nohup sh bin/mqnamesrv &), 这样我们就得到了 一个无单点的 NameServer服务, 服务地址是“ 192.168.100. 131:9876;192.168.100.132:9876”。

然后启动 Broker,每台机器上都要分别启动一个 Master 角色的 Broker 和一 个 Slave 角色的 Broker,并互为 主备 。 可以 基于 RocketMQ 自带的 示例配置 文件写自己的配置文件(示例配置文件在 conf/2m-2s-sync 目录下)。

1)192.168.100.131 机器上 Master Broker 的配置文件:

                    namesrvAddr=192.168.100. 131:9876;192.168.100.132:9876                        
                      brokerClusterName=DefaultCluster
                      brokerName=broker-a
                      brokerId=0
                      deleteWhen=04
                      fileReservedTime=48
                      brokerRole=ASYNC_MASTER
                      flushDiskType=ASYNC_FLUSH
                      listenPort=10911
                      storePathRootDir=/home/rocketmq/store-a

2)192.168.100.132 机器上 Master Broker 的配置文件:

        namesrvAddr=192.168.100. 131:9876;192.168.100.132:9876                        
                      brokerClusterName=DefaultCluster
                      brokerName=broker-b
                      brokerId=0
                      deleteWhen=04
                      fileReservedTime=48
                      brokerRole=ASYNC_MASTER
                      flushDiskType=ASYNC_FLUSH
                      listenPort=10911
                      storePathRootDir=/home/rocketmq/store-b

3) 192.168.100.131 机器上 Slave Broker 的配置文件:

                   namesrvAddr=192.168.100. 131:9876;192.168.100.132:9876                        
                      brokerClusterName=DefaultCluster
                      brokerName=broker-b
                      brokerId=1
                      deleteWhen=04
                      fileReservedTime=48
                      brokerRole=SLAVE
                      flushDiskType=ASYNC_FLUSH
                      listenPort=10111
                      storePathRootDir=/home/rocketmq/store-b

4) 192.168.100.132机器上 SlaveBroker的配置文件:

                   namesrvAddr=192.168.100. 131:9876;192.168.100.132:9876                        
                      brokerClusterName=DefaultCluster
                      brokerName=broker-a
                      brokerId=1
                      deleteWhen=04
                      fileReservedTime=48
                      brokerRole=SLAVE
                      flushDiskType=ASYNC_FLUSH
                      listenPort=10111
                      storePathRootDir=/home/rocketmq/store-a

以上配置文件内容分别是红色框里的,大家要仔细看好,然后把对应的配置进行替换,记得namesrvAddr要换成自己服务器ip,storePathRootDir目录要有。

然后分别使用如下命令启动四个 Broker: “config_file”是变量分别是这四个配置文件的绝对路径。

nohup sh . /bin/mqbroker - c config_file &

这样就是两台物理机,每台都有一主一从。

下面讲解参数的含义:

1)namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876

NamerServer 的地址,可以是多个 。

  1. brokerClusterName=DefaultCluster

Cluster 的地址,如果集群机器数比较多,可以分成多个 Cluster,每个 Cluster 供一个业务群使用 。

  1. brokerName=broker-a

Broker 的名称, Master 和 Slave 通过使用相同的 Broker 名称来表明相互关系,以说明某个 Slave 是哪个 Master 的 Slave。

  1. brokerId=0

一个 Master Barker可以有多个 Slave, 0表示 Master,大于 0表示不同 Slave 的 ID。

  1. fileReservedTime=48

在磁盘上保存消息的时长,单位是小时,自动删除超时的消息 。

  1. deleteWhen=04

与 fileReservedTim巳参数呼应,表明在几点做消息删除动作,默认值 04表 示凌晨 4点。

  1. brokerRole=SYNC_MASTER

brokerRole 有 3 种: SYNC_MASTER、 ASYNC_MASTER、 SLAVE。 关键 词 SYNC 和 ASYNC 表示 Master 和 Slave 之间同步消息的机制, SYNC 的意思 是当 Slave 和 Master 消息同步完成后,再返回发送成功的状态 。

  1. flushDiskType=ASYNC_FLUSH

flushDiskType表示刷盘策略,分为SYNC_FLUSH和ASYNC_FLUSH两 种,分别代表同步刷盘和异步刷盘。 同步刷盘情况下,消息真正写人磁盘后再 返回成功状态;异步刷盘情况下,消息写人 page_cache 后就返回成功状态 。

  1. listenPort=10911
    Broker监听的端口 号,如果一台机器上启动了多个 Broker, 则要设置不同的端口号,避免冲 突 。
    10 ) storePathRootDir=/home/rocketmq/store-a 存储消息以及一些配置信息的根目录 。

这些配置参数,在 Broker启动的时候生效,如果启动后有更改,要重启 Broker。

通过图形界面管理集群

运维服务程序是个 SpringBoot项目,需要从 GitHub 上的 apache/rocketmq­ externals 里下载 源 码 (https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console)。

下载然后进入下载源码的 目录,运行如下命令 即可启 动:mvn spring-boot:run

也可以编译成 jar 包,通过 java -jar 来执行 。

服务启动后 ,在浏览器里访问 server ip_address:8080 (server_ip_address 是 启动rocketmq心onsole的机器IP) 地址就可看到集群的状态。

相关文章