Apache Pulsar 在 DC/OS 上部署实战:基于 Marathon 应用组的完整指南

发布时间:2026/9/24 22:15:37
Apache Pulsar 在 DC/OS 上部署实战:基于 Marathon 应用组的完整指南
消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载Apache Pulsar 官方将整套集群封装为 DC/OS 的 Marathon Application Group 交付本文以 deploy-dcos.md 为骨架完整讲解如何在 DC/OS基于 Apache Mesos 的数据中心操作系统上一条命令拉起包含 BookKeeper、broker、Prometheus/Grafana 的 Pulsar 集群并演示端到端生产消费验证与卸载流程。读完本文你将掌握 DC/OS 环境下的 Pulsar 部署命令、各组件组BookKeeper / broker / 监控的验证方法以及如何在真实 DC/OS 集群上运行 Java 客户端验证消息收发。DC/OS 与 Apache PulsarMarathon 应用组承载分布式消息系统DC/OSDataCenterOperatingSystem数据中心操作系统是一种分布式操作系统用于在 Apache Mesos 之上部署和管理应用程序与系统。Apache Pulsar 在 DC/OS 中以Marathon Application Group应用组的形式提供——Marathon 应用组允许把多个相关联的应用作为一组可管理的集合统一运行、扩缩容与删除恰好契合 Pulsar 集群由多个异构组件存储节点、消息代理、监控组件组成的拓扑结构。在进入部署之前先明确 DC/OS 部署所涉及的 Pulsar 核心角色详细术语表见 reference-terminology.mdBookieBookKeeper 单台服务器的名字本质上是 Pulsar 的存储服务器负责以 append-only 的 Ledger 结构持久化消息BrokerPulsar 集群中的无状态组件运行 HTTP 服务REST 管理接口与 topic lookup和 dispatcher处理所有消息传输的异步 TCP 服务器消息数据端口默认监听 6650见 broker.conf 中brokerServicePort6650ZooKeeper由 DC/OS 自带提供承担 Pulsar 的元数据存储职责。部署前准备版本、集群与资源配置要在一套 DC/OS 环境中运行 Pulsar需要满足以下前提条件DC/OS 版本1.9 或更高一个至少包含三个 agent 节点的 DC/OS 集群已安装DC/OS CLI 命令行工具获取 Pulsar 官方的PulsarGroups.json配置文件Marathon 应用组定义文件可使用 curl 下载$ curl -O https://raw.githubusercontent.com/apache/pulsar/master/deployment/dcos/PulsarGroups.jsonDC/OS 管理的 Mesos 集群中每个节点至少需要满足以下资源规格资源最低要求CPU4 核内存4 GB持久化磁盘60 GB总计如果集群资源不足或更高配可以直接修改PulsarGroups.json中的资源配额定义使其与 DC/OS 集群实际可用资源匹配。一条命令拉起集群dcos marathon group add获取PulsarGroups.json后即可通过 DC/OS 命令行接口部署整个 Pulsar 集群$ dcos marathon group add PulsarGroups.json该命令会以三个应用组的形式在 Docker 容器中部署完整的 Pulsar 集群bookkeeper 组3 个 bookie每个 agent 节点 1 个 bookie外加 1 个bookie recovery自动恢复实例brokers 组3 个 Pulsar broker每个节点 1 个 broker外加 1 个 admin 实例monitory 组1 个 Prometheus 实例和 1 个 Grafana 实例。运行 DC/OS 时集群中已经有一个 ZooKeeper 运行在master.mesos:2181因此无需再单独安装或启动 ZooKeeperPulsar 的 bookie 与 broker 会直接复用该地址完成元数据协调。命令执行后打开 DC/OS 的 GUI 界面本示例中地址为http://m1.dcos点击Services标签页即可看到多个应用正处于部署过程中。验证 BookKeeper 组bookie 与自动恢复在父级pulsar组下点击进入bookkeeper子组即可监控 BookKeeper 集群的部署状态。此时 3 个 bookie 的状态应显示为绿色表示 bookie 已成功部署并正在运行。你可以点击进入任意 bookie 实例查看更详细的信息例如 bookie 的运行日志。若想通过 ZooKeeper 查看 BookKeeper 的注册信息可访问http://m1.dcos/exhibitorDC/OS 自带的 Exhibitor 界面。在本示例中available目录下可以看到 3 个 bookie 的注册节点——这意味着 BookKeeper 集群已经完成选主并进入可用状态。从源码层面看bookie 是 Pulsar 存储层 Apache BookKeeper 的服务端相关存储概念如 Ledger 的定义见 reference-terminology.mdDC/OS 的 bookkeeper 组同时部署的 bookie recovery 实例则负责在 bookie 故障后自动执行 ledger 修复这是 Pulsar 数据高可用的关键机制。验证 broker 组负载均衡与 managed-ledgers与 BookKeeper 组类似点击brokers子组即可查看 Pulsar broker 的运行状态。3 个 broker 全部变为绿色即表示部署成功。同样可以点入每个 broker 实例查看运行日志。通过 Exhibitor 的 Web UI 也可以查看 broker 集群在 ZooKeeper 中的注册信息。本示例中可以看到loadbalance负载均衡和managed-ledgers受管 ledger 元数据目录已经创建说明 broker 已经完成初始化并向 ZooKeeper 注册了自身的负载均衡与 ledger 管理状态。这些目录正是 Pulsar broker 无状态扩展与 BookKeeper 存储协作的元数据基础managed-ledgers记录 topic 到 ledger 的映射loadbalance记录 broker 之间的负载分布。broker 对外提供消息服务的端口默认是 6650brokerServicePort6650HTTP 管理接口默认 8080webServicePort8080这些默认值定义于 broker.conf后续客户端连接会用到 6650 端口。监控组Prometheus 与 Grafanamonitory组由 Prometheus 和 Grafana 两个实例组成为集群提供指标采集与可视化。Prometheus点击prom实例可以获取 Prometheus 的访问端点本示例为192.168.65.121:9090。访问该端点可看到 Prometheus 自带的 Dashboard其中http://192.168.65.121:9090/targets页面会列出所有被抓取的采集目标——本示例中所有 bookie 和 broker 都已出现在 targets 列表中说明指标抓取链路已打通。Grafana点击grafana实例可以获取 Grafana 的访问端点本示例为192.168.65.121:3000。访问该端点即可进入 Grafana 仪表盘Pulsar 的指标如消息吞吐、延迟、积压等会以可视化图表呈现。端到端验证在 DC/OS 上运行 Producer 与 Consumer集群就绪后可以通过一个简单的 Java 客户端示例验证 Pulsar 在 DC/OS 上真正工作。克隆并准备 Pulsar Java 教程从 Pulsar 社区提供的教程仓库中克隆示例代码$ git clone https://github.com/streamlio/pulsar-java-tutorial该仓库包含一个简单的 Pulsar consumer 和 producer更详细的信息见仓库 README。修改 SERVICE_URL 指向 DC/OS 中的 broker将ConsumerTutorial.java与ProducerTutorial.java两个文件中的SERVICE_URL从默认的pulsar://localhost:6650改为pulsar://a1.dcos:6650其中pulsar://a1.dcos:6650是 broker 服务端点a1.dcos是运行了 broker 的 DC/OS 客户端 agent 主机名也可以用该 client agent 的 IP 地址直接替换6650即上文提到的 broker 消息服务端口。每个 broker 实例的端点详情都可以从 DC/OS GUI 中获取。调整消息数量并编译教程示例中 producer 默认只发送 10 条消息为了方便观察将ProducerTutorial.java的 main 方法中的消息数量从 10 改为 10000000随后编译项目$ mvn clean package运行 consumer 与 producer分别执行以下命令启动 consumer 和 producer# 运行 consumer $ mvn exec:java -Dexec.mainClasstutorial.ConsumerTutorial # 运行 producer $ mvn exec:java -Dexec.mainClasstutorial.ProducerTutorial运行后通过 DC/OS GUI 即可观察到 producer 持续生产消息、consumer 持续消费消息。这里依赖的正是 Pulsar 客户端基于二进制协议与 broker 的 6650 端口通信见 client.conf 中brokerServiceUrlpulsar://localhost:6650/的默认形态DC/OS 场景只需把 localhost 换成 agent 主机名。查看 Grafana 指标输出在 producer 与 consumer 运行期间打开 Grafana 即可看到实时的运行指标——包括消息生产/消费速率、积压量等用于直观验证消息链路吞吐。卸载 Pulsar随时可以通过以下两种方式关闭并卸载 DC/OS 上的pulsar应用通过 DC/OS GUI在 Pulsar 组的右侧点击操作菜单并选择Delete通过命令行$ dcos marathon group remove /pulsarMarathon 应用组的删除语义会递归地停止并清理组内所有应用bookie、broker、监控实例实现一次性完整下线。结合仓库源码镜像、端口与配置注入机制DC/OS 部署中的容器镜像与配置逻辑在仓库中均有对应实现理解它们有助于在PulsarGroups.json中做更细粒度的定制镜像选择DC/OS 部署默认使用apachepulsar/pulsar镜像如果希望在部署中启用全部内置 Pulsar IO connector如各类 source/sink则应改用apachepulsar/pulsar-all镜像后者已内置打包所有内置 connector。Pulsar 镜像的构建定义见 docker/pulsar/Dockerfile 与 docker/pulsar-all/Dockerfile。配置注入从 docker/pulsar/scripts/ 下的脚本如apply-config-from-env.py、apply-config-from-env-with-prefix.py、gen-yml-from-env.py可以推断镜像启动时会通过环境变量批量改写 broker/standalone 等配置文件——这正是 Marathon 应用组定义中通过env字段按实例定制 broker、bookie 参数的底层机制也是PulsarGroups.json中各组配置生效的原理。端口默认值broker 消息端口 6650、HTTP 端口 8080 的默认定义位于 broker.conf代理proxy的 6650 服务端口见 proxy.conf。在 DC/OS 中修改这些端口时需要同时同步调整PulsarGroups.json中的容器端口映射与客户端SERVICE_URL。综上DC/OS 为 Apache Pulsar 提供了一条高度自动化的交付路径以 Marathon 应用组统一编排 BookKeeper、broker 与监控组件复用 DC/OS 内置 ZooKeeper配合镜像环境变量注入实现参数化配置。掌握本文的部署、验证、端到端联调与卸载流程即可在生产环境中快速复制出一套可观测、可运维的 Pulsar 集群。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐在 DC/OS 上部署 Apache PulsarMarathon 应用组部署、验证与卸载实战在 DC/OS 上部署 Apache PulsarMarathon 应用组部署、验证与卸载实战 本文以 Apache Pulsar 官方文档中 DC/OS 部消息队列后端流处理Apache Pulsar 在 AWS 上的自动化部署基于 Terraform 与 Ansible 的完整实战指南Apache Pulsar 在 AWS 上的自动化部署基于 Terraform 与 Ansible 的完整实战指南 本篇技术指南讲解如何在 Amazon We消息队列后端流处理Apache Pulsar 基于 Docker 部署多组件集群实战指南Apache Pulsar 基于 Docker 部署多组件集群实战指南 导读 本文面向希望在 Docker 环境中快速搭建 Apache Pulsar 集群的开消息队列后端流处理上一篇魔兽争霸3终极兼容性修复指南WarcraftHelper完整使用教程下一篇grill-me 实战指南4 轮拷问把模糊想法磨成可辩护的决策创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考