首页 > 其他分享 >Pulsar 入门实战(3)--安装

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

时间:2024-09-01 09:37:20浏览次数:10  
标签:false 入门 -- int pulsar Pulsar true 10.49

本文主要介绍 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": "[email protected]"}'

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/

 

标签:false,入门,--,int,pulsar,Pulsar,true,10.49
From: https://www.cnblogs.com/wuyongyin/p/18295639

相关文章

  • 创建实体类Employee
    8.1.1、创建实体类Employeeimagepackageorg.rain.pojo;importjava.io.Serializable;/**@authorliaojy@date2023/10/19-21:31*/publicclassEmployeeimplementsSerializable{privateIntegerid;privateStringlastName;privateStringemail;//1male,......
  • Winserver 阴影会话,远程协助相关
    场景(方便管理协助其他远程会话)用户都是运行在winserver上的一个一个远程会话,有时需要看一下客户操作了什么。换做本地客户端的情况,可以让客户开远程工具。方式1:远程协助 有一个轻松连接,这个目前没弄出来。效果跟金万维的一样,只要知道对方IP、计算机名。还有6位连接码就可以......
  • JUC前置知识
    JUC前置知识JUC概述在开发语言中,线程部分是重点,JUC是关于线程的。JUC是java.util.concurrent工具包的简称。这是一个处理线程的工具包,JDK1.5开始出现的。线程和进程线程和进程的概念进程(process):是计算机的程序关于某数据集合上的一次允许活动,是操作系统进行资源分配和任......
  • 基于数据可视化大屏+Java+Vue的车辆维修服务管理与统计平台设计和实现(源码+论文+部署
    博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P......
  • 【机器学习】聚类算法的基本概念和实例代码以及局部度量学习的概念和实例代码
    引言聚类算法在许多领域都有广泛的应用,例如数据挖掘、生物信息学、图像处理等。文章目录引言一、聚类算法1.1K-Means算法1.2DBSCAN算法1.3层次聚类(HierarchicalClustering)算法1.4高斯混合模型(GaussianMixtureModel,GMM)1.5谱聚类(SpectralClustering)算法1.6基......
  • 多线程篇(并发编程 - 进程&线程&协程&纤程&管程)(持续更新迭代)
    目录一、进程(Progress)1.进程2.僵尸进程2.1什么是僵尸进程2.2僵尸进程的危害2.3如何避免僵尸进程的产生3.参考链接二、线程(Thread)1.线程是什么?2.多线程2.1.概述2.2.多线程的好处2.3.多线程的代价3.线程模型(三种)3.1.一对一模型3.2.多对一模型3.3......
  • 类加载器整理解析
    1.为什么要有类加载器的设计?在不使用类加载器的场景中(假想场景),所有的类都是在程序启动时一次性加载到JVM中的。(1)程序启动慢。需要在启动时一次性加载程序中的所有类,即使在程序运行期间根本用不到。(2)资源浪费。未被使用的类的加载占用了JVM的内存和其他资源。(3)类冲突。在......
  • 多线程篇(并发编程 - Java线程实现方式)(持续更新迭代)
    目录一、继承Thread类1.简介2.实现2.1.原始方式2.2.Lambda表达式二、实现Runnable接口1.简介2.实现2.1.原始方式2.2.Lambda表达式三、使用FutureTask1.简介2.实现2.1.原始方式2.2.Lambda表达式四、使用线程池1.ThreadPoolExecutornewCached......
  • js数据类型
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=d......
  • 前端css网格布局----行列属性
     固定值方式尽量撑满宽和高三行三列grid-template-rows:200px200px200px;grid-template-columns:200px200px200px;百分比方式四行四列 grid-template-rows:25%25%25%25%;grid-template-columns:25%25%25%25%;repeat(重复几次,数值) 3行3列  g......