新闻详情

新闻详情

首页 / 资讯中心 / 详情

Apache Pulsar 裸机(Bare Metal)集群部署实战指南:从 ZooKeeper 到 Broker 的完整部署流程

发布时间:2026/9/28 8:38:32来源:尧图网络
Apache Pulsar 裸机(Bare Metal)集群部署实战指南:从 ZooKeeper 到 Broker 的完整部署流程
消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载Apache Pulsar 的裸机部署是指直接在物理机或虚拟机上部署 ZooKeeper、BookKeeper 与 Pulsar Broker 等核心组件构建一个可用于生产或实验的自管理集群。本指南基于 Apache Pulsar 官方文档《Deploying a cluster on bare metal》展开并结合本仓库中的conf/配置模板与源码实现进行深度补充帮助读者掌握从下载二进制包、初始化集群元数据到启动 BookKeeper 集群、Pulsar Broker最后用pulsar-client验证集群连通性的完整流程同时涵盖可选的内置 Connector、Tiered Storage 与 Pulsar Functions 的启用步骤。部署概览与准备工作部署顺序部署一个 Pulsar 集群需要按照以下顺序依次完成各步骤存在明确的依赖关系部署 ZooKeeper 集群如果已有可复用的 ZooKeeper 集群则可跳过初始化集群元数据initialize-cluster-metadata只需执行一次部署 BookKeeper 集群部署一个或多个 Pulsar Broker。系统要求与机器规划Pulsar 当前支持 64 位macOS、Linux和Windows运行 Pulsar 需要安装 64 位 JRE/JDK 8 或更高版本。若已有现成的 ZooKeeper 集群则无需为 ZooKeeper 单独准备机器。官方推荐的裸机集群最小规模为6 台 Linux 机器或虚拟机3 台运行 ZooKeeper3 台同时运行一个 Pulsar Broker 和一个 BookKeeper bookiebroker 与 bookie 共享机器这也是默认架构一个覆盖所有 Pulsar Broker 主机的统一 DNS 名称。如果机器数量不足或者仅是在集群模式下试运行 Pulsar后续再扩展也可以将 ZooKeeper、bookie、broker 全部部署在同一台单节点上。每台集群机器都需要安装Java 8 或更高版本。下图展示了基础部署架构客户端通过单一 URL示例中为pulsar-cluster.acme.com与整个集群通信该 DNS 名称屏蔽了背后所有处理消息的 brokerPulsar broker 与 BookKeeper bookie 在同一批机器上运行broker 和 bookie 又共同依赖 ZooKeeper 完成协调。硬件选型建议进行容量规划时官方对不同类型的机器给出了基础建议ZooKeeper建议使用更轻量的机器或虚拟机。Pulsar 仅在周期性的协调与配置类任务中使用 ZooKeeper不依赖它处理基础的消息收发操作。例如在 AWS 上t2.small实例通常就够用。Bookie 与 Broker建议使用性能更强的机器。例如 AWS 的i3.4xlarge实例。同时建议为 Pulsar broker 配置高性能 CPU 和 10Gbps NIC网络接口控制器为 BookKeeper bookie 配置小而快的 SSD或带 RAID 控制器和电池供电写缓存的 HDD。在 conf/bookkeeper.conf 中可以看到这些建议对应的可调项journalDirectory写前日志目录默认data/bookkeeper/journal、flushInterval刷盘间隔默认 60000ms、useHostNameAsBookieID等参数都直接影响 bookie 的 I/O 行为。安装 Pulsar 二进制包必须在集群中的每一台机器上安装 Pulsar 二进制包包括运行 ZooKeeper 和 BookKeeper 的机器。可以通过以下方式之一下载二进制 tarball 发行包直接从 Pulsar 二进制发行版下载链接下载从 Pulsar 官方 downloads 页面下载从 Pulsar 官方 releases 页面下载使用wget$ wget pulsar:binary_release_url下载完成后解压并进入解压目录$ tar xvzf apache-pulsar-pulsar:version-bin.tar.gz $ cd apache-pulsar-pulsar:version解压后的目录包含以下子目录目录内容binPulsar 的命令行工具如pulsar与pulsar-adminconfPulsar 的配置文件包括 broker 配置、ZooKeeper 配置等dataZooKeeper 与 BookKeeper 使用的数据存储目录libPulsar 使用的 JAR 文件logs安装产生的日志以本仓库为例bin/pulsar-daemon脚本见 bin/pulsar-daemon明确支持broker、bookie、zookeeper、configuration-store、websocket、functions-worker等服务的守护进程管理对应目录结构中的bin目录。安装内置 Connectors可选自2.1.0-incubating版本起Pulsar 单独发布包含全部builtinconnector 的二进制发行包。如果需要启用这些内置 connector按下面步骤操作否则可跳过本节。内置 connector 的 nar 文件需要下载到每一个 broker 节点方式如下点击下载链接从 Apache 镜像下载 Pulsar IO Connectors 发行包从 Pulsar downloads 页面下载从 Pulsar releases 页面下载使用wget$ wget pulsar:connector_release_url/{connector}-pulsar:version.nar下载 nar 文件后将其复制到 pulsar 目录下的connectors目录中例如下载了pulsar-io-aerospike-pulsar:version.nar$ mkdir connectors $ mv pulsar-io-aerospike-pulsar:version.nar connectors $ ls connectors pulsar-io-aerospike-pulsar:version.nar ...本仓库中pulsar-io/模块下即包含 Aerospike、Elasticsearch、Kafka、Kinesis、JDBC、RabbitMQ、Redis、Mongo 等各类 connector 的源码安装后即可在 conf/broker.conf 中按需加载。安装 Tiered Storage Offloaders可选自2.2.0版本起Pulsar 单独发布包含 tiered storage offloaders 的二进制发行包。如需启用分层存储特性按下面步骤操作否则可跳过本节。在每一个 broker 节点上以下任一方式下载 offloaders tarball点击下载链接从 Apache 镜像下载 Pulsar Tiered Storage Offloaders 发行包从 Pulsar downloads 页面下载从 Pulsar releases 页面下载使用wget$ wget pulsar:offloader_release_url下载完成后在 pulsar 目录中解压 offloaders 包并将offloaders目录复制到 pulsar 目录下$ tar xvfz apache-pulsar-offloaders-pulsar:version-bin.tar.gz // you will find a directory named apache-pulsar-offloaders-pulsar:version in the pulsar directory // then copy the offloaders $ mv apache-pulsar-offloaders-pulsar:version/offloaders offloaders $ ls offloaders tiered-storage-jcloud-pulsar:version.nar本仓库中的 tiered-storage/jcloud 模块即对应tiered-storage-jcloud这个 offloader 的实现。分层存储特性的详细配置方法可参考 Tiered Storage cookbook 文档。部署 ZooKeeper 集群如果已有可复用的 ZooKeeper 集群可以跳过本节。ZooKeeper 负责为 Pulsar 管理各种关键的协调与配置类任务。部署 Pulsar 集群需要先部署 ZooKeeper必须先于所有其他组件。官方推荐部署3 节点的 ZooKeeper 集群。由于 Pulsar 并不重度依赖 ZooKeeper轻量级机器即可胜任。配置 ZooKeeper 服务器在 pulsar 目录下的 conf/zookeeper.conf 中配置所有 ZooKeeper 服务器。示例server.1zk1.us-west.example.com:2888:3888 server.2zk2.us-west.example.com:2888:3888 server.3zk3.us-west.example.com:2888:3888如果只有一台机器部署 Pulsar只需在配置文件中添加一个 server 条目。从仓库中的 conf/zookeeper.conf 模板可以看到其他关键默认参数tickTime2000、initLimit10、syncLimit5、dataDirdata/zookeeper、clientPort2181、admin.serverPort9990以及metricsProvider.httpPort8000Prometheus 指标导出端口等生产部署时可按需调整。设置 myid在每个主机上需要在该节点各自的myid文件中指定节点 ID。myid文件默认位于每台服务器的data/zookeeper目录下可通过dataDir参数修改。例如在zk1.us-west.example.com上设置myid$ mkdir -p data/zookeeper $ echo 1 data/zookeeper/myid在zk2.us-west.example.com上则是echo 2 data/zookeeper/myid依此类推。myid文件与多服务器配置的详细说明可参考 ZooKeeper 官方文档的 Multi-server setup guide。启动 ZooKeeper所有主机都完成zookeeper.conf配置和myid设置后即可在所有主机上使用pulsar-daemon命令行工具后台启动 ZooKeeper使用 nohup$ bin/pulsar-daemon start zookeeper如果计划在同一节点上同时部署 ZooKeeper 和 bookie则需要使用不同的 stats 端口启动 ZooKeeper避免端口冲突$ PULSAR_EXTRA_OPTS-Dstats_server_port8001 bin/pulsar-daemon start zookeeper初始化集群元数据ZooKeeper 部署完成后还需要为集群写入一些元数据。该元数据是针对实例中的每个集群写入一次且只需要写入一次。使用pulsarCLI 工具的initialize-cluster-metadata命令完成初始化。该命令可以在 ZooKeeper 集群中的任意机器上运行。示例$ bin/pulsar initialize-cluster-metadata \ --cluster pulsar-cluster-1 \ --zookeeper zk1.us-west.example.com:2181 \ --configuration-store zk1.us-west.example.com:2181 \ --web-service-url http://pulsar.us-west.example.com:8080 \ --web-service-url-tls https://pulsar.us-west.example.com:8443 \ --broker-service-url pulsar://pulsar.us-west.example.com:6650 \ --broker-service-url-tls pulsarssl://pulsar.us-west.example.com:6651从仓库源码看该命令的入口实现在 pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java它负责把集群名、各服务 URL 等元数据写入 ZooKeeper。各参数含义如下参数说明--cluster为集群指定一个名称--zookeeper集群的本地 ZooKeeper 连接串。该连接串只需包含 ZooKeeper 集群中的一个节点--configuration-store整个实例的配置存储连接串。与--zookeeper参数一样只需包含 ZooKeeper 集群中的一个节点--web-service-url集群的 Web 服务 URL含端口。应使用标准 DNS 名称。默认端口为 8080官方不建议改用其他端口--web-service-url-tls若启用了 TLS还需为集群指定 TLS Web 服务 URL。默认端口为 8443官方不建议改用其他端口--broker-service-url与集群内 broker 交互的 broker 服务 URL。应使用与 Web 服务 URL 相同的 DNS 名称但 scheme 使用pulsar。默认端口为 6650官方不建议改用其他端口--broker-service-url-tls若启用了 TLS还需为集群指定 TLS broker 服务 URL。默认端口为 6651官方不建议改用其他端口部署 BookKeeper 集群BookKeeper 负责 Pulsar 中所有持久化数据的存储必须部署一组 BookKeeper bookie 才能使用 Pulsar。官方推荐运行3-bookie 的 BookKeeper 集群。配置 BookKeeper bookiebookie 通过 conf/bookkeeper.conf 配置文件进行配置。配置 bookie 最关键的一步是确保zkServers设置为 ZooKeeper 集群的连接串。示例zkServerszk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181修改好zkServers后可以继续按需调整其他配置。仓库中的 conf/bookkeeper.conf 模板还给出了大量可调参数例如bookiePort3181bookie 服务端口、journalDirectorydata/bookkeeper/journal写前日志目录、advertisedAddress、allowLoopbackfalse、useHostNameAsBookieIDfalse、bookieDeathWatchInterval1000、flushInterval60000等。完整的 BookKeeper 配置参数列表可参见官方 BookKeeper 文档。启动 bookie在每台 BookKeeper 主机上完成 conf/bookkeeper.conf 配置后即可启动 bookie。可以后台启动使用 nohup也可以前台启动。后台启动使用pulsar-daemon工具$ bin/pulsar-daemon start bookie前台启动$ bin/bookkeeper bookie验证 bookie 是否正常在 bookie 上运行 BookKeeper shell 的bookiesanity命令可以验证单个 bookie 是否工作正常$ bin/bookkeeper shell bookiesanity该命令会在本地 bookie 上创建一个临时的 BookKeeper ledger写入几条记录读回后删除该 ledger。所有 bookie 启动完成后可以在任意 bookie 节点上使用 BookKeeper shell 的simpletest命令验证集群中所有 bookie 是否都在运行$ bin/bookkeeper shell simpletest --ensemble num-bookies --writeQuorum num-bookies --ackQuorum num-bookies --numEntries num-entries该命令会在集群上创建一个num-bookies大小的 ledger写入若干记录后删除该 ledger。部署 Pulsar BrokerPulsar Broker 是 Pulsar 集群中最后需要部署的组件。Broker 负责处理 Pulsar 消息并提供 Pulsar 的管理接口。官方推荐运行3 个 broker分别运行在已经运行 BookKeeper bookie 的 3 台机器上。配置 Brokerbroker 配置中最关键的要素是确保每个 broker 都能感知到已部署的 ZooKeeper 集群。需要确保 conf/broker.conf 中的zookeeperServers和configurationStoreServers参数正确。由于本场景只有 1 个集群且未单独部署配置存储configurationStoreServers指向与zookeeperServers相同的连接串zookeeperServerszk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181 configurationStoreServerszk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181同时还需要指定集群名称必须与初始化集群元数据时提供的名称一致clusterNamepulsar-cluster-1此外broker 和 web 服务的端口需要与初始化集群元数据时提供的端口保持一致尤其是使用了非默认端口时brokerServicePort6650 brokerServicePortTls6651 webServicePort8080 webServicePortTls8443仓库中的 conf/broker.conf 模板确认了这些默认值brokerServicePort6650、webServicePort8080TLS 端口默认留空默认关闭 TLSclusterName默认留空需自行填写。如果是在单节点集群中部署 Pulsar需要将 conf/broker.conf 中的副本相关设置改为1# Number of bookies to use when creating a ledger managedLedgerDefaultEnsembleSize1 # Number of copies to store for each message managedLedgerDefaultWriteQuorum1 # Number of guaranteed copies (acks to wait before write is complete) managedLedgerDefaultAckQuorum1仓库中的 conf/broker.conf 默认值为managedLedgerDefaultEnsembleSize2、managedLedgerDefaultWriteQuorum2、managedLedgerDefaultAckQuorum2即默认按 3 节点集群2 副本配置单节点部署时务必改为 1。启用 Pulsar Functions可选如需启用 Pulsar Functions按以下步骤操作编辑 conf/broker.conf通过设置functionsWorkerEnabled为true启用 functions workerfunctionsWorkerEnabledtrue编辑 conf/functions_worker.yml将pulsarFunctionsCluster设置为初始化集群元数据时提供的集群名称pulsarFunctionsCluster: pulsar-cluster-1仓库中的 conf/functions_worker.yml 模板还包含workerId、workerHostname、workerPort: 6750、pulsarServiceUrl: pulsar://localhost:6650、pulsarWebServiceUrl: http://localhost:8080等 functions worker 自身的服务与连接配置可一并按需调整。关于部署和管理 functions worker 的更多选项可参考 Deploy and manage functions worker 文档。启动 Broker完成 conf/broker.conf 的其他配置调整后即可启动 Pulsar 集群的 broker。与 ZooKeeper、BookKeeper 一样broker 可以前台或后台nohup启动。前台启动使用pulsar broker命令$ bin/pulsar broker后台启动使用pulsar-daemon工具$ bin/pulsar-daemon start broker成功启动所有 broker 后Pulsar 集群就绪。连接并验证集群集群启动后可以使用 Pulsar 客户端连接。pulsar-client工具随 Pulsar 二进制包附带可以向 Pulsar topic 发布和消费消息是验证集群是否正常运行的简单手段。修改客户端配置使用pulsar-client前先修改二进制包中的客户端配置文件 conf/client.conf。需要将webServiceUrl和brokerServiceUrl的值由默认的localhost改为分配给 broker/bookie 主机的 DNS 名称。示例webServiceUrlhttp://us-west.example.com:8080/ brokerServiceurlpulsar://us-west.example.com:6650/仓库中的 conf/client.conf 默认值为webServiceUrlhttp://localhost:8080/、brokerServiceUrlpulsar://localhost:6650/并提供了authPlugin、authParams、tlsAllowInsecureConnection、tlsTrustCertsFilePath等认证与 TLS 相关的可选配置项。发布消息修改完成后向 Pulsar topic 发布消息$ bin/pulsar-client produce \ persistent://public/default/test \ -n 1 \ -m Hello Pulsar如果初始化集群元数据时使用了不同于pulsar-cluster-1的集群名称topic 中可能需要使用不同的集群名称。消费消息也可以先打开另一个终端订阅该 topic再执行上面的发布$ bin/pulsar-client consume \ persistent://public/default/test \ -n 100 \ -s consumer-test \ -t Exclusive消息成功发布到 topic 后会出现在标准输出中----- got message ----- Hello Pulsar运行 Pulsar Functions如果已启用 Pulsar Functions现在就可以尝试运行 functions。创建一个 ExclamationFunction名为exclamationbin/pulsar-admin functions create \ --jar examples/api-examples.jar \ --classname org.apache.pulsar.functions.api.examples.ExclamationFunction \ --inputs persistent://public/default/exclamation-input \ --output persistent://public/default/exclamation-output \ --tenant public \ --namespace default \ --name exclamation通过触发trigger该 function 来检查它是否按预期运行bin/pulsar-admin functions trigger --name exclamation --trigger-value hello world输出如下hello world!从仓库源码看ExclamationFunction的实现位于 pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/ExclamationFunction.java其核心逻辑是在输入字符串末尾追加一个感叹号public class ExclamationFunction implements FunctionString, String { Override public String process(String input, Context context) { return String.format(%s!, input); } }这解释了为什么触发值hello world会得到输出hello world!。该类与examples/api-examples.jar中的其他示例一同构建可直接用于验证 functions worker 与 broker 的集成是否正常。小结与后续路径至此一个裸机部署的 Pulsar 集群已经完成部署并通过客户端验证。整个流程的核心顺序是ZooKeeper → 集群元数据初始化 → BookKeeper → Broker其中元数据初始化只执行一次broker 的clusterName与端口必须与初始化时保持一致单节点部署时还需下调 managed ledger 的副本参数。如需进一步扩展集群能力可参考以下仓库内容多集群部署参见 site2/website-next/versioned_docs/version-2.3.2/deploy-bare-metal-multi-cluster.md命令行工具完整参考参见 site2/website-next/versioned_docs/version-2.3.2/reference-cli-tools.md配置项完整参考参见 site2/website-next/versioned_docs/version-2.3.2/reference-configuration.mdFunctions worker 部署参见 site2/website-next/versioned_docs/version-2.3.2/functions-worker.md。注意本指南中的示例命令与配置基于二进制发行包的实际解压目录结构pulsar:version等占位符在文档生成时会被替换为对应发行版本号具体版本号与下载地址以实际发布的二进制包为准。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐Apache Pulsar 多集群裸机部署实战从 ZooKeeper 到 Broker 的完整部署指南Apache Pulsar 多集群裸机部署实战从 ZooKeeper 到 Broker 的完整部署指南 导读 本文档面向需要在生产环境以裸机非 Kubern消息队列后端流处理Apache Pulsar 裸机集群部署实战从 ZooKeeper 到 Broker 的完整指南Apache Pulsar 裸机集群部署实战从 ZooKeeper 到 Broker 的完整指南 本文档基于 Apache Pulsar 官方文档中的裸机B消息队列后端流处理Apache Pulsar 裸机Bare Metal集群部署完全指南ZooKeeper、BookKeeper 与 Broker 三步搭建Apache Pulsar 裸机Bare Metal集群部署完全指南ZooKeeper、BookKeeper 与 Broker 三步搭建 本文以 Apac消息队列后端流处理上一篇终极指南5步快速上手HunterPie游戏数据覆盖插件提升《怪物猎人世界》狩猎效率下一篇VRMConverterForVRChatVRChat与VRM模型格式双向转换的终极解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

网站留言板怎么做php选对服务器性能翻倍的实操指南 2026/9/28 9:38:47

网站留言板怎么做php选对服务器性能翻倍的实操指南

网站留言板怎么做php选对服务器性能翻倍的实操指南 网站做好了没人访问,往往不是内容差,而是后台响应慢到让人想关页。很多站长纠结PHP留言板哪家好,其实核心不在功能堆砌,而在底层架构能否扛住并发。 一、…

阅读更多 →
Unity 3D 虚拟展馆漫游系统开发全流程复盘:场景搭建、交互与性能优化 2026/9/28 9:38:41

Unity 3D 虚拟展馆漫游系统开发全流程复盘:场景搭建、交互与性能优化

前阵子做了一个基于 Unity 3D 和 C# 的飞机场漫游展馆系统,也就是把机场候机楼旁的航空文化展区做成一个可以在电脑上自由走动的三维虚拟展厅,参观者不用到现场,用鼠标和键盘就能逛完整个展馆,看飞机模型、点展板、听介绍。这个项…

阅读更多 →
餐饮业大模型Agent智能体实战:从工具调用到上下文管理的工程化指南 2026/9/28 9:38:41

餐饮业大模型Agent智能体实战:从工具调用到上下文管理的工程化指南

1. 项目背景与需求拆解1.1 九添菜菜的原始痛点说句实在话,刚接到“服范”这个项目时,团队内部其实吵过一轮。原因很简单:九添菜菜是一家快速扩张的连锁餐饮品牌,日均订单量上去了,但门店客服和点餐引导的人力完全跟不上…

阅读更多 →
从热搜到实战:DeepSeek套壳的工程化落地与优化指南 2026/9/28 9:38:40

从热搜到实战:DeepSeek套壳的工程化落地与优化指南

1. 从一条热搜说起:所谓“最强模型”到底强在哪前几天刷到一条消息,说日本某团队发布了号称“日本最强”的大模型,结果被网友扒出来底层疑似套了一层 DeepSeek 的壳。评论区吵成一片,有人喊“离谱”,有人说“这不就是常…

阅读更多 →
GPU指令与占用率:UE Shader优化的底层逻辑 2026/9/28 9:38:40

GPU指令与占用率:UE Shader优化的底层逻辑

1. 为什么 GPU 指令执行方式,决定了 Shader 优化的底层逻辑聊 UE Shader 优化,很多人第一反应是“把几个节点换成更省的计算方式”。我见过太多人一上来就把材质里的 Noise 节点换成便宜的版本,或者把某个加法改成乘法,结果帧率纹…

阅读更多 →
Python LSTM股市预测实战:从数据到模型完整方案 2026/9/28 9:38:39

Python LSTM股市预测实战:从数据到模型完整方案

简介:这份资源面向计算机、金融数据方向的学生与开发者,提供一套基于Python与LSTM模型实现股市预测的完整项目,可作为高分课程设计、期末大作业的参考方案,也适合想入门深度学习时序预测的初学者练手。压缩包共89个文件&#xff0…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉