理想汽车大规模 Apache RocketMQ 集群部署最佳实践

简介: 作者:孙航达,理想汽车智能云部中间件开发工程师,目前主要负责 Apache RocketMQ、ShardingSphere Proxy、全量数据迁移中间件的开发和运维工作。

为什么要快速部署Apache RocketMQ?


理想汽车作为一家新能源汽车制造商。我们与一般互联网业务特殊之处是多了一个物联网。随着公司的成长业务容量越来越大,在这个过程中,业务对于基础架构的要求也越来越高,我们面临的主要问题有单云资源扩容受限,单云单地域的容灾,单云供应商强依赖,物联网单点接入等问题。


为了满足中心业务连续性,增强抗风险能力,实现韧性架构,多云多活作为一种可靠的高可用部署架构,成为各大互联网公司的首要选择。
业务进行单元化,部署在不同云上 VDC。利用 SDE 的技术手段一键拉起 VDC,快速部署基础设施、中间件、业务应用,创建各种资源。Apache RocketMQ 作为重要的基础中间件,它的快速部署能力影响整个 VDC 的拉起速度。


如何实现快速部署Apache RocketMQ?


大家在部署 ApacheRocketMQ 集群通常的过程如下:

  1.     申请机器

  2.     申请域名

  3.     部署 Apache RocketMQ 集群

  4.     部署 Apache RocketMQ Exporter

  5.     Apache RocketMQ Exporter 接入监控

  6.     Apache RocketMQ 集群信息接入管控平台


大规模ApacheRocketMQ 集群如果采用人工部署时间将会以小时或者以天为单位,理想汽车内部使用 Terraform 基础架构自动化编排工具编排整个部署流程。其中部署 Apache RocketMQ 集群作为原子能力使用 Ansible Playbook 实现。01


效果展示


完整地部署一套 ApacheRocketMQ,在管控平台上仅仅需要填写集群名称、namesrv 和 broker 部署规模及其机器配置等少数几个参数,即可完成集群的快速部署。

640 (1).png


部署过程中,Terraform 调用管控平台的集群信息接入接口完成整个部署流程。

640 (1).png


最后在 prometheus 的 consul 集群上看到 Apache RocketMQ Exporter 已经成功注册。

640 (1).png


Apache RocketMQ Playbook介绍


ApacheRocketMQ Playbook 可以部署一个完整 Apache RocketMQ 集群(包括 Apache RocketMQ Exporter)。Apache RocketMQPlaybook 具有幂等性,重复执行时不会重启正在运行的进程,可以进行 Apache RocketMQ 集群的在线扩容。因为 Apache RocketMQ 集群缩容涉及到数据的收缩,一般不考虑在 ApacheRocketMQ Playbook 上支持缩容。Apache RocketMQ Playbook 集成了部署环境初始化、可运行包下载、os 参数调优、broker 最佳配置、ApacheRocketMQ 集群部署、Apache RocketMQ Exporter 部署、添加开机自启动机制等任务编排到一起,实现了大规模集群自动化部署。


Apache RocketMQ Playbook使用


01


首先安装Ansible


Ansible 是近些年 Github 关注度最高、最受欢迎的自动化运维工具。它可以进行配置管理和应用部署。实现了批量系统配置、批量程序部署、批量运行命令等功能。

安装文档:https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html


02

下载 Apache RocketMQ Playbook


Apache RocketMQPlaybook 入口文件为 rocketmq.yml。


rocketmq.yml 包含 namesrv.yml、broker.yml、exporter.yml 这 3 个文件,分别部署 Apache RocketMQ Namesrv、Apache RocketMQBroker、Apache RocketMQ Exporter。
rocketmq.yml 可以单独执行,部署一个完整的 Apache RocketMQ 集群,也可以每个文件单独执行。
hosts 文件配置了部署的机器列表以及 Apache RocketMQ 配置。

下载地址:https://github.com/apache/rocketmq-externals/tree/master/rocketmq-ansible

03


根据需要修改配置文件


  • hosts文件主要描述了部署的机器列表和 Apache RocketMQ 配置信息。


#ApacheRocketmq Namesrv 部署机器列表

[rocketmq_namesrv]
127.0.0.1
127.0.0.2

#ApacheRocketmq Broker 部署机器列表及每台机器的角色配置配置

[rocketmq_broker]
127.0.0.3brokerName=broker-a brokerId=0 brokerRole=ASYNC_MASTER
127.0.0.4brokerName=broker-a brokerId=1 brokerRole=SLAVE

#ApacheRocketmq Broker 公共配置

[rocketmq_broker:vars]
brokerClusterName=DefaultCluster
namesrvAddr=127.0.0.1:9876;127.0.0.2:9876
storePathRootDir=/data/rocketmq/store

#ApacheRocketmq Exporter 部署机器列表

[rocketmq_exporter]
127.0.0.5

#ApacheRocketmq Exporter 公共配置

[rocketmq_exporter:vars]
namesrvAddr=127.0.0.1:9876;127.0.0.2:9876
webTelemetryPath=/metrics
rocketmqVersion=V4_7_1
  • 修改全局变量

vars/main.yml 配置了 Apache RocketMQ 的部署路径、数据路径。需要根据自己公司的部署规范调整。
# Theglobal variable

rocketmq_deploy_path:/app
rocketmq_log_path:/data
  • 修改 namesrv 变量

namesrv/vars/main.yml 配置了 Apache RocketMQ 可运行文件下载地址、namerv 部署路径(可以是全局变量的子路径)、namesrv 日志路径。
#namesrv variable

rocketmq_download_url:https://dlcdn.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
rocketmq_deploy_path:/app
rocketmq_log_path:${user.home}
  • 修改 broker 变量

broker/vars/main.yml 配置了 Apache RocketMQ 可运行文件下载地址、broker 部署路径(可以是全局变量的子路径)、broker 日志路径。
# brokervariable

rocketmq_download_url:https://dlcdn.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
rocketmq_deploy_path:/app
rocketmq_log_path:${user.home}
  • 修改 exporter 变量

exporter/vars/main.yml 配置了 Apache RocketMQ Exporter 可运行文件下载地址、ApacheRocketMQ Exporte 部署目录。注:ApacheRocketMQ Exporter 需要自行编辑打包,上传到公司内网。
#exportervariable#exporterneed build by yourself

rocketmq_exporter_download_url:http://rocketmq.exporter/rocketmq-exporter-0.0.2-SNAPSHOT.jar
rocketmq_exporter_deploy_directory:/app/exporter


执行Apache RocketMQ Playbook


ansible-playbook/path/rocketmq.yml -i /path/hosts

注:/path 需要根据实际路径修改。部署路径冗余配置是为了让 3 个子 playbook 具有单独执行的能力。


日常运维可使用的命令

#ApacheRocketMQ Broker 启动、停止

systemctlstart mqbroker
systemctlstop mqbroker

#ApacheRocketMQ Namesrv 启动、停止

systemctlstart mqnamesrv
systemctlstop mqnamesrv

#ApacheRocketMQ Exporter 启动、停止

systemctlstart mqexporter
systemctlstop mqexporter



最后

基于 ApacheRocketMQ Playbook 的部署能力,可以封装出极简参数的部署接口集成到管控平台上,最后通过可视化的界面,在分钟级完成大规模 Apache RocketMQ 集群的快速部署。

相关实践学习
消息队列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
相关文章
|
6月前
|
分布式计算 大数据 数据处理
Apache Spark:提升大规模数据处理效率的秘籍
【4月更文挑战第7天】本文介绍了Apache Spark的大数据处理优势和核心特性,包括内存计算、RDD、一站式解决方案。分享了Spark实战技巧,如选择部署模式、优化作业执行流程、管理内存与磁盘、Spark SQL优化及监控调优工具的使用。通过这些秘籍,可以提升大规模数据处理效率,发挥Spark在实际项目中的潜力。
465 0
|
12天前
|
消息中间件 监控 大数据
优化Apache Kafka性能:最佳实践与调优策略
【10月更文挑战第24天】作为一名已经对Apache Kafka有所了解并有实际使用经验的开发者,我深知在大数据处理和实时数据流传输中,Kafka的重要性不言而喻。然而,在面对日益增长的数据量和业务需求时,如何保证系统的高性能和稳定性成为了摆在我们面前的一个挑战。本文将从我的个人视角出发,分享一些关于如何通过合理的配置和调优来提高Kafka性能的经验和建议。
40 4
|
4月前
|
消息中间件 人工智能 Apache
Apache RocketMQ 中文社区全新升级!
RocketMQ 中文社区升级发布只是起点,我们将持续优化体验细节,推出更多功能和服务,更重要的是提供更多全面、深度、高质量的内容。
564 14
|
3月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
207 2
|
5月前
|
消息中间件 安全 API
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
287 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
|
5月前
|
消息中间件 安全 Apache
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
180 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(4)
|
5月前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
5月前
|
消息中间件 安全 Apache
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
240 0
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)
|
4月前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ 作为一款流行的分布式消息中间件,被广泛应用于各种大型分布式系统和微服务中,承担着异步通信、系统解耦、削峰填谷和消息通知等重要的角色。随着技术的演进和业务规模的扩大,安全相关的挑战日益突出,消息系统的访问控制也变得尤为重要。然而,RocketMQ 现有的 ACL 1.0 版本已经无法满足未来的发展。因此,我们推出了 RocketMQ ACL 2.0 升级版,进一步提升 RocketMQ 数据的安全性。本文将介绍 RocketMQ ACL 2.0 的新特性、工作原理,以及相关的配置和实践。
13636 4
|
6月前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。
188770 165

相关产品

  • 云消息队列 MQ
  • 推荐镜像

    更多
    下一篇
    无影云桌面