消息队列RocketMQ入门实践-集群部署(七)

系列文章目录

消息队列RocketMQ入门实践(一)
消息队列RocketMQ入门实践(二)
消息队列RocketMQ入门实践–关键特性(三)
消息队列RocketMQ入门实践–关键特性(四)
消息队列RocketMQ入门实践–消息存储(五)
消息队列RocketMQ入门实践–消息重试策略(六)



前言

嗨,大家好。我是希留

前面我们搭建了一个单机的RocketMQ服务,但一般生产上使用都是搭建的集群服务。所以今天这篇文章就记录一下我是怎么搭建一个双主双从的集群的。


一、集群模式

在RocketMQ中,集群的部署模式是比较多的,有以下几种:

  • 单个Master
    ∘ \circ 这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用,不建议线上环境使用。

  • 多Master模式
    ∘ \circ 一个集群无Slave,全是Master,例如2个Master或者3个Master
    ∘ \circ 单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不 可订阅,消息实时性会受到影响。

  • 多Master多Slave模式,异步复制
    ∘ \circ 每个Master配置一个Slave,有多对Master-Slave,采用异步复制方式,主备有短暂消息延迟,毫秒级。
    ∘ \circ 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为Master宕机后,消费者仍然可以从Slave消费,此过程对应用透明,不需要人工干预。性能同多Master模式几乎一样。
    ∘ \circ 缺点:Master宕机,磁盘损坏情况,会丢失少量消息。

  • 多Master多Slave模式,同步双写
    每个Master配置一个Slave,有多对Master-Slave,采用同步双写方式,主备都写成功,向应用返回成功。
    ∘ \circ 优点:数据与服务都无单点,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高。
    ∘ \circ 缺点:性能比异步复制模式略低,大约低10%左右

二、搭建2m2s异步刷盘集群

由于我只有一台服务器,资源有限,就通过docker来搭建集群。

1. 创建2个master

1.1 创建 nameserver01 容器 (没有拉取镜像直接创建容器时,会自动先拉取镜像)

// docker 创建命令
docker create -p 9876:9876 --name rmqserver01 \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-e "JAVA_OPTS=-Duser.home=/opt" \
-v /rmq/rmqserver/logs:/opt/logs \
-v /rmq/rmqserver/store:/opt/store \
foxiswho/rocketmq:server-4.3.2

如下图所示

在这里插入图片描述

1.2 创建nameserver02容器

docker create -p 9877:9876 --name rmqserver02 \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-e "JAVA_OPTS=-Duser.home=/opt" \
-v /rmq/rmqserver02/logs:/opt/logs \
-v /rmq/rmqserver02/store:/opt/store \
foxiswho/rocketmq:server-4.3.2

出现一串字符串就表示创建完成

在这里插入图片描述

2. 创建 broker

2.1 创建第1个master broker
取名 broker01

// docker 命令
docker create --net host --name rmqbroker01 \
-e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-v /rmq/rmqbroker01/conf/broker.conf:/etc/rocketmq/broker.conf \
-v /rmq/rmqbroker01/logs:/opt/logs \
-v /rmq/rmqbroker01/store:/opt/store \
foxiswho/rocketmq:broker-4.3.2

如下图所示就是创建成功。
在这里插入图片描述
创建broker相关目录
在这里插入图片描述
修改 broker.conf 配置

#nameServer地址,分号分割
namesrvAddr=42.194.222.32:9876;42.194.222.32:9877
#所属集群名字,名字一样的节点就在同一个集群内
brokerClusterName=xiliu-Cluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker01
#brokerid,0就表示是Master>0的都是表示 Slave
brokerId=0
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
brokerIp1=42.194.222.32
brokerIp2=42.194.222.32
#Broker 对外服务的监听端口
listenPort=10911

2.2 创建第2个master broker
取名 broker02

docker create --net host --name rmqbroker02 \
-e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-v /rmq/rmqbroker02/conf/broker.conf:/etc/rocketmq/broker.conf \
-v /rmq/rmqbroker02/logs:/opt/logs \
-v /rmq/rmqbroker02/store:/opt/store \
foxiswho/rocketmq:broker-4.3.2

在这里插入图片描述
修改配置

namesrvAddr=42.194.222.32:9876;42.194.222.32:9877
brokerClusterName=xiliu-Cluster
brokerName=broker02
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
#刷盘方式 异步刷盘
flushDiskType=ASYNC_FLUSH
brokerIp1=42.194.222.32
brokerIp2=42.194.222.32
listenPort=10811

在这里插入图片描述

2.3 创建第1个slave broker
slave broker01

docker create --net host --name rmqbroker03 \
-e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-v /rmq/rmqbroker03/conf/broker.conf:/etc/rocketmq/broker.conf \
-v /rmq/rmqbroker03/logs:/opt/logs \
-v /rmq/rmqbroker03/store:/opt/store \
foxiswho/rocketmq:broker-4.3.2

配置

namesrvAddr=42.194.222.32:9876;42.194.222.32:9877
brokerClusterName=xiliu-Cluster
brokerName=broker01
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
brokerIp1=42.194.222.32
brokerIp2=42.194.222.32
listenPort=10711

2.4 创建第2个slave broker
slave broker02

docker create --net host --name rmqbroker04 \
-e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-v /rmq/rmqbroker04/conf/broker.conf:/etc/rocketmq/broker.conf \
-v /rmq/rmqbroker04/logs:/opt/logs \
-v /rmq/rmqbroker04/store:/opt/store \
foxiswho/rocketmq:broker-4.3.2

配置

namesrvAddr=42.194.222.32:9876;42.194.222.32:9877
brokerClusterName=xiliu-Cluster
brokerName=broker02
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
brokerIp1=42.194.222.32
brokerIp2=42.194.222.32
listenPort=10611

3. 启动容器

先启动nameserver:docker start rmqserver01 rmqserver02

在这里插入图片描述

在启动broker:docker start rmqbroker01 rmqbroker02 rmqbroker03 rmqbroker04

在这里插入图片描述

三、验证集群

由于我部署了rocketmq-console管理工具,所以可以直接进入控制台看到相关集群信息。集群搭建完成
在这里插入图片描述


总结

以上就是本文的主要内容了。本文主要介绍了RocketMQ双主双从的集群服务搭建,环境搭建起来还是比较容易,主要还是要自己动手去搭建,熟悉一些配置。 感谢大家的阅读,如有疑问之处,欢迎在评论区留言交流~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java升级之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值