RocketMQ部署

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: RocketMQ部署

本部分介绍准生产部署方案。通常来将,我们将部署一个没有单故障节点的弹性RocketMQ集群。

准生产部署

Name Server

为了保证当一个实例崩溃后集群仍可运行,推荐2或多个nameServer实例。只要有一个nameServer实例存活,整个集群
仍保持服务。nameServer遵守无共享设计范例。
Brokers发送心跳数据到所有的 nameServer。当发送/消费消息时,生产者和消费者可以从任意可用的nameServer查询元数据

Broker

Broker根据角色可以分为两种类别:master and slave。主Broker提供读写访问,从Broker仅接收读访问。
为了部署一个没有单故障节点的高可用的RocketMQ 集群,一系列broker集合应该被部署。
broker集合内包含一个brokerId 设置为0的主Broker和多个brokerIDs非0的从Broker。
broker集合内的所有broker有相同的brokerName。
最坏的情况,应该有至少2个broker在broker集合内。每个主题在2或多个broker存在。

配置

部署RocketMQ集群时,推荐使用下面的配置列表:

参数名称 默认值 描述
listenPort 10911 客户端监听端口
namesrvAddr null 命名服务地址
brokerIP1 InetAddress for network interface 如果有多个地址需配置
brokerName null 代理服务名称
brokerClusterName DefaultCluster broke属于哪个集群
brokerId 0 brokerID,0是主,正整数是从
storePathCommitLog $HOME/store/commitlog/ 提交日志文件路径
storePathConsumerQueue $HOME/store/consumequeue/ 消费队列文件路径
mapedFileSizeCommitLog 1024 1024 1024(1G) 用于提交日志的映射文件大小
deleteWhen 04 何时删除超过存储时间的提交日志
fileReserverdTime 72 提交日志删除前保存的小时数
brokerRole ASYNC_MASTER brokerRole角色 同步主(SYNC_MASTER)/异步主(ASYNC_MASTER)/从(SLVAE)
flushDiskType ASYNC_FLUSH 刷盘类型{SYNC_FLUSH/ASYNC_FLUSH}
刷盘类型

SYNC_FLUSH 模式,生产者确认前,每条消息刷盘
ASYNC_FLUSH 模式,组提交优势,性能更好。

复制模式

为了确保成功发布的消息不会丢失,RocketMQ提供复制模式来获得更强的持久性和高可用,两种复制模式:Sync & Async。

复制: Sync / Async Broker

类似多数复制系统,同步Broker一直等待,直到在确认前将提交日志复制到从。
异步Broker,消息被主处理后会立即返回。

如何配置

在配置文件下RocketMQ提供了三种预设的配置:

2m-2s-sync
2m-2s-async
2m-noslave
注意:所有配置都要使用 ASYNC_FLUSH。

Deployment

以 2m-2s-sync 部署为例。首先,启动两个name servers。假设它们的 IP 是192.168.0.2 和 192.168.0.3.

//192.168.0.2
> sh bin/mqnamesrv &

//192.168.0.3
> sh bin/mqnamesrv &

然后启动broker(假设RocketMQ 在/home/rocketmq/dist )。

>cd /home/rocketmq/dist/bin
//broker-a 主
>sh mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n 192.168.0.2:9876,192.168.0.3:9876
//broker-a 从
>sh mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
//broker-b 主
>sh mqbroker -c ../conf/2m-2s-sync/broker-b.properties -n 192.168.0.2:9876,192.168.0.3:9876
//broker-b 从
>sh mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties -n 192.168.0.2:9876,192.168.0.3:9876

//验证是否启动
> bash mqadmin clusterlist

数据清理

停服务:

> sh mqshutdown broker
> sh mqshutdown namesrv

删除store文件,重新建文件:

//删除store文件夹下内容
> rm -rf /usr/local/rocketmq/store/

//创建commitlog,consumequeue,index
> mkdir /usr/local/rocketmq/store/commitlog
> mkdir /usr/local/rocketmq/store/consumequeue
> mkdir /usr/local/rocketmq/store/index
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
11天前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
27 6
|
5月前
|
消息中间件 编解码 Docker
Docker部署RabbitMQ消息中间件
【7月更文挑战第4天】Docker部署RabbitMQ消息中间件
279 3
|
2月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
115 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
消息中间件
实践部署《云消息队列RabbitMQ实践》测评
《云消息队列RabbitMQ实践》解决方案原理清晰,尤其在异步通信和解耦方面解释详尽。对初学者而言,部分术语如消息持久化、确认机制及集群性能优化可更细致。部署过程文档详实,涵盖主要环节,但插件配置等细节存在环境问题,需查阅社区资料解决。该方案展示了RabbitMQ的高吞吐量、灵活路由和可靠消息传递能力,但在高可用性和消息丢失处理上可提供更深入配置建议。适用于高并发和解耦场景,如订单处理、日志收集,有助于提升系统可扩展性。总体部署体验良好,实用性较强。
54 0
|
4月前
|
消息中间件 存储 Kubernetes
k8s快速部署rocketMq及rocketMq-console-ng
k8s快速部署rocketMq及rocketMq-console-ng
|
4月前
|
消息中间件 监控 数据可视化
安装部署RabbitMQ
安装部署RabbitMQ
|
5月前
|
消息中间件 数据可视化 RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
1271 4
|
6月前
|
消息中间件 Kubernetes Android开发
消息队列 MQ产品使用合集之如何在kubernetes环境里面部署
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
6月前
|
消息中间件 监控 RocketMQ
Docker Compose 一键快速部署 RocketMQ
Docker Compose 一键快速部署 RocketMQ
131 0