• RocketMQ多机集群配置和部署


            本篇说明如何只用两台物理机,搭建出双主、双从、无单点故障的高可用RocketMQ集群。假设这两台物理机的IP分别是192.168.100.131和192.168.100.132。

    1 启动多个NameServer和Broker

            首先在这两台机器上分别启动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=SYNC_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=SYNC_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=11011
      storePathRootDir=/home/rocketmq/store-b

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

      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=11011
      storePathRootDir=/home/rocketmq/store-a

    然后分别使用如下命令启动四个Broker:

      nohup sh ./bin/mqbroker -c  config_file &

    这样一个高可用的RocketMQ集群就搭建好了,还可以在一台机器上启动rocketmq-console,比如在192.168.100.131上启动RocketMQ-console,然后在浏览器中输入地址192.168.100.131:8080,这样就可以可视化地查看集群状态了。

    2 配置参数介绍

    本节将逐个介绍Broker配置文件中用到的参数含义:

    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 Borker可以有多个Slave,0表示Master,大于0表示不同Slave的ID。

    5)fileReservedTime=48

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

    6)deleteWhen=04

    与fileReservedTime参数呼应,表明在几点做消息删除动作,默认值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。现在使用云服务或多网卡的机器比较普遍,Broker自动探测获得的ip地址可能不符合要求,通过brokerIP1=47.98.41.234这样的配置参数,可以设置Broker机器对外暴露的ip地址。

  • 相关阅读:
    基于安卓平台的远程医疗APP设计
    js面试题==和===
    第8章 MySQL的数据目录
    多线程---线程安全问题及解决
    c++ 标准库
    【kafka】kafka命令大全
    Mac安装redis,mysql
    国考省考申论:2次阅读法:1读感知材料类型和段落关系,2读根据问题词,原因词,影响词,对策词,关联词把握得分要点
    P3879 [TJOI2010] 阅读理解题解
    【C语言】字符函数和内存操作函数
  • 原文地址:https://blog.csdn.net/zhao_god/article/details/134280411