Pulsar 入门实战(3)--安装

news/2024/11/16 8:02:36/文章来源:https://www.cnblogs.com/wuyongyin/p/18295639

本文主要介绍 Pulsar 的安装,相关的环境及软件信息如下:CentOS 7.9.2009、Pulsar 3.3.0、Java 17.0.10。

1、单机版安装

为了本地开发和测试,可以以单机模式运行 Pulsar。单机模式将所有组件运行在单个 Java 虚拟机(JVM)进程内。

官网(https://pulsar.apache.org/download/)下载安装包并解压:

tar zxvf apache-pulsar-3.3.0-bin.tar.gz

启动 pulsar:

bin/pulsar standalone

如果机器内存较小,可能无法启动,需调整 pulsar 的内存大小,修改 conf/pulsar_env.sh 文件中的 PULSAR_MEM 参数:

PULSAR_MEM=${PULSAR_MEM:-"-Xms256m -Xmx512m -XX:MaxDirectMemorySize=1g"}

2、单集群安装

2.1、集群规划

主机 部署组件
10.49.196.30 Broker、Bookie、Zookeeper
10.49.196.31 Broker、Bookie、Zookeeper
10.49.196.32 Broker、Bookie、Zookeeper

2.2、Zookeeper 集群部署

Zookeeper 可以使用单独安装的集群,也可以使用 Pulsar 自带的 Zookeeper;这里使用 Pulsar 自带的 Zookeeper。

A、修改 conf/zookeeper.conf 文件:

#以下注释掉
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=8000
#metricsProvider.exportJvmInfo=true#以下新增
server.1=10.49.196.30:2888:3888
server.2=10.49.196.31:2888:3888
server.3=10.49.196.32:2888:3888

 B、根据配置文件中的 dataDir 参数(默认为 data/zookeeper)创建数据目录:

mkdir -p data/zookeeper

C、创建 id 文件

echo 1 > data/zookeeper/myid #10.40.196.30 上执行
echo 2 > data/zookeeper/myid #10.40.196.31 上执行
echo 3 > data/zookeeper/myid #10.40.196.32 上执行

D、启停 Zookeeper

bin/pulsar-daemon start zookeeper #启动
bin/pulsar-daemon stop zookeeper #停止

2.3、元数据初始化

可以使用 pulsar CLI 工具的 initialize-cluster-metadata 命令来初始化元数据。在任一台机器上执行:

bin/pulsar initialize-cluster-metadata \--cluster pulsar-cluster-1 \--metadata-store zk:10.49.196.30:2181,10.49.196.31:2181,10.49.196.32:2181 \--configuration-metadata-store zk:10.49.196.30:2181,10.49.196.31:2181,10.49.196.32:2181 \--web-service-url http://10.49.196.30:8080,10.49.196.31:8080,10.49.196.32:8080 \--broker-service-url pulsar://10.49.196.30:6650,10.49.196.31:6650,10.49.196.32:6650 \

命令选项说明:

选项 说明
--cluster* 集群名称
--metadata-store* 元数据存储的连接字符串,只需包含 ZooKeeper 集群中的一台机器即可
--configuration-metadata-store* 配置元数据存储的连接字符串,与 --metadata-store 类似,只需包含 ZooKeeper 集群中的一台机器即可
--web-service-url* 集群的 Web 服务 URL,默认端口是 8080(最好不要使用不同的端口)
--web-service-url-tls 集群的 TLS Web 服务 URL,默认端口是 8443(最好不要使用不同的端口)
--broker-service-url* broker 服务 URL,默认端口是 6650(最好不要使用不同的端口)
--broker-service-url-tls broker TLS 服务 URL,默认端口是 6651(最好不要使用不同的端口)

注意:当配置一个新的集群时,需要在元数据存储(例如 ZooKeeper)上初始化集群的元数据,只需初始化一次。

2.4、BookKeeper 集群部署

修改 conf/bookkeeper.conf 文件,配置元数据服务地址:

metadataServiceUri=zk://10.49.196.30:2181;10.49.196.31:2181;10.49.196.32:2181/ledgers

 启动 bookie:

bin/pulsar-daemon start bookie

如果集群内存不够,可以在 conf/bkenv.sh 中调整内存参数:

BOOKIE_MEM=${BOOKIE_MEM:-${PULSAR_MEM:-"-Xms256m -Xmx512m -XX:MaxDirectMemorySize=1g"}}

bookie 启动后,可以运行以下命令来验证 bookie 是否正常工作:

bin/bookkeeper shell bookiesanity

该命令在本地创建一个临时的 BookKeeper ledger,写入几个条目,读取它们,最后删除这个 ledger。

在启动所有 bookie 后,可以在任一节点上使用以下命令,来验证集群中所有 bookie 是否正常运行:

bin/bookkeeper shell simpletest --ensemble <num-bookies> --writeQuorum <num-bookies> --ackQuorum <num-bookies> --numEntries <num-entries>

该命令在集群上创建一个 ledger,该 ledger 位于 num-bookies 个 bookie 上,写入 numEntries 个条目,最后删除这个 ledger。

2.5、Pulsar brokers 部署

修改 broker 配置文件 conf/broker.conf:

metadataStoreUrl=zk:10.49.196.30:2181,10.49.196.31:2181,10.49.196.32:2181
configurationMetadataStoreUrl=zk:10.49.196.30:2181,10.49.196.31:2181,10.49.196.32:2181
clusterName=pulsar-cluster-1

启动 broker:

bin/pulsar-daemon start broker

2.6、使用 pulsar-client 连接 pulsar 集群

修改配置文件 conf/client.conf:

webServiceUrl=http://10.49.196.30:8080,10.49.196.31:8080,10.49.196.32:8080
brokerServiceUrl=pulsar://10.49.196.30:6650,10.49.196.31:6650,10.49.196.32:6650

发送消息:

bin/pulsar-client produce \persistent://public/default/test \-n 1 \-m "Hello Pulsar"

接受消息:

bin/pulsar-client consume \persistent://public/default/test \-n 100 \-s "consumer-test" \-t "Exclusive"

3、多集群安装

一个 Pulsar 实例由多个 Pulsar 集群组成,它们之间协同工作;这些集群分布在不同的数据中心或地理区域,使用地理复制技术在它们之间进行数据复制。多集群安装较复杂,这里就不详细介绍,可参考官网 https://pulsar.apache.org/docs/3.3.x/deploy-bare-metal-multi-cluster。

4、pulsar-manager 安装

4.1、下载并解压安装包

官网(https://pulsar.apache.org/download/)下载安装包,然后解压。

wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.4.0/apache-pulsar-manager-0.4.0-bin.tar.gz
tar -zxvf apache-pulsar-manager-0.4.0-bin.tar.gz

4.2、解压后端应用包并拷贝前端资源到后端目录

cd apache-pulsar-manager-0.4.0-bin
tar xvf pulsar-manager.tar
cd pulsar-manager
cp -r ../dist ui

4.3、启动 pulsar-manager

./bin/pulsar-manager #不能使用 JDK17,会报错

启动后访问地址为:http://host:7750/ui/index.html。

4.4、初始化用户

CSRF_TOKEN=$(curl http://10.49.196.32:7750/pulsar-manager/csrf-token)
curl \-H "X-XSRF-TOKEN: $CSRF_TOKEN" \-H "Cookie: XSRF-TOKEN=$CSRF_TOKEN;" \-H 'Content-Type: application/json' \-X PUT http://10.49.196.32:7750/pulsar-manager/users/superuser \-d '{"name": "admin", "password": "apachepulsar", "description": "test", "email": "username@test.org"}'

4.5、配置环境

Service URL 和 Bookie URL 只需配置集群中一个结点的地址,配多个会报错。

5、Pulsar 常用配置

5.1、Broker(conf/broker.conf)

参数 说明 类型 默认值 是否动态参数
clusterName* 集群名称 java.lang.String null false
authenticationEnabled 是否启用认证 boolean false false
authenticationProviders 身份验证提供者 java.util.Set [] false
authenticationRefreshCheckSeconds 检查身份凭证过期的时间间隔 int 60 false
anonymousUserRole 匿名用户的角色 java.lang.String null false
authorizationEnabled 是否启用授权 boolean false false
disableHttpDebugMethods 是否禁用 TRACE 和 TRACK 请求 boolean  false false
httpMaxRequestHeaderSize 请求头的最大大小,单位为字节 int 8192 false
httpMaxRequestSize 请求体的最大大小 int -1 false
httpRequestsFailOnUnknownPropertiesEnabled 请求中有位置参数时是否失败 boolean false true
httpRequestsLimitEnabled 是否启用对请求的限制 boolean false false
httpRequestsMaxPerSecond 每秒允许的最大 HTTP 请求次数 double 100 false
brokerDeleteInactivePartitionedTopicMetadataEnabled 是否自动删除不活动分区主题的元数据信息 boolean false true
brokerDeleteInactiveTopicsEnabled 是否自动删除不活动主题 boolean true true
brokerDeleteInactiveTopicsFrequencySeconds 检查不活动主题的间隔 int 60 true
brokerDeleteInactiveTopicsMaxInactiveDurationSeconds 不活动主题存活的最长时间 java.lang.Integer null true 
brokerDeleteInactiveTopicsMode

不活动主题删除模式
delete_when_no_subscriptions 删除没有订阅者且没有活跃生产者的主题
delete_when_subscriptions_caught_up 删除所有订阅者都没有积压消息且没有活跃生产者/消费者的主题

InactiveTopicDeleteMode delete_when_no_subscriptions true
brokerMaxConnections broker 最大连接数 int 0 false
brokerMaxConnectionsPerIp 连接 broker 时,每个 IP 的最大连接数 int 0 false
bindAddress 绑定地址 java.lang.String 0.0.0.0 false
bindAddresses 额外的绑定地址,格式化为 <listener_name>:<scheme>://<host>:<port> java.lang.String null false
brokerServicePort broker 端口,与 bindAddress 参数组成一个绑定地址:bindAddress:brokerServicePort java.util.Optional Optional[6650] false
brokerServicePortTls broker tls 端口,与 bindAddress 参数组成一个绑定地址:bindAddress:brokerServicePortTls java.util.Optional Optional.empty false
brokerShutdownTimeoutMs 优雅关闭 broker 的等待时间,超过此时间,进程将被强制终止。 long 60000 true
clientLibraryVersionCheckEnabled 是否启用检查最低允许的客户端库版本 boolean false true
configurationMetadataStoreUrl 配置元数据地址,如果为空则使用 metadataStoreUrl java.lang.String null false
delayedDeliveryEnabled 是否启用消息的延迟投递 boolean true false
delayedDeliveryMaxDelayInMillis 延迟投递的最大允许延迟(以毫秒为单位)。如果 broker 接收到的消息超过了此最大延迟,那么将向生产者返回错误。默认值为 0,表示没有最大投递延迟限制。 long 0 false
delayedDeliveryMaxDelayInMillis 检查延迟消息是否已到投递时间的时间间隔,默认为 1 秒 long 1000 false
enableNonPersistentTopics 是否允许 broker 加载非持久化主题 boolean true false
enablePersistentTopics 是否允许 broker 加载持久化主题 boolean true false
keepAliveIntervalSeconds 检查 Pulsar 连接是否仍然活动的频率 int 30 false
maxConcurrentHttpRequests web 请求最大并发连接数 int 1024 false
maxConsumersPerSubscription 一个订阅允许的最大消费者个数 int 0 false
maxConsumersPerTopic 一个主题允许的最大消费者个数 int 0 false
maxHttpServerConnections 最大 HTTP 连接数 int 2048 false
maxMessageSize 消息的最大大小 int 5242880 false
maxNumPartitionsPerPartitionedTopic 分区主题的最大分区数 int true 
maxProducersPerTopic 一个主题允许的最大生产者个数 int 0 false
maxPublishRatePerTopicInBytes 发布消息到一个主题的最大速率(byte/s) long 0 true
maxPublishRatePerTopicInMessages 发布消息到一个主题的最大速率(个/s) int 0 true
maxSameAddressConsumersPerTopic 一个主题同一 IP  的最大消费者个数 int  0 false
maxSameAddressProducersPerTopic 一个主题同一 IP  的最大生产者个数 int 0 false
maxSubscriptionsPerTopic 一个主题的最大订阅数 int 0 false
maxTenants Pulsar 集群可以创建的最大租户数 int 0 false
metadataStoreUrl 元数据存储地址(Zookeeper 地址) java.lang.String null false
systemTopicEnabled 是否启用系统主题 boolean true false
webServicePort Web 服务端口 java.util.Optional Optional[8080] false
webServicePortTls Web 服务 TLS 端口 java.util.Optional Optional.empty false
allowAutoTopicCreation 是否允许自动创建主题 boolean true true
allowAutoTopicCreationType 允许自动创建的主题类型 TopicType non-partitioned true

5.2、Client(conf/client.conf)

参数 说明 类型 是否必须 默认值
webServiceUrl REST API 服务地址 java.lang.String Required http://localhost:8080/
brokerServiceUrl Pulsar 二进制协议服务地址 java.lang.String Required pulsar://localhost:6650/

5.3、Log4j(conf/log4j.yaml)

参数 说明 默认值
pulsar.log.dir 日志目录 logs
pulsar.log.file pulsar 日志文件 plusar.log

 

 

参考:
https://pulsar.apache.org/docs/3.3.x/deploy-bare-metal/
https://pulsar.apache.org/reference/#/3.3.x/config/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/790420.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

喜报!Fluent Editor 开源富文本迎来了第一位贡献者!

你好,我是 Kagol,个人公众号:前端开源星球。 2024年8月20日,刚开源一周的富文本 Fluent Editor 迎来了第一位贡献者:zzxming,带大家一起分析下这个 #10 这个PR。你好,我是 Kagol,个人公众号:前端开源星球。 2024年8月20日,刚开源一周的富文本 Fluent Editor 迎来了第…

博客园-awescnb插件-geek皮肤优化-目录优化

💖简介 博客园-awescnb插件-geek皮肤下,文章内容目录显示优化:鼠标移入显示、目录展开/收起图标。⭐优化 🌟鼠标移入显示定义自定义CSS 博客园->管理->设置->页面定制 CSS 代码 添加代码#catalog ul li a:hover {background: rgba(80, 80, 80, .04);color: #807…

axios 修改了baseURL,仍然是原来的

const http = axios.create({// 通用请求地址前缀baseURL: http://127.0.0.1:4523, timeout: 10000 // 超时时间 }) 解决方法: 如下图:添加一句代码,然后重新运行即可:console.log("@@@@http=",http)

2024年8月总结及随笔之逝

随笔与总结1. 回头看 日更坚持了609天。读《零信任网络:在不可信网络中构建安全系统》更新完成 读《软件开发安全之道:概率、设计与实施》开更并持续更新2023年至2024年8月底累计码字1463007字,累计日均码字2402字。 2024年8月码字109278字,同比增长177.6%,环比增长27.3%,…

Burp Suite Professional 2024.8 发布下载,新增功能概览

Burp Suite Professional 2024.8 (macOS, Linux, Windows) - Web 应用安全、测试和扫描Burp Suite Professional 2024.8 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接:https://sys…

Windows Server 2019 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板

Windows Server 2019 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板Windows Server 2019 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板 2024 年 8 月版本更新,现在自动运行 sysprep,支持 ESXi Host Client 部署 请访问原文链接:https://sysin.org/blog/windows…

Metasploit Pro 4.22.3-2024082201 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.3-2024082201 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.3-2024082201 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, release Aug 22, 2024 请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。…

Acunetix v24.8 发布,新增功能概览

Acunetix v24.8 (Linux, Windows) - Web 应用程序安全测试Acunetix v24.8 发布,新增功能概览 Acunetix v24.8 (Linux, Windows) - Web 应用程序安全测试 Acunetix | Web Application Security Scanner 请访问原文链接:https://sysin.org/blog/acunetix/,查看最新版。原创作品…

eladmin (文件上传+文件删除)(cve-2024-7458)

这是第一个java系统的漏洞复现。该系统只爆出过着一个编号,可能还有其他漏洞。如果有大佬看到了这篇文章也可以去看看。(因为我试了一下没有收获,大佬们加油) 项目地址放在最后侵权声明 本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本…

20240820:组合计数(2)

组合数 定义:\(\begin{pmatrix}n\\m\end{pmatrix}\) 表示 \(n\) 元集的 \(m\) 元子集个数。 通项 \[\begin{pmatrix}n\\m\end{pmatrix} = \begin{cases} \dfrac{n!}{m!(n - m)!} & m \le n\\ \\ 0& \text{otherwise} \end{cases} \]考虑其组合意义: 把所有 \(n!\) 个…

WPF 从裸 Win 32 的 WM_Pointer 消息获取触摸点绘制笔迹

本文将告诉大家如何在 WPF 里面,接收裸 Win 32 的 WM_Pointer 消息,从消息里面获取触摸点信息,使用触摸点信息绘制简单的笔迹开始之前必须说明的是使用本文的方法不会带来什么优势,既不能带来笔迹书写上的加速,也不能带来笔迹效果的平滑,且代码复杂。本文唯一的作用只是让…

WPF 开启Pointer消息存在的坑

本文记录在 WPF 开启 Pointer 消息的坑屏幕键盘 启用了Pointer之后,调用 TextBox.Focus() 方法时,有一定的可能起不来屏幕键盘,必须点在控件之上才行,触摸在它之上才行 后续的 Win10 版本似乎修复了这个问题,暂时还没了解到具体是从哪个版本开始修复 使用屏幕绝对坐标而不…