ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Apache Pulsar Functions Worker 部署与集群管理实战指南

Apache Pulsar Functions Worker 部署与集群管理实战指南 消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载Pulsarfunctions-worker是 Apache Pulsar 中负责在集群模式下运行 Pulsar Functions 的逻辑组件。本指南以 Pulsar 2.3.2 版本文档为基础结合当前仓库中的真实配置文件与源码实现系统讲解 functions-worker 的两种部署模式与 broker 同进程运行、独立进程运行、关键配置参数、安全加固TLS / 认证 / 授权、代理路由以及常见故障排查方法。读完本文你将能够根据自身集群环境独立完成 functions-worker 的部署、验证与运维。Pulsar Functions 是运行在 broker 之外或之上的轻量级计算原语而functions-worker正是承载这些函数实例、负责函数包管理与元数据调度的核心服务。根据集群规模与资源隔离需求官方提供两种部署选项可二选一与 broker 一起运行作为 broker 进程的一部分启动独立运行在独立机器上以单独进程运行。说明下文示意图中的--- Service Urls ---线段表示 Pulsar 客户端与 Admin 工具连接集群所用的 Pulsar service URLs。与 broker 一起运行Run-with-Broker该模式下functions-worker 作为 broker 的一个内置服务随 broker 一起启动整体部署架构如上图所示。启用方式是在 conf/broker.conf 中设置functionsWorkerEnabledtrue当前仓库的默认配置文件中该参数位于 conf/broker.conf 的### --- Functions --- ###段落默认值为false# Enable Functions Worker Service in Broker functionsWorkerEnabledfalse将其改为true后broker 启动时即会初始化并运行 functions-worker。同时需要编辑 conf/functions_worker.yml 以定制 functions-worker 的各项行为。配置要点在 Run-with-Broker 模式下由于 functions-worker 运行在 broker 内部大部分配置例如 configurationStore、认证设置等会直接从 broker 配置中继承无需重复配置。但仍需重点关注以下两个必填项numFunctionPackageReplicas函数包function package在元数据存储中的副本数。默认值为1适用于 standalone 单机部署生产环境为保证高可用建议设置为大于或等于2。pulsarFunctionsCluster设置为你的 Pulsar 集群名称与 broker 配置中的clusterName保持一致。若 BookKeeper 集群启用了认证还需配置以下 BookKeeper 客户端认证参数bookkeeperClientAuthenticationPluginBookKeeper 客户端认证插件名bookkeeperClientAuthenticationParametersNameBookKeeper 客户端认证插件参数名bookkeeperClientAuthenticationParametersBookKeeper 客户端认证插件参数值。上述配置项在 conf/functions_worker.yml 中均有对应占位见 Bookie Authentication 注释段并在 WorkerConfig.java 中以bookkeeperClientAuthenticationPlugin第 374 行附近等字段解析。从源码结构看这些字段由WorkerConfig直接映射 YAML 配置项因此配置名必须与类字段保持一致。启动与验证完成 conf/functions_worker.yml 配置后启动或重启 broker 即可。随后可用以下命令验证 functions-worker 是否正常运行curl broker-ip:8080/admin/v2/worker/cluster若服务正常命令会返回集群中活跃 function workers 的列表输出形如[{workerId:worker-id,workerHostname:worker-hostname,port:8080}]独立运行Run-separately该模式将 functions-worker 作为独立进程部署在独立机器上部署拓扑如上图所示。注意独立模式下务必确保functionsWorkerEnabled保持为false避免误在 broker 中重复启动 functions-worker。独立模式配置独立运行需要显式配置以下参数对应 conf/functions_worker.yml 中的实际默认值Worker 参数workerId字符串类型在集群范围内唯一用于标识一台 worker 机器workerHostnameworker 机器的主机名workerPortworker server 监听的端口如无特殊需求保持默认即可仓库默认6750workerPortTlsworker server 监听的 TLS 端口默认6751。以上四项在 conf/functions_worker.yml 中默认配置为workerId: standalone workerHostname: localhost workerPort: 6750 workerPortTls: 6751对应源码定义位于 WorkerConfig.javaworkerId第 100 行、workerHostname第 105 行、workerPort第 110 行、workerPortTls第 115 行。函数包参数numFunctionPackageReplicas函数包副本数默认1。函数元数据参数pulsarServiceUrlPulsar broker 集群的 service URL仓库默认pulsar://localhost:6650TLS 场景使用pulsarssl://localhost:6651/pulsarWebServiceUrlPulsar broker 集群的 web service URL仓库默认http://localhost:8080TLS 场景使用https://localhost:8443/pulsarFunctionsCluster设置为 Pulsar 集群名称与 broker 配置中的clusterName一致。元数据管理相关配置在 conf/functions_worker.yml 中的默认值为pulsarFunctionsNamespace: public/functions pulsarFunctionsCluster: standalone functionMetadataTopicName: metadata clusterCoordinationTopicName: coordinate如果 broker 集群启用了认证functions-worker 与 broker 通信时还应配置认证插件及参数clientAuthenticationPluginclientAuthenticationParameters安全设置若要为 functions-worker 启用安全能力通常需要依次完成启用 TLS 传输加密启用认证 Provider启用授权 Provider启用 TLS 传输加密tlsEnabled: true tlsCertificateFilePath: /path/to/functions-worker.cert.pem tlsKeyFilePath: /path/to/functions-worker.key-pk8.pem tlsTrustCertsFilePath: /path/to/ca.cert.pem在 conf/functions_worker.yml 中TLS 相关配置默认关闭tlsEnabled: false同时提供了tlsAllowInsecureConnection、tlsEnableHostnameVerification、tlsCertRefreshCheckDurationSec默认 300 秒等增强选项。TLS 的详细原理与证书体系可参考仓库中的 Transport Encryption using TLS 文档。启用认证 ProviderauthenticationEnabled: true authenticationProviders: [ provider1, provider2 ]注意请将provider1, provider2替换为你要启用的实际 Provider 列表。若使用SASL 认证 Provider可在properties下补充saslJaasClientAllowedIds与saslJaasBrokerSectionNameproperties: saslJaasClientAllowedIds: .*pulsar.* saslJaasBrokerSectionName: Broker若使用Token 认证 Provider可在properties下补充 token 校验相关配置properties: tokenSecretKey: file://my/secret.key # If using public/private # tokenPublicKey: file:///path/to/public.key仓库的 conf/functions_worker.yml 中已内置 SASL 相关默认值saslJaasClientAllowedIds: .*pulsar.*、saslJaasServerSectionName: PulsarFunction并注释了tokenPublicKey/tokenPublicAlg等 Token 配置样例可作为实际部署的参考起点。启用授权 Provider启用授权需要配置authorizationEnabled与configurationStoreServers——认证 Provider 通过连接configurationStoreServers获取命名空间策略namespace policiesauthorizationEnabled: true configurationStoreServers: configuration-store-servers同时应配置超级用户superuser角色列表超级用户可访问任意 admin APIsuperUserRoles: - role1 - role2 - role3仓库默认配置中authenticationEnabled、authorizationEnabled均为falseauthorizationProvider默认使用org.apache.pulsar.broker.authorization.PulsarAuthorizationProvidersuperUserRoles、proxyRoles默认为空列表详见 conf/functions_worker.yml。BookKeeper 认证若 BookKeeper 集群启用了认证独立模式下同样需要配置bookkeeperClientAuthenticationPluginBookKeeper 客户端认证插件名bookkeeperClientAuthenticationParametersNameBookKeeper 客户端认证插件参数名bookkeeperClientAuthenticationParametersBookKeeper 客户端认证插件参数值。启动 functions-worker完成 conf/functions_worker.yml 配置后执行以下命令启动bin/pulsar functions-worker从源码结构看该命令最终会进入 PulsarWorkerService.java 的main入口由WorkerServiceLoader加载并初始化 worker 服务包括函数调度、元数据管理与运行时管理等。为 functions-worker 配置代理当 functions-worker 独立成集群后admin REST 端点被拆分为两部分functions、function-worker、source、sink端点由 functions-worker 集群提供其余端点仍由 broker 集群提供。因此你需要让pulsar-admin按端点类型选择正确的 service URL。为了统一管理入口可以启动一个 proxy 集群将 admin REST 请求按规则路由到对应集群。若尚未部署 proxy 集群可参照仓库 deployment 目录 或集群部署文档先行搭建。在已有 proxy 集群的情况下编辑 conf/proxy.conf将 functions 相关管理请求指向 functions-worker 集群functionWorkerWebServiceURLpulsar-functions-worker-web-service-url functionWorkerWebServiceURLTLSpulsar-functions-worker-web-service-url仓库默认 conf/proxy.conf 中这两个字段为空并带有注释说明“如果 functions workers 部署在独立集群请配置以下两个设置指向 functions workers 集群”启用时填入对应的 HTTP 与 HTTPS 地址即可。两种模式对比与选型建议如上所述functions-worker 既可以与 broker 同进程运行也可以独立运行。与 broker 一起运行更为便捷但独立集群运行能为Process或Thread模式下的函数提供更好的资源隔离。推荐使用 Run-with-Broker 模式a) 函数以Process或Thread模式运行时不需要资源隔离b) 已将 functions-worker 配置为在 Kubernetes 上运行函数此时资源隔离问题由 Kubernetes 解决。推荐使用 Run-separately 模式a) 环境中没有 Kubernetes 集群b) 希望将函数运行与 broker 服务完全分离。常见问题排查错误信息Namespace missing local cluster name in clusters listFailed to get partitioned topic metadata: org.apache.pulsar.client.api.PulsarClientException$BrokerMetadataException: Namespace missing local cluster name in clusters list: local_clusterxyz nspublic/functions clusters[standalone]该错误通常由以下两种情况触发a) broker 以functionsWorkerEnabledtrue启动但 conf/functions_worker.yml 中的pulsarFunctionsCluster未设置为正确的集群名b) 配置了跨地域复制geo-replication的 Pulsar 集群中一个集群的 broker 运行正常而另一个集群的 broker 工作异常。解决方法查询public/functions命名空间当前的集群列表bin/pulsar-admin namespaces get-clusters public/functions检查目标集群是否已在列表中若不在将其加入并更新集群列表bin/pulsar-admin namespaces set-clusters --clusterexisting-clusters,new-cluster public/functions在 conf/functions_worker.yml 中将pulsarFunctionsCluster修正为正确的集群名。小结本文围绕 Pulsar 2.3.2 的 functions-worker 部署主线完整覆盖了 Run-with-Broker 与 Run-separately 两种模式的配置要点、安全加固TLS / SASL / Token 认证、授权与超级用户、代理路由以及典型故障处理流程。在实际部署时建议先对照 conf/functions_worker.yml 检查pulsarFunctionsCluster、numFunctionPackageReplicas、workerId等关键项再结合集群是否启用 TLS 与认证决定安全配置的取舍若需要进一步了解 TLS 传输加密、Token 认证或集群初始化可继续阅读仓库中 security-tls-transport 与 security-token-admin 等配套文档。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐Apache Pulsar 2.3.0 快速上手本地运行与集群部署 Pulsar Functions 实战指南Apache Pulsar 2.3.0 快速上手本地运行与集群部署 Pulsar Functions 实战指南 本文基于 Apache Pulsar 2.3.消息队列后端流处理Apache Pulsar Functions 部署与管理实战本地运行模式、集群模式与函数触发Apache Pulsar Functions 部署与管理实战本地运行模式、集群模式与函数触发 导读 Pulsar Functions 是 Apache Pu消息队列后端流处理Apache Pulsar Pulsar Manager 部署与管理实战指南安装、JWT 认证与集群监控Apache Pulsar Pulsar Manager 部署与管理实战指南安装、JWT 认证与集群监控 Pulsar Manager 是 Apache Pu消息队列后端流处理上一篇Arsenal 项目常见问题解决方案下一篇Top2Vec 项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表