Apache Pulsar部署搭建

news/2024/11/29 10:49:50/

1.部署规划

部署 Pulsar 集群包括以下步骤(按顺序):

  • 1.部署一个 ZooKeeper 集群,初始化 Pulsar 集群元数据。
  • 2.部署一个 Bookeeper 集群。
  • 3.部署一个或多个 Pulsar brokers。
  • 4.部署 Pulsar manager(可选)。

2.节点规划

主机名IP地址角色端口号
zookeeper1192.168.1.191zookeeper2181
zookeeper2192.168.1.192zookeeper2181
zookeeper3192.168.1.193zookeeper2181
bookeeper1192.168.1.194bookeeper3181
bookeeper2192.168.1.195bookeeper3181
bookeeper3192.168.1.196bookeeper3181
pulsar1192.168.1.147broker8080(http协议),6650(pulsar协议)
pulsar2192.168.1.148broker8080(http协议),6650(pulsar协议)
pulsar3192.168.1.149broker8080(http协议),6650(pulsar协议)
pulsar1192.168.1.149pulsar-manager7750

3.下载二进制包

下载 pulsar 发行版的二进制的包,里面包含了 zookeeper,bookeeper,pulsar 所需要的文件:

wget https://archive.apache.org/dist/pulsar/pulsar-2.7.1/apache-pulsar-2.7.1-bin.tar.gz

包下载完成后,解压并进入到解压后的目录:

tar xvzf apache-pulsar-2.7.1-bin.tar.gz
cd apache-pulsar-2.7.1

解压后的文件目录包含以下子目录:

目录内容
binPulsar 命令行工具,比如 pulsar 和 pulsar-admin
conf配置文件,包含ZooKeeper,Bookeeper,Pulsar 等等
dataZookeeper 和 Bookeeper 保存数据的目录
libPulsar 使用的 JAR 文件
logs日志目录

4.部署 Zookeeper 集群

修改 Zookeeper 配置文件
修改所有 Zookeeper 节点的 conf/zookeeper.conf 配置文件:

# 设置Zookeeper数据存放目录。
dataDir=data/zookeeper# 在配置文件中为每个节点添加一个 server.N行,其中N是ZooKeeper节点的编号。
server.1=192.168.1.191:2888:3888
server.2=192.168.1.192:2888:3888
server.3=192.168.1.193:2888:3888

在每个 Zookeeper 节点的 myid 文件中配置该节点在集群中的唯一ID。myid 文件应放在 dataDir 指定的目录下:

# 创建目录
mkdir -p data/zookeeper
# 每个Zookeeper节点的ID号不能重复,并且和server.N的编号对应,依次为1,2,3
echo 1 > data/zookeeper/myid

启动 Zookeeper 集群
在每台 Zookeeper 节点启动 Zookeeper 服务:

bin/pulsar-daemon start zookeeper

初始化集群元数据
Zookeeper 集群启动成功后,需要将一些 Pulsar 集群的元信息写入 ZooKeeper 集群的每个节点,由于数据在 ZooKeeper 集群内部会互相同步,因此只需要将元信息写入 ZooKeeper 的一个节点即可:

bin/pulsar initialize-cluster-metadata \--cluster pulsar-cluster-1 \--zookeeper 192.168.1.191:2181 \--configuration-store 192.168.1.191:2181 \--web-service-url http://192.168.1.147:8080,192.168.1.148:8080,192.168.1.149:8080 \--broker-service-url pulsar://192.168.1.147:6650,192.168.1.148:6650,192.168.1.149:6650

参数说明如下:

参数说明
—clusterpulsar 集群名字
–zookeeperzookeeper 地址,只需要包含 zookeeer 集群中的任意一台机器即可
–configuration-store配置存储地址,只需要包含 zookeeer 集群中的任意一台机器即可
–web-service-urlpulsar 集群 web 服务的 URL 以及端口,默认的端口是8080
–broker-service-urlbroker 服务的URL,用于与 pulsar 集群中的 brokers 进行交互,默认端口是 6650

5.部署 Bookeeper 集群

Pulsar 集群中所有持久数据的存储都由 Bookeeper 负责。

修改 Bookeeper 配置文件
修改所有 Bookeeper 节点的 conf/bookeeper.conf 配置文件,设置 Bookeeper 集群连接的 Zookeeper 信息:

zkServers=192.168.1.191:2181,192.168.1.192:2181,192.168.1.193:2181

启动 Bookeeper 集群
在每台 Bookeeper 节点启动 Bookeeper 服务:

bin/pulsar-daemon start bookie

验证 Bookeeper 集群状态
在任意一台 Bookeeper 节点上使用 Bookeeper shell 的 simpletest 命令,去校验集群内所有的 bookie 是否都已经启动,3 为 Bookeeper 节点数量。

bin/bookkeeper shell simpletest --ensemble 3 --writeQuorum 3 --ackQuorum 3 --numEntries 3

参数含义如下:

-a,--ackQuorum <arg>     Ack quorum size (default 2)  当指定数量的 bookie ack 响应时,认为消息写入成功
-e,--ensemble <arg>      Ensemble size (default 3)  写入数据的 bookie 节点数量
-n,--numEntries <arg>    Entries to write (default 1000) 一批消息的消息数量
-w,--writeQuorum <arg>   Write quorum size (default 2) 每条消息副本数量

这个命令会在集群上创建和 bookie 同等数量的 ledger,并往里面写一些条目,然后读取它,最后删除这个 ledger。
在这里插入图片描述

6.部署 Pulsar 集群

修改 Pulsar 配置文件
修改所有 Pulsar 节点的 conf/broker.conf 配置文件:

# 配置pulsar broker连接的zookeeper集群地址
zookeeperServers=192.168.1.191:2181,192.168.1.192:2181,192.168.1.193:2181
configurationStoreServers=192.168.1.191:2181,192.168.1.192:2181,192.168.1.193:2181# broker数据端口
brokerServicePort=6650# broker web服务端口
webServicePort=8080# pulsar 集群名字,和前面zookeeper初始化集群元数据时配置的一样
clusterName=pulsar-cluster-1# 创建一个ledger时使用的bookie数量
managedLedgerDefaultEnsembleSize=2# 每个消息的副本数量
managedLedgerDefaultWriteQuorum=2# 完成写操作前等待副本ack的数量
managedLedgerDefaultAckQuorum=2

启动 Pulsar 集群
在每台 Pulsar 节点启动 broker:

bin/pulsar-daemon start broker

7.客户端连接 Pulsar 集群

修改客户端配置文件
修改 conf/client.conf 文件。

# pulsar集群web服务url
webServiceUrl=http://192.168.1.147:8080,192.168.1.148:8080,192.168.1.149:8080# pulsar服务端口
# URL for Pulsar Binary Protocol (for produce and consume operations)
brokerServiceUrl=pulsar://192.168.1.147:6650,192.168.1.148:6650,192.168.1.149:6650

客户端生产和消费消息
consumer 使用如下命令订阅 pulsar-test 这个主题的消息:

  • -n:订阅消息的数量
  • -s:订阅组名
  • -t:订阅类型,有以下值Exclusive, Shared, Failover, Key_Share
bin/pulsar-client consume \persistent://public/default/pulsar-test \-n 100 \-s "consumer-test" \-t "Exclusive"

如果不指定 --url 参数并且没有在 conf/client.conf 文件中指定 pulsar 集群连接信息,则默认连接的是 pulsar://localhost:6650/。可以指定 --url pulsar://192.168.1.147:6650 或者 --url http://192.168.1.147:8080 与 broker 进行交互。

新开一个终端, producer 使用如下命令向 pulsar-test 主题生产一条消息,消息内容为 “Hello Pulsar”:

  • -n:生产消息的数量
  • -m:消息内容
bin/pulsar-client produce \persistent://public/default/pulsar-test \-n 1 \-m "Hello Pulsar"

在 consumer 终端可以看到成功消费到了消息:

23:20:47.418 [pulsar-client-io-1-1] INFO  com.scurrilous.circe.checksum.Crc32cIntChecksum - SSE4.2 CRC32C provider initialized
----- got message -----
key:[null], properties:[], content:Hello Pulsar

8.部署 Pulsar manager

Pulsar manager 是用于管理和监控 Pulsar 集群的 WebUI 工具。Pulsar manager 可以管理多个 Pulsar 集群。github 地址:https://github.com/apache/pulsar-manager

安装 Pulsar manager

wget https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.2.0/apache-pulsar-manager-0.2.0-bin.tar.gz
tar -zxvf apache-pulsar-manager-0.2.0-bin.tar.gz
cd pulsar-manager
tar -xvf pulsar-manager.tar
cd pulsar-manager
cp -r ../dist ui
./bin/pulsar-manager

创建 Pulsar manager 账号
创建用户名为 admin,密码为 apachepulsar 的超级管理员账号:

CSRF_TOKEN=$(curl http://192.168.1.147: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://192.168.1.147:7750/pulsar-manager/users/superuser \-d '{"name": "admin", "password": "apachepulsar", "description": "myuser", "email": "chengzw258@163.com"}'

Pulsar manager 界面
访问 http://192.168.1.147:7750/ui/index.html 登录 Pulsar manager:
在这里插入图片描述
点击 New Environment 添加 Pulsar 集群:
在这里插入图片描述
添加完成后可以查看并设置 Pulsar 集群的相关信息,例如查看 topic 信息:
在这里插入图片描述
访问 http://192.168.1.147:7750/bkvm 查看 bookie 信息,用户名:admin,密码:admin。
在这里插入图片描述
查看 ledger 信息:
在这里插入图片描述

9.Perf 压力测试

pulsar 提供了压力测试的命令行工具,使用以下命令生产消息:

  • -r:每秒生产的消息总数(所有生产者)
  • -n:生产者数量
  • -s:每条消息的大小(bytes)
  • 最后跟上 topic 名字
bin/pulsar-perf produce -r 100 -n 2 -s 1024 test-perf# 输出内容,从左到右依次是:
# 每秒生产的消息数量:87.2条
# 每秒流量大小:0.7Mb
# 每秒生产失败的消息数:0
# 平均延迟:5.478ms
# 延迟中位数:4.462ms
# 95%的延迟在 11.262ms以内
# 99%的延迟在 25.802ms以内
# 99.9%的延迟在 43.757ms以内
# 99.99%的延迟在 51.956ms以内
# 最大延迟:51.956ms... Throughput produced:   87.2  msg/s ---      0.7 Mbit/s --- failure      0.0 msg/s --- Latency: mean:   5.478 ms - med:   4.642 - 95pct:  11.263 - 99pct:  25.802 - 99.9pct:  43.757 - 99.99pct:  51.956 - Max:  51.956

使用以下命令消费消息:

bin/pulsar-perf consume test-perf# 输出内容,从左到右依次是:
# 每秒消费的消息数量:100.007条
# 每秒流量大小:0.781Mb
# 平均延迟:9.273ms
# 延迟中位数:9ms
# 95%的延迟在 14ms以内
# 99%的延迟在 15ms以内
# 99.9%的延迟在 28ms以内
# 99.99%的延迟在 34ms以内
# 最大延迟:34ms
... Throughput received: 100.007  msg/s -- 0.781 Mbit/s --- Latency: mean: 9.273 ms - med: 9 - 95pct: 14 - 99pct: 15 - 99.9pct: 28 - 99.99pct: 34 - Max: 34

在 Pulsar manager 界面可以 test-perf 这个 topic 有两个生产者在生产消息,有一个消费者正在消费消息:
在这里插入图片描述
查看 topic 的 存储状况:
在这里插入图片描述

10.参考链接

  • https://livebook.manning.com/book/pulsar-in-action/chapter-1/v-8/1
  • https://pulsar.apache.org/en/
  • https://www.jianshu.com/p/4664de047c71
  • https://mp.weixin.qq.com/s?__biz=MzUyMjkzMjA1Ng==&mid=2247487414&idx=1&sn=850ec2ccc4d2847066a98a899bd0ce1f&chksm=f9c51581ceb29c973a87c2548c45755225198ecfa2b235abec61623adfcc70c3d381be8cf501&scene=21#wechat_redirect
  • https://alexstocks.github.io/html/pulsar.html
  • https://tech.meituan.com/2015/01/13/kafka-fs-design-theory.html

http://www.ppmy.cn/news/76475.html

相关文章

AIGC技术研究与应用 ---- 下一代人工智能:新范式!新生产力!(1-简介)

文章大纲 AI GC简介决策式/分析式AI(Discriminant/Analytical AI)和生成式AI (Generative AI)参考文献与学习路径模型进化券商研报陆奇演讲AI GC 《我,机器人》中所演绎的一样,主角曾与机器人展开了激烈的辩论,面对“机器人能写出交响乐吗?”“机器人能把画布变成美丽…

(一)before initialization of D3D(初始化D3D之前你需要了解的D3D基础知识)

什么是D3D? D3D全称Direct X 3D,即一组API可以用来针对GPU编程,不过他最主要的作用是用来渲染(不过现在也有很多其他应用比如d3d11va[Direct X 3D 11 Video API]用来进行硬件加速解码) Tips:Direct X 3D主要用来渲染,既然我们说到可以针对GPU编程了,当然不只是渲染的工作可以…

亿发ERP系统,全链条采购协同管理数智化平台,中小企业采购业务全流程管理

在数字时代&#xff0c;中小型企业在采购管理方面面临多项挑战。 集采管理难&#xff1a;由于资源和专业知识有限&#xff0c;中小企业通常难以建立集中采购职能&#xff0c;无法有效简化整个组织的采购活动。这一挑战包括定义采购政策、标准化程序和实施高效的采购系统。 信…

HACK ME PLEASE: 1

文章目录 HACK ME PLEASE: 1实战演练一、前期准备1、相关信息 二、信息收集1、访问网站2、端口扫描2、扫描目录3、访问网站4、访问网站5、扫描目录6、访问网站7、登录MySQL数据库8、查看数据表9、查看users表的内容10、查看tblUsers表内容11、解密12、加密13、修改密码14、查询…

ChatGPT国内免费访问

背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具&#xff0c;近期的热度直接沸腾&#x1f30b;。 作为一个程序员&#xff0c;我也忍不住做了一个基于ChatGPT的网站&#xff0c;免费&#xff01;免梯子&#xff01;&#xff01;国内可直接对话ChatGPT&#xff0c;也…

【医学图像】图像分割系列.1

医学图像分割是一个比较有应用意义的方向&#xff0c;本文简单介绍三篇关于医学图像分割的论文&#xff1a; UNeXt&#xff08;MICCAI2022&#xff09;&#xff0c;PHTrans&#xff08;MICCAI2022&#xff09;&#xff0c;DA-Net&#xff08;MICCAI2022&#xff09;。 目录 …

到底什么是CIDR(无类域间路由)?做网络的一定得懂这个术语!

CIDR&#xff08;无类域间路由&#xff09;是一种用于对互联网IP地址进行聚合和分配的技术。它通过改变IP地址的分配方式&#xff0c;有效地解决了IPv4地址空间不足的问题。 本文将详细介绍CIDR的原理、使用方法以及它对互联网的影响&#xff0c;还会针对CIDR出三道例题&#x…

软件测试的7个级别,做到3级已经超越80%测试人!

有人说&#xff1a;软件测试就是最low的点点点工作。 有人说&#xff1a;测试工作职位薪水到一定程度只能原地踏步无法提升 也有人说&#xff1a;测试行业相对于开发来说技术性很低&#xff0c;容易被取代。 这其实是对测试行业最大的误解。测试可深可浅&#xff0c;可窄可广…