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...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
