云原生时代消息中间件Pulsar(介绍、集群安装部署、管理页面安装部署) 2

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 云原生时代消息中间件Pulsar(介绍、集群安装部署、管理页面安装部署)

Zookeeper的元数据存储

Pulsar使用Apache Zookeeper进行元数据存储、集群配置和协调

  1. 配置存储: 存储租户,命名域和其他需要全局一致的配置项
  1. 每个集群有自己独立的ZooKeeper保存集群内部配置和协调信息,例如归属信息,broker负载报告,BookKeeper ledger信息(这个是BookKeeper本身所依赖的)等等。

基于bookKeeper持久化存储

Apache Pulsar 为应用程序提供有保证的信息传递, 如果消息成功到达broker, 就认为其预期到达了目的地。


为了提供这种保证,未确认送达的消息需要持久化存储直到它们被确认送达。这种消息传递模式通常称为持久消息传递. 在Pulsar内部,所有消息都被保存并同步N份,例如,2个服务器保存四份,每个服务器上面都有镜像的RAID存储。


Pulsar用 Apache bookKeeper作为持久化存储。 bookKeeper是一个分布式的预写日志(WAL)系统,有如下几个特性特别适合Pulsar的应用场景:

  1. 使pulsar能够利用独立的日志,称为ledgers. 可以随着时间的推移为topic创建多个Ledgers
  2. 它为处理顺序消息提供了非常有效的存储
  3. 保证了多系统挂掉时Ledgers的读取一致性
  4. 提供不同的Bookies之间均匀的IO分布的特性

5.它在容量和吞吐量方面都具有水平伸缩性。能够通过增加bookies立即增加容量到集群中,并提升吞吐量

Bookies被设计成可以承载数千的并发读写的ledgers。 使用多个磁盘设备 (一个用于日志,另一个用于一6.般存储) ,这样Bookies可以将读操作的影响和对于写操作的延迟分隔开。

19d720274c84440bb00fc27eb20971bc.pngLedger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个bookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:

1.Pulsar Broker可以创建ledeger,添加内容到ledger和关闭ledger。

2.当一个ledger被关闭后,除非明确的要写数据或者是因为写入器挂掉导致ledger关闭,ledger只会以只读模式打开。

3.最后,当ledger中的条目不再有用的时候,整个ledger可以被删除(ledger分布是跨Bookies的)。

Pulsar 代理

Pulsar客户端和Pulsar集群交互的一种方式就是直连Pulsar brokers。然而,在某些情况下,这种直连既不可行也不可取,因为客户端并不知道broker的地址。

例如在云环境或者Kubernetes以及其他类似的系统上面运行Pulsar,直连brokers就基本上不可能了。


Pulsar proxy 为这个问题提供了一个解决方案, 为所有的broker提供了一个网关, 如果选择运行了Pulsar Proxy. 所有的客户都会通过这个代理而不是直接与brokers通信

Pulsar分布式集群安装

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

ZooKeeper 集群(3 个 ZooKeeper 节点组成)

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

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

  1. Pulsar 的安装包已包含了搭建集群所需的各个组件库。无需单独下载 ZooKeeper 安装包和 BookKeeper 安装包。(此处zookeeper使用外置的)
节点 ip
master 172.31.1.100
slave1 172.31.1.101
slave2 172.31.1.102

jdk安装部署

下载网址:https://www.oracle.com/java/technologies/downloads/#java8

上传至主节点之后进行解压,然后配置环境变量

vim /root/.bash_profile

添加(注意改为自己解压出的地址)

export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

zookeeper部署

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

  1. 解压到指定目录,修改文件夹名称
tar -zxvf zookeeper-3.5.7.tar.gz -C /opt/module/
cd /opt/module
mv apache-zookeeper-3.5.7-bin/ zookeeper
  1. 增加myid文件
cd /opt/module/zookeeper/
mkdir zkData
cd zkData
vim myid

写入0,保存退出

  1. 修改配置文件
cd /opt/module/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg

增加以下配置(如果已经有的就进行修改、这里要配置8887端口,默认8080和pulsar有冲突)

dataDir=/opt/module/zookeeper/zkData
admin.serverPort=8887
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
  1. 分发至slave1、slave2节点
scp -r /opt/module/zookeeper root@slave1:/opt/module/
scp -r /opt/module/zookeeper root@slave2:/opt/module/

复制完成后到slave1和slave2上修改myid 分别为 2 3

  1. 到三台机器上进行启动
cd /opt/module/zookeeper
bin/zkServer.sh start


6.查看状态、确保zk没有问题在往下

bin/zkServer.sh status

Pulsar部署

下载地址:https://pulsar.apache.org/zh-CN/download/

选择对应版本下载就可以了,这里我选用的2.8.1

  1. 在 Linux 服务器上创建二个文件夹: brokers、bookies
cd /export/server/
mkdir -p brokers
mkdir -p bookies


  1. 将下载的pulsar安装包上传到linux服务器, 并解压,没有的目录自己创建一下
cd /export/software/
tar -zxf apache-pulsar-2.8.1-bin.tar.gz
cd apache-pulsar-2.8.1
cp -r * /export/server/brokers/
cp -r * /export/server/bookies/
  1. 修改bookkeeper集群的配置文件
cd /export/server/brokers/conf/
vim broker.conf
修改第98行: 修改集群的名称
clusterName=pulsar-cluster
修改第23行: 配置zookeeper地址
zookeeperServers=172.31.1.100:2181,172.31.1.101:2181,172.31.1.102:2181
修改第26行: 配置zookeeper地址
configurationStoreServers=172.31.1.100:2181,172.31.1.101:2181,172.31.1.102:2181
修改第44行: 更改为本地ip地址
advertisedAddress=172.31.1.100

5.将配置好bookies目录和brokers目录发送到第二台和第三台

cd /export/server
scp -r bookies/ brokers/ root@slave1:/export/server
scp -r bookies/ brokers/ root@slave2:/export/server

6.修改第二台和第三台的broker的地址和bookies地址

第二台节点:
cd /export/server/bookies/conf
vim bookkeeper.conf
修改其第56行:修改本地ip地址
advertisedAddress=172.31.1.101
cd /export/server/brokers/conf/
vim broker.conf
修改第44行: 更改为本地ip地址
advertisedAddress=172.31.1.101
第三台节点: 都更改为对应IP地址即可

7.初始化元数据、主节点执行

cd /export/server/brokers/
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper 172.31.1.100:2181,172.31.1.101:2181,172.31.1.102:2181 \
--configuration-store 172.31.1.100:2181,172.31.1.101:2181,172.31.1.102:2181 \
--web-service-url http://172.31.1.100:8080,172.31.1.101:8080,172.31.1.102:8080 \
--web-service-url-tls https://172.31.1.100:8443,172.31.1.101:8443,172.31.1.102:8443 \
--broker-service-url pulsar://172.31.1.100:6650,172.31.1.101:6650,172.31.1.102:6650 \
--broker-service-url-tls pulsar+ssl://172.31.1.100:6651,172.31.1.101:6651,172.31.1.102:6651

8.启动bookie集群

先执行初始化(只需要在一台节点执行即可):  若出现提示,输入 Y,继续
cd /export/server/bookies
bin/bookkeeper shell metaformat
依次在三台节点执行启动:
  cd /export/server/bookies
bin/pulsar-daemon start bookie
验证是否启动: 可三台都检测
bin/bookkeeper shell bookiesanity
提示:
    Bookie sanity test succeeded  认为启动成功

9.启动broker

三台节点都需要执行:
cd /export/server/brokers
bin/pulsar-daemon start broker
检测是否启动:
   bin/pulsar-admin brokers list pulsar-cluster

10.测试集群

# 进入 brokers 目录,选取任一个 broker 节点执行命令即可
cd /export/server/brokers
# 创建租户(租户名:my-tenant)
./bin/pulsar-admin tenants create my-tenant
# 创建命名空间(命名空间名:my-tenant/my-namespace,它指定了租户 my-tenant)
./bin/pulsar-admin namespaces create my-tenant/my-namespace
# 创建持久性分区topic(topic全名:persistent://my-tenant/my-namespace/my-topic;分区数为 3)
./bin/pulsar-admin topics create-partitioned-topic persistent://my-tenant/my-namespace/my-topic -p 3
# 更新命名空间为其指定集群名
./bin/pulsar-admin namespaces set-clusters my-tenant/my-namespace --clusters pulsar-cluster
# 构建消费者:
./bin/pulsar-client consume persistent://public/default/test -s "consumer-test"
# 构建生产者
./bin/pulsar-client produce persistent://public/default/test --messages "hello-pulsar"

如果消费者可以正常接收到消息就代表安装成功

Pulsar admin manger图形界面安装

Pulsar admin manger是基于Plusar的可视化界面,接下来进行安装

  1. 下载 pulsar-admin
cd /export/software
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
  1. 解压压缩包
tar -zxf apache-pulsar-manager-0.2.0-bin.tar.gz -C /export/server/
cd /export/server/pulsar-manager
接着再次解压目录下的tar包
tar -xvf pulsar-manager.tar
  1. 拷贝dist包到 pulsar-manager目录下并更名为ui
cd /export/server/pulsar-manager/pulsar-manager
cp -r ../dist ui
  1. 启动pulsar(这里默认启动是java -jar的方式,所以不要退出进程
./bin/pulsar-manager
  1. 初始化超级用户密码 :
CSRF_TOKEN=$(curl http://localhost: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://localhost:7750/pulsar-manager/users/superuser -d '{"name": "pulsar", "password": "pulsar", "description": "test", "email": "username@test.org"}'

用户名为pulsar 密码为pulsar

  1. 访问Puslar UI

http://172.31.1.100:7750/ui/index.html

点击 new Environment, 设置集群环境即可

点击pulsar_cluster进入管理界面

如果想后台执行的话修改 vim /export/server/pulsar-manager/pulsar-manager/bin/pulsar-manager

加上nohup

启动命令为./bin/pulsar-manager &

声明

大部分来源于黑马:https://space.bilibili.com/415938397/search/video?keyword=pulsar

相关文章
|
2月前
|
运维 Dubbo Cloud Native
Dubbo 云原生重构出击:更快部署、更强控制台、更智能运维
Apache Dubbo 最新升级支持云原生,提供一键部署微服务集群与全新可视化控制台,提升全生命周期管理体验,助力企业高效构建云原生应用。
278 25
|
7月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
4月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
Kubernetes 监控 Cloud Native
云原生时代下的应用开发与部署实践
【10月更文挑战第4天】在云原生的浪潮中,开发者和运维人员面临着新的挑战和机遇。本文将通过实际案例,展示如何在云平台上高效地开发、部署和管理应用,同时确保系统的可扩展性和高可用性。我们将深入探讨容器化技术、微服务架构以及持续集成/持续部署(CI/CD)流程的实施策略,旨在为读者提供一套完整的云原生解决方案框架。
|
8月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
9月前
|
运维 Cloud Native 开发工具
智能运维:云原生大规模集群GitOps实践
智能运维:云原生大规模集群GitOps实践,由阿里云运维专家钟炯恩分享。内容涵盖云原生运维挑战、管理实践、GitOps实践及智能运维体系。通过OAM模型和GitOps优化方案,解决大规模集群的发布效率与稳定性问题,推动智能运维工程演进。适用于云原生环境下的高效运维管理。
271 8
|
10月前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
11月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。

热门文章

最新文章