pulsar集群搭建_亲测成功
pulsar集群搭建_亲测成功
单机运行请看:
Linux MacBook单机部署Pulsar并开启认证功能
集群组成
- 搭建 Pulsar 集群至少需要 3 个组件:ZooKeeper 集群、BookKeeper 集群和 broker 集群(Broker 是 Pulsar 的自身实例)。这三个集群组件如下:
-
ZooKeeper 集群(3(或多) 个 ZooKeeper 节点组成)
-
bookie 集群(也称为 BookKeeper 集群,3(或多) 个 BookKeeper 节点组成)
-
broker 集群(3(或多) 个 Pulsar 节点组成)
- Pulsar 的安装包已包含了搭建集群所需的各个组件库。无需单独下载 ZooKeeper 安装包和 BookKeeper 安装包。
环境准备
安装JDK
在所需服务器上安装 JDK(要求版本不低于 JDK 8)安装请看:
Linux卸载openjdk并安装Oracle jdk
MacBook安装jdk8
下载最新版本pulsar
官方下载地址:https://pulsar.apache.org/download/
上传至服务器
解压安装包到指定目录
tar -zxvf apache-pulsar-2.8.0-bin.tar.gz -C /home/software
安装建议
官方建议需要6台机器:
-
3台用于运行Zookeeper集群, 建议使用性能较弱的机器, Pulsar仅将Zookeeper用于与协调有关的定期任务和与配置有关的任务,而不用于基本操作.
-
3台用于运行bookie集群和broker集群,建议使用性能强劲的机器.
但是也可以在一台机器上同时部署Zookeeper,bookie,broker,也就是最少需要三台机器就可以部署一个Pulsar集群.
其实也还可以在3台机器上部署Zookeeper集群,另外3台机器部署bookie集群,在另外3台机器部署broker集群,也就是一共需要消耗9台机器.
总结: 部署一个Pulsar集群(包含一个Zookeeper集群(3个Zookeeper节点组成), 一个bookie集群(也称为Bookeeper集群,3个Bookeeper节点组成), 一个broker集群(3个Pulsar节点组成)), 最少需要3台机器, 官方建议6台机器, 最多需要9台机器.
3台机器集群为例
192.168.1.17
192.168.1.18
192.168.1.19
先搭建zookeeper的集群
#在17 18 19上分别创建目录
mkdir -pv /home/software/zookeeper/logs#17上执行
echo 1 > /home/software/zookeeper/myid
#18上执行
echo 2 > /home/software/zookeeper/myid
#19上执行
echo 3 > /home/software/zookeeper/myid#分别修改三台zookeeper配置
vim /home/software/apache-pulsar-2.8.0/conf/zookeeper.conf
#zookeeper数据保存目录
dataDir=/home/software/zookeeper
#日志保存目录
dataLogDir=/home/software/zookeeper/logs
#端口,默认:2181,如果被占用,请修改,我这里修改为:12181
clientPort=12181#最后加入集群配置,server.后面的数字(编号),要和上面写入myid相对应
#端口一般配置为:2888:3888,我这里修改为了:12888:13888
server.1=192.168.1.17:12888:13888
server.2=192.168.1.18:12888:13888
server.3=192.168.1.19:12888:13888#分别启动三台zookeeper: 执行后台运行命令
bin/pulsar-daemon start zookeeper#停止zookeeper命令
bin/pulsar-daemon stop zookeeper#查看启动情况
ps aux|grep pulsar#查看端口启动情况
netstat -tpnl |grep 12181
netstat -tpnl |grep 2181
最后验证 ZooKeeper 节点是否启动成功
#执行 zookeeper 客户端连接命令
#如果是默认端口情况下,执行如果命令连接
bin/pulsar zookeeper-shell#指定ip和端口的情况下,执行如下命令连接
bin/pulsar zookeeper-shell -server 192.168.1.17:12181bin/pulsar zookeeper-shell -server 192.168.1.18:12181bin/pulsar zookeeper-shell -server 192.168.1.19:12181#查看所有zk节点数据,命令如下
ls /
#显示如下,表示zk的集群已经搭建好了
[zookeeper]
初始化集群元数据
#先查看端口占用情况,避免后面启动时会报端口占用错误
netstat -tpnl |grep 8080
netstat -tpnl |grep 8443
netstat -tpnl |grep 6650
netstat -tpnl |grep 6651# 在任一个 zooKeeper 节点,如:18,初始化集群元数据
# 进入Apache-pulsar 目录
# 执行命令初始化集群元数据
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster-iot \
--zookeeper 192.168.1.18:12181 \
--configuration-store 192.168.1.18:12181 \
--web-service-url http://192.168.1.17:18080,192.168.1.18:1808,192.168.1.19:1808 \
--web-service-url-tls https://192.168.1.17:8443,192.168.1.18:8443,192.168.1.19:8443 \
--broker-service-url pulsar://192.168.1.17:6650,192.168.1.18:6650,192.168.1.19:6650 \
--broker-service-url-tls pulsar+ssl://192.168.1.17:6651,192.168.1.18:6651,192.168.1.19:6651#注意: 这个命令只设置了一个节点的元数据, 后面访问其他节点有问题, 请用上面的命令
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster-iot \
--zookeeper 192.168.1.18:12181 \
--configuration-store 192.168.1.18:12181 \
--web-service-url http://192.168.1.18:18080 \
--web-service-url-tls https://192.168.1.18:8443 \
--broker-service-url pulsar://192.168.1.18:6650 \
--broker-service-url-tls pulsar+ssl://192.168.1.18:6651#连接任意一台zookeeper,比如:17
bin/pulsar zookeeper-shell -server 192.168.1.17:12181
#查询数据
ls /
#显示如下,有bookies,pulsar等信息,表示成功初始化
[admin, bookies, ledgers, managed-ledgers, namespace, pulsar, stream, zookeeper]
重新初始化或删除数据时
建议: 先停掉zookeeper, 然后直接删除三台zookeeper数据目录,然后在重新启动
重新初始化,删除zookeeper里的数据, 除了这个zookeeper不删除
这样删除启动bookie 报错,把zookeeper集群停了,删除目录数据
#删除命令
delete /bookiesdelete /counters
报错:
Node not empty: /counters#deleteall命令。它将递归删除路径下的所有节点
deleteall /counters
配置部署 BookKeeper 集群
#分别每个节点执行#创建bookie所需要目录
mkdir -pv /home/software/bookkeeper/tmp/journal
mkdir -pv /home/software/bookkeeper/tmp/ledger#注意下面的配置:修改每个节点对应的ip# 进入bookie 配置文件目录,编辑 bookkeeper.conf 文件
vim bookkeeper.conf# advertisedAddress 修改为服务器对应的ip,在另外两台服务器也做对应的修改advertisedAddress=192.168.1.17
advertisedAddress=192.168.1.17# 修改以下两个文件目录地址
journalDirectory=/home/software/bookkeeper/tmp/journalledgerDirectories=/home/software/bookkeeper/tmp/ledger# 修改zk地址和端口信息
zkServers=192.168.1.17:12181,192.168.1.18:12181,192.168.1.19:12181#查看8000端口是否占用, 如果占用,修改为8100
netstat -tpnl |grep 8000 #httpServerPort默认也是8000,建议修改,我这里修改为:8100
prometheusStatsHttpPort=8100# 初始化元数据,并启动 bookie 集群
# 执行初始化元数据命令;若出现提示,输入 Y,继续(只需在任意一个bookie节点执行一次)
bin/bookkeeper shell metaformat#初始化成功#修改端口
vim bookkeeper.conf
prometheusStatsHttpPort=8100#bookie关闭命令
bin/pulsar-daemon stop bookie#启动bookie命令,以后台进程启动bookie
bin/pulsar-daemon start bookie#查看日志,因为8000端口被占用,如果上面修改为:8100,就不会报此错误
vim logs/pulsar-bookie-rabbitmq1.log
Caused by: java.io.IOException: Failed to bind to /0.0.0.0:8000
Caused by: java.net.BindException: 地址已在使用#按照以上步骤,启动另外两个 bookie 节点。#验证是否启动成功
bin/bookkeeper shell bookiesanity#出现如下显示,表示启动成功Bookie
Bookie sanity test succeeded
部署配置 Broker 集群
#修改配置文件 broker.confvim conf/broker.conf
# 修改集群名,和 ZooKeeper 里初始化元数据时指定的集群名(--cluster pulsar-cluster-iot)相同
clusterName=pulsar-cluster-iot# 修改如下两个配置,指定的都是 ZooKeeper 集群地址和端口号zookeeperServers=192.168.1.17:12181,192.168.1.18:12181,192.168.1.19:12181
configurationStoreServers=192.168.1.17:12181,192.168.1.18:12181,192.168.1.19:12181# 修改如下参数为本服务器ip地址,另外两个 broker 节点配置文件也做对应修改
advertisedAddress=192.168.1.17#由于8080端口被占用,修改为18080
webServicePort=18080#启动 broker 节点# 以后台进程启动 broker
bin/pulsar-daemon start broker#停止 broker
bin/pulsar-daemon stop broker # 查看集群 brokers 节点情况
bin/pulsar-admin brokers list pulsar-cluster-iot
#报错:
HTTP 404 Not Found#客户端修改,需要修改端口:18080
vim conf/client.conf
修改为18080端口
webServiceUrl=http://localhost:18080/bin/pulsar-admin brokers list pulsar-cluster-iot
bin/pulsar-admin brokers list pulsar-cluster
bin/pulsar-admin --admin-url http://192.168.1.17:18080 brokers list pulsar-cluster-iot#显示如下:表式集群搭建成功
"192.168.1.17:18080"
"192.168.1.18:18080"
"192.168.1.19:18080"#查看端口启动情况
netstat -tpnl |grep 8080
netstat -tpnl |grep 18080#报错如下,都是端口占用情况
Caused by: java.io.IOException: Failed to bind to /0.0.0.0:8080
Caused by: java.net.BindException: 地址已在使用
测试
#订阅
bin/pulsar-client consume \persistent://public/default/test \-n 100 \-s "consumer-test" \-t "Exclusive"#发送
bin/pulsar-client produce \persistent://public/default/test \-n 1 \-m "Hello Pulsar"----- 收到消息 -----
Hello Pulsar
参考链接:
https://www.jianshu.com/p/715ead13ecce
https://blog.51cto.com/u_536410/2408686
https://blog.csdn.net/daydreameri/article/details/105031977
https://www.jianshu.com/p/dd328bdd2a32
相关文章:
pulsar集群搭建_亲测成功
pulsar集群搭建_亲测成功 单机运行请看: Linux MacBook单机部署Pulsar并开启认证功能 集群组成 搭建 Pulsar 集群至少需要 3 个组件:ZooKeeper 集群、BookKeeper 集群和 broker 集群(Broker 是 Pulsar 的自身实例)。这三个集群组件如下: …...
笔记:linux中LED驱动设备树配置和用法
设备树中节点配置 设备树中的LED驱动一般是这样写,LED驱动可以控制GPIO的电平变化,生成文件节点很方便 leds: leds {compatible "gpio-leds";gpio_demo: gpio_demo {label "gpio_demo";gpios <&gpio0 RK_PC0 GPIO_ACTIV…...

Linux网络编程 网络基础知识
目录 1.网络的历史和协议的分成 2.网络互联促成了TCP/IP协议的产生 3.网络的体系结构 4.TCP/IP协议族体系 5.网络各层的协议解释 6.网络的封包和拆包 7.网络预备知识 1.网络的历史和协议的分成 Internet-"冷战"的产物 1957年十月和十一月,前苏…...

盘点狼人杀中的强神与弱神 并评价操作体验
最初 强神是大家对猎人的称呼,但随着板子的增加 强神渐渐变成了强神神牌的统称。 狼人杀发展至今板子已经非常多了,而每个板子都会有不同的角色。 相同的是 大部分都会希望拿到一张强力神牌,这样能大大提高我们玩家的游戏体验,但其…...
数据结构与算法学习(day1)
前言 (1)我是一个大三的学生(准确来说应该是准大三,因为明天才报名哈哈哈)。 (2)最近就想每天闲着没事也刷些C语言习题来锻炼下编程水平,也一直在思考企业对应届大学生能力的要求,所以经常会想到关于面试的事情。由于我也没实习过,所以我对面试没有一个具象化的概念。…...
递归寻找第n位数字
编写递归函数digit(n,j),返回整数n的从右边开始的第j位数字 首先来看非递归法,只需用n/(10^(j-1))%10即可 #include<stdio.h> //编写递归函数digit(n,j),返回整数n的从右边开始的第j位数字 int digit(int n,i…...
[国产MCU]-W801开发实例-WiFi热点模式创建
WiFi热点模式创建 文章目录 WiFi热点模式创建1、创建WiFi热点相关API介绍2、热点创建实例W801的WiFi支持热点模式。本文将详细介绍如何创建热点模式。 1、创建WiFi热点相关API介绍 int tls_wifi_softap_create(struct tls_softap_info_t apinfo,struct tls_ip_info_t ipinfo)**…...

云原生Kubernetes:二进制部署K8S单Master架构(二)
目录 一、理论 1.K8S单Master架构 2.部署 master 组件 3.部署 Woker Node 组件 4.在master1节点上操作 5.在 node01 节点上操作 6.在 master01 节点上操作 7.在 node01 节点上操作 8.node02 节点部署(方法一) 二、实验 1.环境 2.部署 master …...
spring高级源码50讲-43-50(spring续)
其它 43) FactoryBean 演示 - FactoryBean 代码参考 package com.itheima.a43;import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan;ComponentScan public class A43 {publi…...

FTP文件传输服务器
目录 一、FTP协议两种工作模式 二、FTP数据两种传输模式 三、FTP用户分类 四、VSFTP配置案例 4.1匿名开放模式 4.2本地用户模式 4.3虚拟用户模式 五、实验总结 一、FTP协议两种工作模式 主动模式: 1、客户端主动向ftp服务器发送控制连接,三次握手控制连接…...
【LeetCode - 每日一题】2240. 买钢笔和铅笔的方案数(23.09.1)
2240. 买钢笔和铅笔的方案数 题意 两种价格的笔返回所有可以买的方案数可以为 0 解法 注意这道题的复杂度比较高,O(N2) 是过不了的。一开始是这样写的: // tle 代码 class Solution { public:long long waysToBuyPensPencils(int total, int cost1,…...

SQL Server如何新建作业
作业: 在 SQL Server 中,作业(Job)是一组可以在预定时间自动执行的任务。可以将作业看作是一个可以在后台运行的程序或脚本。作业由一系列步骤组成,每个步骤都是一个独立的任务,可以执行诸如执行 SQL 查询…...
【计算机网络】CDN 内容分发
CDN(Content Delivery Network)是一种用于加速网站内容传输的分布式网络架构。它的目标是通过在全球多个位置分布服务器来存储和分发网站的静态资源,从而减少用户访问这些资源的延迟,提高网站的加载速度和性能。以下是CDN内容分发…...

Yjs + Quill 实现文档多人协同编辑器开发(基础+实战)
前言 多人协同开发确实是比较难的知识点,在技术实现上有一定挑战,但随着各种技术库的发展,目前已经有了比较成熟的解决方案。今介绍 Yjs 基于CRDT算法,用于构建自动同步的协作应用程序,与Quill富文本编辑器,…...

个性化定制界面还是极简版原装界面?我的选择是……
个性化定制界面和极简版原装界面,哪一个你用起来更加顺手呢,相比之下你更喜欢哪一个?来聊一聊原因吧! 一、我的观点和选择 个性化定制界面和极简版原装界面,二者各有优缺点。 (一)极简版原装…...
C++ STL list容器使用教程
文章目录 引用头文件初始化赋值遍历 list 容器迭代器list 常用方法删除元素插入元素 合并列表 list 翻译为列表,列表容器被实现为双向链表,因此它提供了对其数据的双向顺序访问。 List 不提供快速随机访问,它只支持双向顺序访问。 List 允许…...

go web之一:hello world快速上手+handle(http.Handle和http.HandleFunc的区别与联系)
前情提要: 需要安装好go的环境和VSCode的go插件。 hello world快速上手 1、创建go.mod 在项目根目录下打开命令行,或者直接用VSCode中的终端。输入命令 go mod init github.com/solenovex/web-tutorial 然后就能看到项目结构中多了一个go.mod 2、…...

【Postman】postman生成测试报告完整步骤(包含命令与newman安装教程链接)
文章目录 一、前提二、导出Postman脚本三、生成测试报告 一、前提 前提准备: 已安装好Newman 指引文章:Newman安装与环境配置完整版文章 Newman是一款基于nodejs开发的可以运行Postman脚本的工具,并可以生成测试报告。 二、导出Postman脚本…...

一、C#—概述环境安装(1)
🌻🌻 目录 一、 C#概述1.1 为啥学习C#1.2 TIBOE编程语言排行榜1.3 IEEE编程语言排行榜1.4 什么是C#1.5 C#创始人1.6 C#发展历史1.7 C#特点1.8 C#与Java1.9 .NET Framework1.10 C# 与 .NET Framework1.11 C#得应用领域1.12 C#能做什么 二、开发环境得安装…...
C# 实现ComboBox下拉框控件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...