前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【RocketMq实战第三篇】-RocketMq双机集群

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

作者头像
胖虎
发布2019-06-26 16:57:17
3.7K0
发布2019-06-26 16:57:17
举报
文章被收录于专栏:晏霖

前言 由于我的电脑内存不够大,所以集群方式没办法做了,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 的配置文件:

代码语言:javascript
复制
                  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 的配置文件:

代码语言:javascript
复制
      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 的配置文件:

代码语言:javascript
复制
         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的配置文件:

代码语言:javascript
复制
         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 的地址,可以是多个 。

2) brokerClusterName=DefaultCluster

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

3) brokerName=broker-a

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

4) brokerId=0

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

5) fileReservedTime=48

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

6) deleteWhen=04

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

7) brokerRole=SYNC_MASTER

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

8) flushDiskType=ASYNC_FLUSH

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

9) 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) 地址就可看到集群的状态。

大家应该会碰到问题,请关注公众号查找我的联系方式。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 晏霖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档