zoukankan      html  css  js  c++  java
  • RocketMQ主从搭建

    RocketMQ主从搭建

    部署环境

    作为测试环境,我们使用两台虚拟机来部署双主双从环境,具体结构如下:

    集群
    整个集群由两个 name server 实例和四个 broker 实例组成

    name server:

    • 两台服务器分别启动两个name server

    broker A 主从:

    • 服务器1部署 broker A 主服务
    • 服务器2部署 broker A 从服务

    broker B 主从:

    • 服务器2部署 broker B 主服务
    • 服务器1部署 broker B 从服务

    安装 Rocketmq

    首先参照《RocketMQ (一) 安装》笔记,在两台虚拟机上安装 Rocketmq。或在一台虚拟机上装好后进行克隆。

    建文件夹

    在一台服务器上启动两个 broker 实例,需要为不同实例设置单独的数据存储目录。

    为了方便起见,我们在两台服务器上都创建这四个实例所需要的的目录。

    mkdir /usr/local/rocketmq/store/
    mkdir /usr/local/rocketmq/store/broker-a
    mkdir /usr/local/rocketmq/store/broker-a/commitlog
    mkdir /usr/local/rocketmq/store/broker-b
    mkdir /usr/local/rocketmq/store/broker-b/commitlog
    mkdir /usr/local/rocketmq/store/broker-as
    mkdir /usr/local/rocketmq/store/broker-as/commitlog
    mkdir /usr/local/rocketmq/store/broker-bs
    mkdir /usr/local/rocketmq/store/broker-bs/commitlog
    

    配置

    rocketmq/conf 目录下提供了四种集群方案的配置样例

    • 2m-2s-async:双主双从异步复制
    • 2m-2s-sync:双主双从同步复制
    • 2m-noslave:双主
    • dledger: raft主从切换

    这里我们选择双主双从同步复制方案。

    1. broker-a,a主服务器配置

    a

    服务器1修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-a.properties

    在样例配置文件中,添加三项配置:

    • listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-a主服务器的端口使用默认的10911。
    • storePathRootDir:数据存储目录
    • storePathCommitLog:提交日志存储目录
    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    
    listenPort=10911
    storePathRootDir=/usr/local/rocketmq/store/broker-a
    storePathCommitLog=/usr/local/rocketmq/store/broker-a/commitlog
    

    2. broker-a slave,a从服务器配置

    as

    服务器2修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-a-s.properties

    在样例配置文件中,添加三项配置:

    • listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-a slave从服务器的端口使用11911。
    • storePathRootDir:数据存储目录
    • storePathCommitLog:提交日志存储目录
    brokerClusterName=DefaultCluster
    brokerName=broker-a
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    
    listenPort=11911
    storePathRootDir=/usr/local/rocketmq/store/broker-as
    storePathCommitLog=/usr/local/rocketmq/store/broker-as/commitlog
    

    3. broker-b,b主服务器配置

    b

    服务器2修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-b.properties

    在样例配置文件中,添加三项配置:

    • listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-b主服务器的端口使用默认的10911。
    • storePathRootDir:数据存储目录
    • storePathCommitLog:提交日志存储目录
    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    
    listenPort=10911
    storePathRootDir=/usr/local/rocketmq/store/broker-b
    storePathCommitLog=/usr/local/rocketmq/store/broker-b/commitlog
    

    4. broker-b slave,b从服务器配置

    bs

    服务器1修改样例配置文件:rocketmq/conf/2m-2s-sync/broker-b-s.properties

    在样例配置文件中,添加三项配置:

    • listenPort:我们在一台服务器上要运行两个broker实例,所以两个实例的端口要有所区分。这里broker-b slave从服务器的端口使用11911。
    • storePathRootDir:数据存储目录
    • storePathCommitLog:提交日志存储目录
    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    
    listenPort=11911
    storePathRootDir=/usr/local/rocketmq/store/broker-bs
    storePathCommitLog=/usr/local/rocketmq/store/broker-bs/commitlog
    

    配置要点说明

    1. 四台服务器的集群名 brokerClusterName 相同。集群名称相同的服务器共同组成服务集群 。
    2. 从服务器通过名字与主服务器关联在一起,brokerName 与主服务器相同。
    3. brokerId为0是主服务器。从服务器的值是非零值,例如如果有四个从服务器,他们的 brokerId 应该是 1,2,3,4。
    4. brokerRole的值为 SYNC_MASTER 是同步复制的主服务器。如果是 ASYNC_MASTER 则为异步复制的主服务器。
    • 同步复制:消息复制到从服务器后才向生产者发回反馈信息。
    • 异步复制:消息发到主服务器就向生产者发回反馈信息,之后再向从服务器复制。

    启动

    1. 启动两个 name server

    namesrv

    在两台服务器上启动两个 name server,它们不用做任何集群的配置,都是作为独立服务运行,它们之间也不会进行数据复制。

    所有broker服务启动后,要同时连接这两个 name server,向两个 name server 进行注册。

    在两台服务器上都启动 name server

    nohup sh mqnamesrv &
    

    2. 启动 broker a 的主从两台服务器

    a

    在服务器1上启动 broker a 主服务器

    参数说明:

    • -n参数:指定name server地址列表,多个地址用分号分隔
    • -c参数:指定配置文件,使用指定的配置文件启动 broker
    nohup sh mqbroker 
    -n '192.168.64.151:9876;192.168.64.152:9876' 
    -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties 
    &
    

    在服务器2上启动 broker a 从服务器

    nohup sh mqbroker 
    -n '192.168.64.151:9876;192.168.64.152:9876' 
    -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties 
    &
    

    3. 启动 broker b 的主从两台服务器

    b

    在服务器2上启动 broker b 主服务器

    nohup sh mqbroker 
    -n '192.168.64.151:9876;192.168.64.152:9876' 
    -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties 
    &
    

    在服务器1上启动 broker b 从服务器

    nohup sh mqbroker 
    -n '192.168.64.151:9876;192.168.64.152:9876' 
    -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties 
    &
    

    检查启动的服务

    在两台服务器上分别查看java进程,确认两台服务器上是否各启动了三个java进程,分别运行name server和两个broker。

    ## 查看 java 进程
    jps 
    
    ---------------------
    12081 NamesrvStartup
    15745 BrokerStartup
    15595 BrokerStartup
    16655 Jps
    

    启动管理界面

    ## 进入 rocketmq-console 项目打包文件目录
    cd /usr/local/rocketmq/RocketMQ-Externals/rocketmq-console/target/
    
    ## 启动管理界面
    nohup java -jar rocketmq-console-ng-1.0.1.jar 
    --server.port=8080 
    --rocketmq.config.namesrvAddr='192.168.64.151:9876;192.168.64.152:9876' 
    &
    

    查看集群状态

    在这里插入图片描述

  • 相关阅读:
    C++逐行读取文本文件的正确做法
    <Android Framework 之路>Android5.1 Camera Framework(一)
    zeromq-4.1.2在windows下的编译
    Duilib应用修改程序图标方法
    gdal集成kml库的做法
    使用DWR实现JS调用服务端Java代码
    DirectUI界面编程(六)实现右键弹出菜单
    如何设计系统的错误码及错误信息
    TCP协议格式
    UDP协议
  • 原文地址:https://www.cnblogs.com/zpKang/p/13717072.html
Copyright © 2011-2022 走看看