pulsar集群搭建_亲测成功

这篇具有很好参考价值的文章主要介绍了pulsar集群搭建_亲测成功。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pulsar集群搭建_亲测成功

单机运行请看:

Linux MacBook单机部署Pulsar并开启认证功能

集群组成

  1. 搭建 Pulsar 集群至少需要 3 个组件:ZooKeeper 集群、BookKeeper 集群和 broker 集群(Broker 是 Pulsar 的自身实例)。这三个集群组件如下:
  • ZooKeeper 集群(3(或多) 个 ZooKeeper 节点组成)

  • bookie 集群(也称为 BookKeeper 集群,3(或多) 个 BookKeeper 节点组成)

  • broker 集群(3(或多) 个 Pulsar 节点组成)

  1. 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:12181

bin/pulsar zookeeper-shell -server 192.168.1.18:12181

bin/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 /bookies

delete /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/journal

ledgerDirectories=/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.conf

vim 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文章来源地址https://www.toymoban.com/news/detail-701937.html

到了这里,关于pulsar集群搭建_亲测成功的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ActiveMQ + MQTT 集群搭建(docker版本)

    上一篇文章已经总结了 ActiveMQ + MQTT 集群搭建(虚机版本) + Springboot使用配置 本篇文章总结一下docker部署方案 本地创建挂载目录:/home/jenkins/test_apps/mnt/activemq-cluster。 在该目录下基于activemq.xml修改名字创建三个配置文件activemq-clusters.xml、activemq-master.xml、activemq-slave.xml。 在该

    2024年04月11日
    浏览(39)
  • docker搭建mysql多主多从(集群),亲测有效!

    提示 :如果你只是想要搭建mysql主从看这篇文档就够了,很多地方参考了这篇文章:点击这里 原理图 : 主1(docker容器名为mysql-master) 主2(docker容器名为mysql-master_2) 从1(docker容器名为mysql-slave) 从2(docker容器名为mysql-slave-2) 四个容器都起动成功 解释 注意 :配置文件路径为do

    2024年02月04日
    浏览(38)
  • 搭建hadoop集群,从安装虚拟机开始直到hadoop成功搭建

    搭建Hadoop集群   一、实验目的与要求 学习和掌握Hadoop的相关应用,首先必须得学会搭建Hadoop集群。本次实验将针对Hadoop集群的搭建内容进行演练。学会虚拟机的安装和克隆,Linux系统的网络配置和SSH配置,Hadoop集群的搭建和配置,Hadoop集群测试,熟悉Hadoop集群基本的操作。

    2023年04月08日
    浏览(42)
  • 成功使用kubeadm搭建k8s集群的过程

    目录 1.环境初始化: 2.安装docker 3.安装k8s组件: 4.准备集群镜像: 5.集群初始化: 6.安装网络插件: 7.服务部署: 1.环境初始化: 主机规划: 节点 IP地址 操作系统 配置 master 192.168.178.102 centos7.9 2G2核 node1 192.168.178.152 centos7.9 2G2核 node2 192.168.178.202 centos7.9 2G2核 本次环境搭建需

    2023年04月19日
    浏览(45)
  • mq与mqtt的关系

    mqtt:一种通信协议,规范 MQ:一种通信通道(方式),也叫消息队列 MQTT是在TCP之上的应用层协议,对物联网应用环境做了非常多的优化,TCP是传输层协议,是更通用层的协议。 消息协议概念: 消息协议:为了让消息发送者和消息接收者都能够明白消息所承载的信息(消息

    2024年02月11日
    浏览(26)
  • mq 消息队列 mqtt emqx ActiveMQ RabbitMQ RocketMQ

    十几年前,淘宝的notify,借鉴ActiveMQ。京东的ActiveMQ集群几百台,后面改成JMQ。 Linkedin的kafka,因为是scala,国内很多人不熟。淘宝的人把kafka用java写了一遍,取名metaq,后来再改名RocketMQ。 总的来说,三大原因,语言、潮流、生态。 MQ这种东西,当你的消息量不大的时候,用啥

    2024年02月12日
    浏览(49)
  • RabbitMQ --- 惰性队列、MQ集群

    当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。 解决消息堆积有三种思路: 增加更多消费者,提高消费速度。也就是我们之前说的work

    2024年02月03日
    浏览(45)
  • Windows下安装Spark(亲测成功安装)

    Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎 [2] 。现在形成一个高速发展应用广泛的生态系统。 首先,高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身。 其次,Spark 很快,支持交互式计算和复杂算法。 最后,Spark 是一个

    2024年02月03日
    浏览(33)
  • TiggerRamDisk的超详细使用教程(亲测成功)

    目录 一、软件介绍 (一)型号对应 (二)可以支持的功能: 二、操作步骤

    2024年02月01日
    浏览(38)
  • Ubuntu 连接海康智能相机步骤(亲测,成功读码)

    (就是按照海康的提供的步骤和源码连接相机,流水账) 安装Ubuntu20.04 安装gcc和g++,IDmvs只提供了C代码,所以需要自己make编译,自己去搜下怎么安装。 官网下载IDMVS软件,进入海康机器人页面,进入下载选项,,选择客户端下载,第二页,选择里面的IDMVS(linux) 解压安装,我是

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包