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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 云原生时代消息中间件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

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
Kubernetes 监控 Cloud Native
云原生时代下的应用开发与部署实践
【10月更文挑战第4天】在云原生的浪潮中,开发者和运维人员面临着新的挑战和机遇。本文将通过实际案例,展示如何在云平台上高效地开发、部署和管理应用,同时确保系统的可扩展性和高可用性。我们将深入探讨容器化技术、微服务架构以及持续集成/持续部署(CI/CD)流程的实施策略,旨在为读者提供一套完整的云原生解决方案框架。
|
3月前
|
运维 Kubernetes Cloud Native
云原生时代下,如何高效构建与部署微服务
【9月更文挑战第8天】随着云计算技术的飞速发展,云原生已成为现代软件架构的重要趋势。本文将深入浅出地介绍云原生概念、微服务架构的优势以及如何在云平台上高效构建和部署微服务。我们将通过实际的代码示例,展示在Kubernetes集群上部署一个简单的微服务应用的过程,帮助读者理解云原生环境下的微服务开发和运维实践。
|
14天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
29天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
1月前
|
敏捷开发 Kubernetes Cloud Native
阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理
在多云环境中,阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理。通过容器化、服务网格等技术,实现了应用的一致性与可移植性,简化了多云环境下的资源管理和服务治理,帮助企业应对复杂的云环境挑战,加速数字化转型。
42 5
|
1月前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
2月前
|
Kubernetes Cloud Native 持续交付
云原生技术:重塑现代应用开发与部署模式####
本文深入探讨了云原生技术的核心概念、发展历程及其在现代软件开发和部署中的关键作用。通过分析云原生架构的特点,如容器化、微服务、持续集成与持续部署(CI/CD),以及它如何促进应用的可伸缩性、灵活性和效率,本文旨在为读者提供一个关于云原生技术全面而深入的理解。此外,还将探讨实施云原生策略时面临的挑战及应对策略,帮助组织更好地把握数字化转型的机遇。 ####
|
2月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
146 17
|
2月前
|
Cloud Native 持续交付 云计算
云端新纪元:探索云原生技术的奥秘在当今数字化时代,云计算已成为推动企业创新和增长的关键动力。随着云平台的不断成熟,云原生技术应运而生,以其独特的优势引领着一场新的技术革命。本文将深入探讨云原生的核心概念、主要特点以及它如何改变现代软件开发和部署的方式,为您揭开云原生这一神秘面纱。
云原生是一种构建和运行应用程序的方法,充分利用了云平台的弹性、分布式本质以及声明式基础设施。本文将解析云原生的十二要素,微服务架构的优势,以及容器化、持续集成与持续部署(CI/CD)等核心技术的实践应用。通过深入浅出的方式,让读者理解云原生不仅是一种技术,更是一种文化和方法论,它正在重塑软件开发流程,提高资源利用率和应用系统的可扩展性与容错性。
|
1月前
|
监控 Cloud Native 微服务
云端漫步:探索云原生应用的构建与部署
【10月更文挑战第32天】在数字时代的浪潮中,云原生技术如同一艘航船,承载着企业的梦想驶向未知的海洋。本文将带你领略云原生应用的魅力,从基础概念到实战操作,我们将一步步揭开云原生的神秘面纱,体验它如何简化开发、加速部署,并提升系统的可扩展性与可靠性。让我们一起启航,探索云原生的世界!