rocketmq集群配置简介

RocketMQ天生对集群的支持非常好,它有以下一些模式:

(1)单Master

优点:除了配置简单没什么优点

缺点:不可靠,该机器重启或者宕机,将要导致整个服务不可用

(2)多Master

优点:配置简单,性能最高

缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性

(3)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级

优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预

缺点:Master宕机或磁盘损坏时会有少量消息丢失

(4)多Master多Slave,每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功

优点:服务可用性与数据可用性非常高

缺点:性能比异步集群略低,当前版本主宕备不能自动切换为主

本文采用的是二主二从安装模式,即第四种多Master多Slave

有条件的话可以买两台云服务器;

下面假设有了两台虚拟服务器1和服务器2;

配置第一台服务器

在两台机器上都下载、解压好从官网 rocketmq.apache.org/ 进去获得最新的下载地址。在rocketmq/conf目录下,有三种建议配置模式如下图:

2m-2s-async(2主2从异步) —— 本文采用这种

2m-2s-sync (2主2从同步)

2m-noslave (2主)

现在需要修改两台机器上2m-2s-async这个目录中的文件。在服务器1上修改broker-a.properties

上图是windows上的文件;linux上则使用如下命令修改:

    cd /jackxu/rocketmq/conf/2m-2s-async
    vim  broker-a.properties

修改集群名字

    brokerClusterName=xxx-cluster

增加的内容

    #Broker 对外服务的监听端口
    listenPort=10910
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #nameServer地址,分号分割
    namesrvAddr=39.103.144.86:9876;42.192.77.73:9876
    #存储路径
    storePathRootDir=/jackxu/rocketmq/store/broker-a
    #commitLog 存储路径
    storePathCommitLog=/jackxu/rocketmq/store/broker-a/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/jackxu/rocketmq/store/broker-a/consumequeue
    #消息索引存储路径
    storePathIndex=/jackxu/rocketmq/store/broker-a/index
    #checkpoint 文件存储路径
    storeCheckpoint=/jackxu/rocketmq/store/checkpoint
    #abort 文件存储路径
    abortFile=/jackxu/rocketmq/store/abort

修改broker-b-s.properties

    vim  broker-b-s.properties

修改集群名字

    brokerClusterName=xxx-cluster

增加的内容

    #Broker 对外服务的监听端口
    listenPort=10921
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #nameServer地址,分号分割
    namesrvAddr=39.103.144.86:9876;42.192.77.73:9876
    #存储路径
    storePathRootDir=/jackxu/rocketmq/store/broker-b-s
    #commitLog 存储路径
    storePathCommitLog=/jackxu/rocketmq/store/broker-b-s/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/jackxu/rocketmq/store/broker-b-s/consumequeue
    #消息索引存储路径
    storePathIndex=/jackxu/rocketmq/store/broker-b-s/index
    #checkpoint 文件存储路径
    storeCheckpoint=/jackxu/rocketmq/store/checkpoint
    #abort 文件存储路径
    abortFile=/jackxu/rocketmq/store/abort

配置第二台服务器

在服务器2上修改broker-b.properties

    cd /jackxu/rocketmq/conf/2m-2s-async
    vim  broker-b.properties

修改集群名字

    brokerClusterName=xxx-cluster

增加的内容

    #Broker 对外服务的监听端口
    listenPort=10920
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #nameServer地址,分号分割
    namesrvAddr=39.103.144.86:9876;42.192.77.73:9876
    #存储路径
    storePathRootDir=/jackxu/rocketmq/store/broker-b
    #commitLog 存储路径
    storePathCommitLog=/jackxu/rocketmq/store/broker-b/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/jackxu/rocketmq/store/broker-b/consumequeue
    #消息索引存储路径
    storePathIndex=/jackxu/rocketmq/store/broker-b/index
    #checkpoint 文件存储路径
    storeCheckpoint=/jackxu/rocketmq/store/checkpoint
    #abort 文件存储路径
    abortFile=/jackxu/rocketmq/store/abort

修改broker-a-s.properties

    vim  broker-a-s.properties

修改集群名字

    brokerClusterName=xxx-cluster

增加的内容

    #Broker 对外服务的监听端口
    listenPort=10911
    #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
    autoCreateTopicEnable=true
    #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
    autoCreateSubscriptionGroup=true
    #nameServer地址,分号分割
    namesrvAddr=39.103.144.86:9876;42.192.77.73:9876
    #存储路径
    storePathRootDir=/jackxu/rocketmq/store/broker-a-s
    #commitLog 存储路径
    storePathCommitLog=/jackxu/rocketmq/store/broker-a-s/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/jackxu/rocketmq/store/broker-a-s/consumequeue
    #消息索引存储路径
    storePathIndex=/jackxu/rocketmq/store/broker-a-s/index
    #checkpoint 文件存储路径
    storeCheckpoint=/jackxu/rocketmq/store/checkpoint
    #abort 文件存储路径
    abortFile=/jackxu/rocketmq/store/abort

创建数据目录

第一台机器执行,只需要执行一次(注:mkdir -p命令是递归创建文件,即使上级文件不存在)

    mkdir -p /xxx/rocketmq/store/broker-a /jackxu/rocketmq/store/broker-a/consumequeue /jackxu/rocketmq/store/broker-a/commitlog /jackxu/rocketmq/store/broker-a/index /jackxu/rocketmq/logs /jackxu/rocketmq/store/broker-b-s /jackxu/rocketmq/store/broker-b-s/consumequeue /jackxu/rocketmq/store/broker-b-s/commitlog /jackxu/rocketmq/store/broker-b-s/index

第二台机器执行,只需要执行一次

    mkdir -p /xxx/rocketmq/store/broker-a-s /jackxu/rocketmq/store/broker-a-s/consumequeue /jackxu/rocketmq/store/broker-a-s/commitlog /jackxu/rocketmq/store/broker-a-s/index /jackxu/rocketmq/logs /jackxu/rocketmq/store/broker-b /jackxu/rocketmq/store/broker-b/consumequeue /jackxu/rocketmq/store/broker-b/commitlog /jackxu/rocketmq/store/broker-b/index

启动两个NameServer

在两台机器分别执行,& 表示在后台运行,默认情况下,nameserver监听的是9876端口

    nohup sh /xxx/rocketmq/bin/mqnamesrv >/jackxu/rocketmq/logs/mqnamesrv.log 2>&1 &

查看日志

    tail -f /xxx/rocketmq/logs/mqnamesrv.log

启动Broker

启动的时候按照下面的顺序来,-c 是指定broker的配置文件

1、启动服务器1的A主

    nohup sh /xxx/rocketmq/bin/mqbroker -c /jackxu/rocketmq/conf/2m-2s-async/broker-a.properties > /xxx/rocketmq/logs/broker-a.log 2>&1 &

2、启动服务器2的A从

    nohup sh /xxx/rocketmq/bin/mqbroker -c /jackxu/rocketmq/conf/2m-2s-async/broker-a-s.properties > /xxx/rocketmq/logs/broker-a-s.log 2>&1 &

3、启动服务器2的B主

    nohup sh /xxx/rocketmq/bin/mqbroker -c /jackxu/rocketmq/conf/2m-2s-async/broker-b.properties > /xxx/rocketmq/logs/broker-b.log 2>&1 &

4、启动服务器1的B从

    nohup sh /xxx/rocketmq/bin/mqbroker -c /jackxu/rocketmq/conf/2m-2s-async/broker-b-s.properties > /xxx/rocketmq/logs/broker-b-s.log 2>&1 &

查看日志

    tail -f /xxx/rocketmq/conf/2m-2s-async/broker-a.properties
    tail -f /xxx/rocketmq/conf/2m-2s-async/broker-a-s.properties
    tail -f /xxx/rocketmq/conf/2m-2s-async/broker-b.properties
    tail -f /xxx/rocketmq/conf/2m-2s-async/broker-b-s.properties

停止服务的时候需要注意,要先停止broker,其次停止nameserver。

    cd /xxx/rocketmq/bin
    sh mqshutdown namesrv
    sh mqshutdown broker

配置文件说明

下面介绍一下安装RocketMQ配置文件里面的属性

首先是集群名字相同,上面四台机器的集群名字都叫 brokerClusterName=jackxu-cluster,其次是连接到相同的NameServer,namesrvAddr=39.103.144.86:9876;42.192.77.73:9876。在配置文件中brokerId=0代表master,brokerId=1代表slave。

在配置文件中还有这两个属性

brokerRole在master broker可以配置成SYNC_MASTER或者ASYNC_MASTER,

在slave broker统一配置成SLAVE

flushDiskType分为ASYNC_FLUSH和SYNC_FLUSH

 
posted @ 2023-06-16 14:16  一剑一叶一花  阅读(374)  评论(0编辑  收藏  举报