RocketMq集群搭建简单操作

RocketMq 集群配置--linux(centos7)

1. RocketMq优点

强调集群无单点,可扩展,任意一点高可用,水平可扩展

方便集群配置,而且容易扩展(横向和纵向),通过slave的方式每一点都可以实现高可用

支持上万个队列,顺序消息

顺序消费是实现在同一队列的,如果高并发的情况就需要队列的支持,rocketmq可以满足上万个队列同时存在

任性定制你的消息过滤

rocketmq提供了两种类型的消息过滤,也可以说三种可以通过topic进行消息过滤、可以通过tag进行消息过滤、还可以通过filter的方式任意定制过滤

消息的可靠性(无Buffer,持久化,容错,回溯消费)

消息无buffer就不用担心buffer回满的情况,rocketmq的所有消息都是持久化的,生产者本身可以进行错误重试,发布者也会按照时间阶梯的方式进行消息重发,消息回溯说的是可以按照指定的时间进行消息的重新消费,既可以向前也可以向后(前提条件是要注意消息的擦除时间)

海量消息堆积能力,消息堆积后,写入低延迟

针对于provider需要配合部署方式,对于consumer,如果是集群方式一旦master返现消息堆积会向consumer下发一个重定向指令,此时consumer就可以从slave进行数据消费了

分布式事务

我个人感觉rocketmq对这一块说的不是很清晰,而且官方也说现在这块存在缺陷(会令系统pagecache过多),所以线上建议还是少用为好

消息失败重试机制

针对provider的重试,当消息发送到选定的broker时如果出现失败会自动选择其他的broker进行重发,默认重试三次,当然重试次数要在消息发送的超时时间范围内。

针对consumer的重试,如果消息因为各种原因没有消费成功,会自动加入到重试队列,一般情况如果是因为网络等问题连续重试也是照样失败,所以rocketmq也是采用阶梯重试的方式。

定时消费

除了上面的配置,在发送消息是也可以针对message设置setDelayTimeLevel

活跃的开源社区

现在rocketmq成为了apache的一款开源产品,活跃度也是不容怀疑的

成熟度(经过双十一考验)

针对本身的成熟度,我们看看这么多年的双十一就可想而知了

>>>相关文档介绍 []

2. 多master配置(两个)

  • 两台linux虚拟机 ip分别为192.168.9.129 192.168.9.130

    需要确认java环境已安装

  • 配置两台主机的host信息 (ip换成自己的ip)

    192.168.9.129 rocketNameSrv2
    192.168.9.129 rocketBrokerMaster2
    192.168.9.130 rocketNameSrv1
    192.168.9.130 rocketBrokerMaster1
  • 重启网卡 (两台虚拟机)

    输入命令 :service network restart

    运行图:
    image
  • 检查配置是否生效 在129这台 ping 130这台 bing telnet 9876端口

    ping rocketNameSrv1

    ping rocketBrokerMaster1

    telnet rocketNameSrv1 9876

    telnet rocketBrokerMaster1 9876

备注:telnet不通 请检查防火墙

  • 下载需要的rocketmq 包 并解压到对应目录

    这里使用的是rocketmq-4.3.2版本

  • 建立软连接 cd rocketmq-4.3.2 上层目录中

    输入命令:ln -s rocketmq-4.3.2 rocketmq

  • 创建存储仓库 只创建store、commitLog、consumequeue、index文件夹

    输入命令:

    mkdir ./rocketmq/store

    mkdir ./rocketmq/store/commitlog

    mkdir ./rocketmq/store/consumequeue

    mkdir ./rocketmq/store/index

  • 修改配置文件 在conf/2m-noslave(没从) 下 broker-a.propertiesbroker-b.properties进行修改(添加) 备注----brokerName不做修改

   #指定broker Ip  
    brokerIp1=192.168.9.129
    # Name Server地址
    namesrvAddr=rocketNameSrv1:9876;rocketNameSrv2:9876
    # 存储路径
    storePathRootDir=/opt/rocketmq/store
    # commitLog 存储路径
    storePathCommitLog=/opt/rocketmq/store/commitlog
    # 消息队列存储路径
    storePathConsumeQueue=/opt/rocketmq/store/consumequeue
    # 消息索引存储路径
    storePathIndex=/opt/rocketmq/store/index
    # checkpoint 文件存储路径
    storePathCheckpoint=/opt/rocketmq/store/checkpoint
    # abort 文件存储路径
    abortFile=/opt/rocketmq/store/abort
    # commitlog目录所在分区的最大使用比例,如果commitlog目录所在的分区使用比例大于该值,则触发过期文件删除
    diskMaxUsedSpaceRatio=88
  • 修改Rocketmq JVM启动参数 /rocket/bin JAVA_OPT启动参数配置(根据情况调整)

    vi runbroker.sh

    vi runserver.sh

    说明:这里只调整了 -Xms1g -Xmx1g -Xmn512m

    -XX:MaxDirectMemorySize=1g

image
  • 启动两台的nameSrv bin目录下

    nohup sh ./mqnamesrv > /opt/rocketmq/store/namesvr.log 2>&1 &

  • 分别启动两台的broker bin目录下

    第一台

    nohup sh ./mqbroker -c /opt/rocketmq/conf/2m-noslave/broker-a.properties > /opt/rocketmq/store/broker.log 2>&1 &

    第二台

    nohup sh ./mqbroker -c /opt/rocketmq/conf/2m-noslave/broker-b.properties > /opt/rocketmq/store/broker.log 2>&1

  • 检查是否生效 bin目录下

    sh mqadmin clusterList -n "192.168.9.130:9876;192.168.9.129:9876"

image

n主n个

  • 也可以通过console连接查看
rocketmq.config.namesrvAddr=192.168.9.129:9876;192.168.9.130:9876
image
  • 备注:多主仅需要在相应中多建配置文件指定不同brokerName即可

3. 主备异步/同步

  • 前面配置时已经注意到 2m-noslave这个文件夹 故名思意

    image

    主备对应的文件夹前缀为: 2m-2s 同步 sync 异步async 同步异步区别链接

因此,需要配置主备的更具具体选择进入相应文件夹配置

  • 修改配置 (保持原有内容不变 添加多主中配置)

    说明: 带-s的代表slave ,更具机器定义主/或从选择配置

    image
  • 配置好后,broker启动时 -c 指定新的配置文件路径即可 添加多主多从同多主扩展相同

你可能感兴趣的:(RocketMq集群搭建简单操作)