当前位置: 首页 > 工具软件 > Pulsar Manger > 使用案例 >

Pulsar集群搭建和基本命令使用

丁曦哲
2023-12-01

1. Pulsar集群搭建

为了方便快捷,此处使用Docker安装。
(1)拉取最新Pulsar Docker镜像

sudo docker pull apachepulsar/pulsar-all

(2)进入Docker容器
Pulsar容器内部的8080端口和6650端口分别映射到主机的8080端口和6650端口,其中8080端口是web端口,6650用于在程序中访问。

sudo docker run -it -p 6650:6650 -p 8080:8080 3782bd88b304 /bin/bash

此处的3782bd88b304是Image Id。

(3)查看Pulsar版本
实际拉取下来的Pulsar版本为2.8.1,可以使用如下命令查看:

bin/pulsar version

(4)启动本地的单节点Broker进程
前台启动:

bin/pulsar standalone

如果是前台启动,要想进行其他操作,则需要再开一个终端重新进入Docker。

sudo docker exec -it dd2c4601db79 /bin/bash

此处的dd2c4601db79是Container Id。
后台启动:

bin/pulsar-daemon start standalone

推荐使用后台启动的方式。

2. Pulsar基本命令使用

(1)使用producer发送消息
发送消息"hello pulsar"到名称为my-topic的这个Topic上。默认情况下,Topic可以不存在,会自动创建。生产上不建议开启自动创建Topic,避免误操作出现过多不必要的Topic。

bin/pulsar-client produce my-topic --messages "hello pulsar"

(2)使用consumer消费消息
从"my-topic"这个Topic上消费消息,并且指定订阅名称为"first-subscription",这个命令会让客户端阻塞,直到消费到生产者发送的一条消息才会退出。

bin/pulsar-client consume my-topic -n 100 -s "first-subscription" -t "Exclusive"

(3)查看有哪些租户

bin/pulsar-admin tenants list

初始化状态有3个租户,分别是"public"、“pulsar"和"sample”

(4)创建租户

bin/pulsar-admin tenants create my-tenant

(5)删除租户

bin/pulsar-admin tenants delete my-tenant

(6)查看指定租户(public)下的命名空间

bin/pulsar-admin namespaces list public

对于public租户,初始化状态有2个命名空间,“public/default"和"public/functions”。

Pulsar中topic、partition都是逻辑概念。基本的层级结构如下:
topic --> partition --> ledger --> fragment --> entry --> message

3. 使用pulsar-mamager对Pulsar进行可视化管理

(1)拉取pulsar-mamager镜像

sudo docker pull apachepulsar/pulsar-manager

(2)运行pulsar-mamager容器

sudo docker run -it --name pulsar-manager\
    -p 9527:9527 -p 7750:7750 \
    -e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties \
    -d apachepulsar/pulsar-manager

(3)创建管理员账号
注意:密码不能少于6位,否则无法登录

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": "admin", "password": "apachepulsar", "description": "test", "email": "username@test.org"}'

(4)登录pulsar-manager,访问地址:http://localhost:9527

踩坑:按照上面的方式,登录pulsar-manager后会发现无法看到Pulsar集群,并且一直提示"This environment is error. Please check it"。

报错原因:pulsar跟pulsar-manager分别运行在不同的容器中,它们只能访问自己的localhost,而不能访问彼此的。

解决方法:在pulsar-manager容器启动参数中加入 --network host,指定连接到host网络的容器共享Docker host的网络栈。在容器中可以看到host的所有网卡,并且连hostmame 也是host的。host模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性。

因此pulsar-manager正确的启动的命令如下:

sudo docker run --rm --network host -it \
-e REDIRECT_HOST=http://localhost \
-e REDIRECT_PORT=9527 \
-e DRIVER_CLASS_NAME=org.postgresql.Driver \
-e URL='jdbc:postgresql://127.0.0.1:5432/pulsar_manager' \
-e USERNAME=pulsar \
-e PASSWORD=pulsar \
-e LOG_LEVEL=DEBUG \
-v $PWD:/data apachepulsar/pulsar-manager /bin/sh

4. 参考资料

 类似资料: