一、理论介绍
1、简介:
Pulsar 是用于服务器到服务器消息传递的多租户、高性能解决方案。
2、pulsar的主要特点:
- 云原生架构(计算与存储分离),无缝支持跨集群复制
- 比kafka更高的吞吐量和低延迟
- 无缝支持上百万个topics
- 支持多种消息订阅模式 (exclusive & shared & failover)
- 通过持久化存储BookKeeper保障消息的传递
- 轻量级Serverless计算框架Pulsar Functions提供了流式数据处理能力。
- 提供分层存储能力,释放BookKeeper的空间:将老数据or长期不用的数据放到AWS S3等
3、pulsar架构图:
与其他消息系统不同,Pulsar抽象为两层架构:
- 无状态服务层:处理消息的Broker组成
- 有状态存储层:BookKeeper存储节点组成,可以持久化的存储消息
Pulsar Broker:
不存储实际的数据,而是将消息存储在BookKeeper(又名Bookie)中,仅仅拥有Topic/Partitions的代理权。它屏蔽了msg复杂的读写流程,保证了数据一致性和负载均衡。meta信息是存储在zookeeper中,消息存储到BookKeeper中。
二、部署
1、添加helm仓库:
helm repo add apache https://pulsar.apache.org/charts
2、查看版本:
helm search repo apache/pulsar -l
3、下载特定版本:
helm pull apache/pulsar --version 2.7.13
tar xzvf pulsar-2.7.13.tgz
修改values文件:
vim pulsar/values.yaml
initialize: true
volumes:
persistence: true
local_storage: false
images:
pulsar_manager:
repository: apachepulsar/pulsar-manager
tag: v0.1.0
pullPolicy: IfNotPresent
hasCommand: false
zookeeper:
volumes:
persistence: true
data:
name: data
size: 20Gi
local_storage: false
storageClassName: lowcode-prod
bookkeeper:
replicaCount: 3
volumes:
persistence: true
journal:
name: journal
size: 10Gi
local_storage: false
storageClassName: lowcode-prod
broker:
replicaCount: 3
proxy:
replicaCount: 3
prometheus:
volumes:
persistence: true
data:
name: data
size: 10Gi
local_storage: false
storageClassName: lowcode-prod
pulsar_manager:
admin:
user: pulsar
password: pulsar
#备注:pulsar_manager版本使用v0.1.0,v0.2.0需要自定义密码。
grafana/proxy/pulsar_manager中的service去掉type这一行
service:
annotations: {}
type: LoadBalancer #去掉,不然会增加SLB
4、安装依赖:为pulsar_manager管理员生成密钥(如果不执行这一步,后面不会创建密码的secret)
git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart
./scripts/pulsar/prepare_helm_release.sh -n test -k pulsar
5、安装pulsar
helm install pulsar ./pulsar -n test
6、配置ingress并访问:
#备注:pulsar_manager v0.1.0版本的默认用户名密码是:pulsar/plusar
7、添加proxy:
备注:pulsar_manager为:v0.2.0版本,设置密码:
#进入到容器中:
kubectl exec -it pulsar-pulsar-manager-84585476c8-hfn26 -n test sh
#设置密码:
CSRF_TOKEN=$(curl http://localhost:7750/pulsar-manager/csrf-token)
2curl \
3 -H 'X-XSRF-TOKEN: $CSRF_TOKEN' \
4 -H 'Cookie: XSRF-TOKEN=$CSRF_TOKEN;' \
5 -H "Content-Type: application/json" \
6 -X PUT http://localhost:7750/pulsar-manager/users/superuser \
7 -d '{"name": "admin", "password": "apachepulsar", "description": "test",
8 "email": "username@test.org"}'
#登录时的用户名密码:admin/apachepulsar
【完成】