☰
Apache Pulsar on DC/OS 部署全攻略:基于 Marathon 应用组的集群搭建、监控与端到端验证
2026/9/25 5:10:24 网站建设 项目流程
  • 消息队列
  • 后端
  • 流处理

【免费下载链接】pulsar

Apache Pulsar - distributed pub-sub messaging system

项目地址:https://gitcode.com/gh_mirrors/pulsar28/pulsar
点击查看免费下载

Apache Pulsar 官方提供了一套基于 DC/OS(数据中心操作系统)的部署方案:以 Marathon Application Group 的形式,将 BookKeeper 存储层、Pulsar Broker 服务层以及 Prometheus/Grafana 监控层一键编排到 Mesos 集群中。本文以 Apache Pulsar 2.3.0 官方部署文档为骨架,完整还原前置条件、命令行部署、GUI 验证、监控接入、生产消费端到端测试与卸载流程,并结合仓库源码补充端口、镜像与底层组件原理,帮助你在 DC/OS 1.9+ 集群上快速落地一套可运行的 Pulsar 集群。

提示:本文核心操作与命令继承自 deploy-dcos.md,文中涉及的文件路径均以当前仓库根目录为基准。

DC/OS 与 Apache Pulsar 的部署形态

DC/OS(DataCenter Operating System)是一款基于 Apache Mesos 的分布式操作系统,由 Mesosphere 创建并维护,用于在数据中心规模上部署和管理应用程序与系统。Apache Pulsar 以 Marathon Application Group(Marathon 应用组)的形式发布——应用组可以把多个相关应用当作一个可管理的集合统一运行,这正是 Pulsar 集群多组件(BookKeeper、Broker、监控)协同部署的理想载体。

关于镜像选择,官方文档给出了一条重要建议:如果希望在 Pulsar 部署中启用全部内置的 Pulsar IO 连接器,应使用apachepulsar/pulsar-all镜像代替默认的apachepulsar/pulsar镜像。从当前仓库的 pulsar-all Dockerfile 可以看到实现方式:它基于apachepulsar/pulsar:latest,并把/connectors(全部内置连接器)与/offloaders(分层存储卸载器)两个目录合入镜像:

FROM busybox as pulsar-all ARG PULSAR_IO_DIR ARG PULSAR_OFFLOADER_TARBALL ADD ${PULSAR_IO_DIR} /connectors ADD ${PULSAR_OFFLOADER_TARBALL} / RUN mv /apache-pulsar-offloaders-*/offloaders /offloaders FROM apachepulsar/pulsar:latest COPY --from=pulsar-all /connectors /pulsar/connectors COPY --from=pulsar-all /offloaders /pulsar/offloaders

两种镜像的定位在 docker/README.md 中有明确说明:apachepulsar/pulsar包含运行一个完整 Pulsar 集群所需的全部组件,apachepulsar/pulsar-all则在此基础上附加大量连接器与卸载器。具体连接器清单可参考 io-overview.md。

前置条件

在 DC/OS 上运行 Pulsar,需要准备以下环境:

  • DC/OS 版本 1.9 或更高;
  • 一个至少包含 3 个 agent 节点的 DC/OS 集群;
  • 已安装 DC/OS CLI 工具;
  • 获取PulsarGroups.json配置文件——该文件是本次部署的核心编排文件,位于 Apache Pulsar 官方仓库的deployment/dcos/目录下(随版本分支维护)。

获取该文件的方法:

$ curl -O https://raw.githubusercontent.com/apache/pulsar/master/deployment/dcos/PulsarGroups.json

说明:当前仓库副本的 deployment 目录下仅包含 kubernetes 与 terraform-ansible 两种部署方式,PulsarGroups.json需从 Apache Pulsar 官方仓库对应版本分支获取后使用。

DC/OS 托管的 Mesos 集群中,每个节点至少需要满足:

资源最低要求
CPU4 核
内存4 GB
总持久磁盘60 GB

如果你所在集群的资源规格不同,也可以直接修改PulsarGroups.json中的资源配置,使其匹配 DC/OS 集群的实际容量。该文件内为每个 Marathon 应用(bookie、broker、prometheus、grafana 等)声明了cpus、mem、disk等资源约束,部署前按需调整即可。

使用 DC/OS 命令行部署 Pulsar

完成准备后,通过 DC/OS CLI 执行一条命令即可完成部署:

$ dcos marathon group add PulsarGroups.json

该命令会以 Docker 容器实例的方式部署三个应用组,它们共同构成一个完整的 Pulsar 集群:

  1. BookKeeper 组:3 个 bookie(每个 agent 节点各 1 个,另含 1 个 bookie recovery 自动恢复实例);
  2. Pulsar Broker 组:3 个 broker(每个节点各 1 个,另含 1 个 admin 实例);
  3. 监控组:1 个 Prometheus 实例和 1 个 Grafana 实例。

这里有一个 DC/OS 特有的便利:DC/OS 自身已经运行了一套 ZooKeeper 集群(地址为master.mesos:2181),因此Pulsar 部署无需再单独安装或启动 ZooKeeper。Pulsar 的 broker 与 bookie 会直接复用这套内置 ZooKeeper 来存储元数据、完成服务发现。

命令执行完毕后,在浏览器中访问 DC/OS GUI(本例为 http://m1.dcos),点击Services标签页,即可看到多个应用正在部署中。关于 DC/OS GUI 各版本的具体用法,请参考你所部署版本的官方 GUI 文档(本文以 1.9 版本示例为准)。

BookKeeper 组:验证 bookie 集群状态

在 GUI 的父级pulsar组中点击bookkeeper组,即可查看 BookKeeper 集群的部署状态。此时 3 个 bookie 应显示为绿色,表示已成功部署并正常运行。

点击任意一个 bookie 实例,可以查看更详细的信息,例如该 bookie 的运行日志:

此外,还可以通过 Exhibitor 直接查看 ZooKeeper 中 BookKeeper 的注册信息:访问 http://m1.dcos/exhibitor,本例中 3 个 bookie 均注册在available目录下。

从 Pulsar 架构上看,bookie 是 Apache BookKeeper 的存储服务器,负责以 append-only ledger 的形式持久化消息(参见术语表 reference-terminology.md 中 Bookie 与 Ledger 的定义)。Pulsar 的消息可靠性正是建立在 bookie 的多副本持久化与自动恢复(bookie recovery)机制之上,这也是为什么部署中要为每个 agent 节点额外安排一个 recovery 实例,用于在 bookie 宕机后自动重建副本。

Pulsar Broker 组:验证 broker 集群状态

与 BookKeeper 组类似,点击brokers组查看 Pulsar broker 的运行状态:

同样可以点击每个 broker 实例查看详细信息与运行日志:

broker 集群信息同样可以通过 Web UI 在 ZooKeeper 中查看。本例中可以看到loadbalance和managed-ledgers目录已被创建——前者记录 broker 的负载均衡状态,后者记录由 broker 管理的 ledger 元数据:

从源码视角看,broker 是 Pulsar 集群中无状态的服务组件,负责客户端接入与消息分发。其默认服务端口在 conf/broker.conf 中定义:

brokerServicePort=6650 webServicePort=8080

其中 6650 是 broker 与客户端之间二进制协议(dispatcher,异步 TCP 服务)的通信端口,8080 是提供管理接口与 topic lookup 的 HTTP(REST)服务端口。DC/OS 部署教程中的客户端连接地址正是基于 6650 端口构造的pulsar://URL。

监控组:Prometheus 与 Grafana

monitory组由 Prometheus 和 Grafana 两个应用构成,为整个 Pulsar 集群提供指标采集与可视化能力:

Prometheus

点击prom实例可以获取 Prometheus 的访问端点,本例为192.168.65.121:9090。访问该端点可看到 Prometheus 仪表盘,其中 http://192.168.65.121:9090/targets 页面会列出当前被采集的所有 bookies 和 brokers:

Grafana

点击grafana实例获取 Grafana 的访问端点,本例为192.168.65.121:3000。访问该端点即可进入 Grafana 仪表盘:

关于 Prometheus 与 Grafana 与 Pulsar 的完整集成方式(指标抓取配置、常用监控面板等),可进一步参考同版本部署文档 deploy-monitoring.md。

在 DC/OS 上运行消费者与生产者:端到端验证

集群部署完成后,通过一个简单的 Java 消费者与生产者示例,可以直观验证 Pulsar 在 DC/OS 上的消息收发链路。

下载并准备 Pulsar Java 教程

首先克隆官方文档配套的 Pulsar Java 教程仓库(pulsar-java-tutorial),该仓库包含一个简单的 Pulsar consumer 与 producer 示例:

$ git clone https://github.com/streamlio/pulsar-java-tutorial

接下来需要修改两处代码:

  1. 修改 SERVICE_URL:将ConsumerTutorial.java和ProducerTutorial.java中的SERVICE_URL从pulsar://localhost:6650改为pulsar://a1.dcos:6650。pulsar://a1.dcos:6650指向 broker 服务端点;a1.dcos是运行 broker 的 DC/OS 客户端 agent 主机名,各 broker 实例的端点详情可以从 DC/OS GUI 中获取,也可以直接用该 client agent 的 IP 地址替换。

  2. 调整消息数量:将ProducerTutorial.java的 main 方法中消息数量从 10 改为 10000000(一千万),以便产生更多消息来观察吞吐与监控曲线。

然后编译项目:

$ mvn clean package

运行消费者与生产者

分别执行以下命令启动 consumer 和 producer:

$ mvn exec:java -Dexec.mainClass="tutorial.ConsumerTutorial"
$ mvn exec:java -Dexec.mainClass="tutorial.ProducerTutorial"

此时可以通过 DC/OS GUI 看到 producer 持续生产消息、consumer 持续消费消息的过程:

从源码层面看,consumer 与 producer 是 Pulsar 客户端 SDK 的核心入口(对应 pulsar-client 模块中的Consumer/Producer接口与ConsumerImpl/ProducerImpl实现)。示例中客户端通过pulsar://协议 URL 完成 topic lookup 与服务发现——broker 会动态告知客户端具体由哪个 broker 为对应 topic 提供服务,这正是 Pulsar 多 broker 集群下客户端无需感知拓扑即可收发消息的关键机制(参见术语表 reference-terminology.md 中 Topic Lookup 与 Service Discovery 的定义)。

查看 Grafana 指标输出

在 producer 与 consumer 运行期间,可以打开 Grafana 仪表盘查看实时的运行指标,包括吞吐、延迟、积压等关键监控数据:

卸载 Pulsar

你可以随时通过以下两种方式之一关闭并卸载 DC/OS 上的pulsar应用:

  1. 通过 DC/OS GUI:在 Pulsar 组的最右侧选择Delete。

  2. 通过命令行:

    $ dcos marathon group remove /pulsar

该命令会递归删除pulsar应用组下的全部子应用(bookies、brokers、Prometheus、Grafana 及其容器实例),完成集群的整体清理。

总结与延伸阅读

通过本文你可以看到,Apache Pulsar 在 DC/OS 上的部署高度自动化:一条dcos marathon group add命令即完成存储层、服务层、监控层三组应用的编排;内置 ZooKeeper 的复用省去了元数据服务的独立部署;GUI 与 Exhibitor 提供了直观的状态验证手段;而 Prometheus + Grafana 则让集群运行指标一目了然。

如果你想继续深入:

  • 部署时若需启用全部内置连接器,参考 pulsar-all Dockerfile 与 docker/README.md 了解镜像构成,或参阅 io-overview.md 查看连接器清单;
  • 了解 broker/bookie 等核心概念,参阅术语表 reference-terminology.md;
  • 掌握 Prometheus 与 Grafana 的指标接入细节,参阅 deploy-monitoring.md;
  • 查看 broker 默认端口与服务配置,参阅 conf/broker.conf。

版本提示:本文操作步骤与命令以 Apache Pulsar 2.3.0 版本文档为准;若使用其他版本,请以对应版本的官方部署文档与PulsarGroups.json文件为准。

  • 消息队列
  • 后端
  • 流处理

【免费下载链接】pulsar

Apache Pulsar - distributed pub-sub messaging system

项目地址:https://gitcode.com/gh_mirrors/pulsar28/pulsar
点击查看免费下载
上一篇:推荐开源神器:ReProvision - 自动重签名iOS和tvOS应用
下一篇:2025年终极PS2模拟器使用指南:PCSX2完整教程与优化技巧

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询