本文英文原文来自RocketMQ官方部署文档

文章目录

  • 前提
    • 准生产环境部署
      • 命名服务
      • 代理服务
  • 配置
    • 代理服务配置
  • 命令行管理工具
    • 如何访问
    • 如何使用
  • 复制模式
    • 复制:同步/异步 代理服务
    • 如何配置
    • 部署

本章节介绍了准生产环境部署方案。综合来讲,我们要部署一套弹性伸缩并且没有单点故障的RocketMQ集群。

前提

开始本章之前,你需要先了解过快速开始,并且熟悉RocketMQ的组件和核心概念。

准生产环境部署

命名服务

为了保证单节点故障时集群仍然可运行,建议设置2台以上的命名服务。这样只要有一台命名服务还在运行,整个集群就是可用的。

命名服务遵循无共享的设计模式。代理服务会将心跳信息发送到所有命名服务。生产者和消费者能够从任意一台命名服务中查询元数据,来发送/消费消息。

代理服务

代理服务能够根据角色分为两种类型:主节点与从节点。主节点能够提供读写访问,而从节点只能够提供读服务。

为了部署一套没有单点故障的RocketMQ集群,我们应该有一系列的代理服务集。代理服务集群中,代理ID设置为0的就是主节点,非0的就是从节点。同一个集合中的代理服务的代理名称相同。在实际生产中,我们每个代理服务集群中至少应该有两个代理服务,每个主题都在两个或多个代理服务。

配置

当部署一个RocketMQ集群时,推荐配置如下:

代理服务配置

属性名称 默认值 说明
listenPort 10911 客户端调用的端口
namesrvAddr null 命名服务的地址
brokerIP1 网卡的网络地址 如果本机有多张网卡,应当定义
brokerName null 代理服务的名称
brokerClusterName DefaultCluster 当前代理服务归属于哪个集群
brokerId 0 当代理ID为0时表示为主节点,其他的正整数表示从节点
storePathCommitLog $HOME/store/commitlog/ 提交日志的存储地址
storePathConsumerQueue $HOME/store/consumequeue/ 消费队列的文件地址
mapedFileSizeCommitLog 1024 * 1024 * 1024(1G) 提交日志的映射文件的大小
deleteWhen 04 回收次数,用于删除提交日志
fileReserverdTime 72 删除提交日志之前保存的小时数
brokerRole ASYNC_MASTER 代理服务角色,共三种(SYNC_MASTER/ASYNC_MASTER/SLAVE)
flushDiskType ASYNC_FLUSH 刷新模式,包含两种(SYNC_FLUSH/ASYNC_FLUSH)。代理服务中,同步刷新模式是指每个消息在通知产生者前写入磁盘,异步刷新模式是指批量提交从而获得更好的性能

命令行管理工具

RocketMQ提供了命令行界面的管理工具用于查询,管理和诊断问题。

如何访问

命令行管理工具是RocketMQ自带,无论在下载的编译后版本,或者你自己从源码进行编译,都已经内置了。
如果你需要源码,在rocketmq-tools模块中包含对应的源码。

如何使用

管理工具的使用是很简单的。我们使用类linux环境来进行演示。
切换到RocketMQ的根目录下的 bin 文件夹,输入命令 bash mqadmin,你会看到下面的帮助菜单:

The most commonly used mqadmin commands are:updateTopic Update or create topicdeleteTopic Delete topic from broker and NameServer.updateSubGroup Update or create subscription groupdeleteSubGroup Delete subscription group from broker.updateBrokerConfig Update broker's configupdateTopicPerm Update topic permtopicRoute Examine topic route infotopicStatus Examine topic Status infotopicClusterList get cluster info for topicbrokerStatus Fetch broker runtime status dataqueryMsgById Query Message by IdqueryMsgByKey Query Message by KeyqueryMsgByUniqueKey Query Message by Unique keyqueryMsgByOffset Query Message by offsetprintMsg Print Message DetailprintMsgByQueue Print Message DetailsendMsgStatus send msg to broker.brokerConsumeStats Fetch broker consume stats dataproducerConnection Query producer's socket connection and client versionconsumerConnection Query consumer's socket connection, client version and subscriptionconsumerProgress Query consumers's progress, speedconsumerStatus Query consumer's internal data structurecloneGroupOffset clone offset from other group.clusterList List all of clusterstopicList Fetch all topic list from name serverupdateKvConfig Create or update KV config.deleteKvConfig Delete KV config.wipeWritePerm Wipe write perm of broker in all name serverresetOffsetByTime Reset consumer offset by timestamp(without client restart).updateOrderConf Create or update or delete order confcleanExpiredCQ Clean expired ConsumeQueue on broker.cleanUnusedTopic Clean unused topic on broker.startMonitoring Start MonitoringstatsAll Topic and Consumer tps statsallocateMQ Allocate MQcheckMsgSendRT check message send response timeclusterRT List All clusters Message Send RTgetNamesrvConfig Get configs of name server.updateNamesrvConfig Update configs of name server.getBrokerConfig Get broker config by cluster or special broker!queryCq Query cq command.sendMessage Send a messageconsumeMessage Consume messageSee 'mqadmin help <command>' for more information on a specific command.

使用 ‘mqadmin help’ 命令可以针对具体的命令查看更多信息。 比如你想查看 ‘clusterList’ ,输入 bash mqadmin help clusterList你会看到:

usage: mqadmin clusterList [-h] [-i <arg>] [-m] [-n <arg>]-h,--help Print help-i,--interval <arg> specify intervals numbers, it is in seconds-m,--moreStats Print more stats-n,--namesrvAddr <arg> Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876

复制模式

为了防止发布成功的消息丢失,RocketMQ提供了复制模式来提高系统健壮性和高可用,复制模式分为两种:同步和异步。

复制:同步/异步 代理服务

类似其他的复制系统,同步代理会等到从节点复制完成之后再返回成功信号,异步代理则是主节点处理完成后立即返回成功信号。

如何配置

在分布式RocketMQ的配置文件夹内已经内置了三种配置:

2m-2s-sync
2m-2s-async
2m-noslave

注意:所有配置都使用了异步刷新(ASYNC_FLUSH)。

部署

2m-2s-sync 为例。按照快速开始章节介绍的方式启动两个命名服务。假设IP时 192.168.0.2192.168.0.3
然后启动代理服务(假设RocketMQ位置是在 /home/rocketmq/dist

>cd /home/rocketmq/dist/bin
>bash mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n 192.168.0.2:9876,192.168.0.3:9876
>bash mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
>bash mqbroker -c ../conf/2m-2s-sync/broker-b.properties -n 192.168.0.2:9876,192.168.0.3:9876
>bash mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
How to verify
Execute the following command to verify according to the CLI section:
> bash mqadmin clusterlist

RocketMQ生产部署相关推荐

  1. 芋道 RocketMQ 安装部署

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 RP ...

  2. 服务器部署基础知识_我在生产部署期间学到的知识

    服务器部署基础知识 by Shruti Tanwar 通过Shruti Tanwar 我在生产部署期间学到的知识 (What I learned during production deploymen ...

  3. Linkis生产部署服务器配置参考指南

    1.介绍 ​ Linkis已经在微众银行大数据生产平台稳定运行两年有余,开发运维人员总结出了一套Linkis生产部署的指南,以让Linkis在稳定运行的基础上发挥出它最大的性能,同时也能够节约服务器资 ...

  4. CentOS 7.2下Filebeat+Kafka+ELK生产部署(安全加固)

    01架构说明 在需要采集日志的服务器上部署Filebeat服务,它将采集到的日志数据推送到Kafka集群: Logstash服务通过input插件读取Kafka集群对应主题的数据,期间可以使用filt ...

  5. docker 部署 生产_Docker如何简化生产部署

    docker 部署 生产 最重要的是,现代发展的主要重点通常基于三个中心概念: 效率 可靠性 重复性 但是,当现代应用程序体系结构经常同时具有一系列变量而又在多个部署环境中进一步恶化时,您如何实现这三 ...

  6. centos7 最小安装 ELK7.9.0 生产部署 elasticsearch7.9.0 + kibana7.9.0 一键部署

    ##(ELK7.9.0生产部署 elasticsearch7.9) 1. 软件下载 百度网盘下载,官方下载太慢了 链接: https://pan.baidu.com/s/1LGFJnIYghJDLAh ...

  7. rocketmq安装部署过程(4.0.0版本)

    准备工作 3个虚拟机节点的构成如下 : 安装步骤 操作过程 1.安装包已经上传至其中1个节点. 2.解压缩安装包 命令:unzip rocketmq-all-4.0.0-incubating-bin- ...

  8. pig安装部署_【视频系列】K3S 入门到生产部署

    为什么选择 K3S CNCF认证的Kubernetes发行版 50MB安装包,500MB内存消耗 单一进程包含常用组件 支持多种数据库存储 同时支持x86_64,Arm64和Armv7 构建生产 K3 ...

  9. 常用于生产部署方式详解 灰度发布 滚动发布 蓝绿发布

    传统型 这种方式基本上很多中小型企业都在用,尤其是政府或是对企业内部的系统.通常都是直接停服务,将正在运行的程序包备份到指定目录,将新的程序包上传到服务器,停服务,替换老的包,启动服务. 优点: 1. ...

最新文章

  1. 解决spring配置c3p0连接池,tomcat无法正常启动
  2. LeetCode 489. 扫地机器人(DFS)
  3. 你知道应聘上一份机器学习的工作需要哪些条件吗?
  4. ceph 数据库_Facebook打开了动画库,Ceph在Red Hat找到了新家,等等
  5. (67)FPGA面试题-为priority encoder编写Verilog代码,实现MUX4_1
  6. (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍
  7. java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件
  8. css动漫效果库,Animate.css功能强大的纯CSS3动画库 - 资源分享
  9. web页面直接跳转至其他页面
  10. Java6开发WebService进阶
  11. STM32 电容触摸屏I2C转USB实现
  12. 代码精进之路 码农到工匠pdf_专访张建飞:阿里技术也提倡,优雅代码和整洁架构...
  13. 台式计算机cpu允许温度,台式机cpu温度多少正常 台式机cpu正常温度
  14. 如何做社群运营才能提高用户的活跃度?
  15. Linux高级命令(一)
  16. 【学习笔记】算法101--数学(二)2.3篇
  17. 解决windows防火墙拦截FTP连接
  18. 《网易裁员》这是一次失败的危机公关
  19. 听歌识曲也太牛了吧!只“音”奥秘在此……
  20. IDEA报错:Failed to obtain JDBC ConnectionCannot create PoolableConnectionFactory

热门文章

  1. django2.0 快速实现注册
  2. HTML,JS和CSS实现减肥周期计算(附源码)
  3. yolov8 瑞芯微RKNN和地平线Horizon芯片仿真测试部署
  4. 轨道运营管理专业自荐书_城市轨道交通运营管理专业自荐信范文【精选】
  5. 通达信l2接口公式数据共享的意义
  6. Redis(十六),mysql索引面试题索引失效
  7. iMonitor 365 远程监控软件怎样管理员工电脑?
  8. 怎么压缩照片的大小?学会这几种方法随意压缩!
  9. 蓝桥杯 BASIC-3 字母图形 c++实现
  10. Matlab函数封装为DLL供Cpp调用