首页 > 其他分享 >rocketmq集群配置简介

rocketmq集群配置简介

时间:2023-06-16 14:36:44浏览次数:44  
标签:存储 简介 xxx broker jackxu 集群 rocketmq store

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

 

标签:存储,简介,xxx,broker,jackxu,集群,rocketmq,store
From: https://www.cnblogs.com/sunyonggao/p/17485244.html

相关文章

  • RocketMQ 从入门到实战
    扫一扫加入作者公众号扫一扫关注中间件兴趣圈RocketMQ官微扫一扫关注【阿里巴巴云原生】公众号阿里云开发者“藏经阁”获取第一手技术干货海量免费电子书下载作者简介作者简介丁威,《RocketMQ技术内幕》作者,RocketMQ官方社区优秀布道师,荣获CSDN2020博客之星亚军;担任......
  • 集群变更备忘录
    HDPyum变更之前搭的镜像虚拟机不想启动了,但是yum命令会报错,把之前配置的文件删了mkdir/etc/yum.repos.d.bakcd/etc/yum.repos.dmvambari-hdp-51.repoambari.repoHDF.repoHDP.repoHDP-UTILS.repo/etc/yum.repos.d.bak/yumcleanallyummakecache......
  • 虚拟机(CentOS6.5)hadoop分布式集群搭建
    ps:本次三台虚拟机均由克隆而来修改MAC地址vim/etc/vim/etc/udev/rules.d/70-persistent-net.rules删除name="eth0"一行将name="eth1"的name改为name="eth0"之后将该行ATTR(address)复制vim/etc/sysconfig/network-scripts/ifcfg-eth0将IPADDR设置为虚拟IP(eg:192.168.229.2......
  • ceph集群部署(自用)
    <准备工作>一、配置主机名A、配置主机节点Ceph1节点:hostnamectl--staticset-hostnameceph1其余节点以此类推。B、修改域名解析文件:vim/etc/hosts在各个集群和客户端节点的“/etc/hosts”中添加如下内容:192.168.58.240ceph1192.168.58.200ceph2192.168.58.50ceph3二......
  • Google Test(GTest)和Google Mock(GMock)入门简介
    GoogleTest1.自定义错误输出:ASSERT_EQ(x.size(),y.size())<<"Vectorsxandyareofunequallength";for(inti=0;i<x.size();++i){EXPECT_EQ(x[i],y[i])<<"Vectorsxandydifferatindex"<<i;}2.ASSERT_......
  • Ext简介
    1.7.2. 只把必要的东西放进项目中想把ext放入自己的项目,需要自己整理一下,因为发布包里的东西并非都是必要的,比如文档,比如例子,比如源代码。必要的最小集合是这样:ext-all.js,adapter/ext/ext-base.js,build/locale/ext-lang-zh_CN.js和整个resources目录。ext-all.js,adapter/ext/e......
  • 通过Kafka在ignite集群之间进行实时数据复制
    版本1.6的ApacheIgnite提供了一种基于KafkaConnect进行数据处理的新方法。KafkaConnect是ApacheKafka0.9中引入的一个新特性,它支持ApacheKafka和其他数据系统之间的可伸缩和可靠的流数据。它使得在内存中向您的可伸缩和安全的流数据管道中添加新系统变得非常容易。在本文中,我们将......
  • k8s集群根据进程PID获取Pod名称
    简单说明在实际的应用场景中,我们如果看到某个进程资源或服务异常,需要根据这个进程排查到底是哪个服务的Pod,这里我们介绍一种根据PID快速寻找Pod名称的方法。实际操作查看进程PID这里我们以GPU任务为例说明,可以看到占用显卡的任务PID为8241[root@centos~]#nvidia-smiThuJu......
  • rocketmq-client-go
    关注几个配置项:topicgroupNametag按需配置即可。关于producer和consumer的入口启动略去,客户端层面,关于producer和consumer可以按照自己业务特点,进行配置。以下为simple样例。生产者1packageproducer23import(4"context"5"fmt"6"github.c......
  • Redis集群公网访问
    背景因业务需求,应用程序需要跨机房从公网地址访问Redis集群,但是无法正常访问。因为程序通过公网IP加端口访问到Redis集群,然后Redis返回集群信息(就是clusternodes命令的返回),程序再根据返回的集群信息去读写Redis集群。而当前集群监听在主机内网地址上,并且是通过内网地址创建的......