二进制和docker两种方式部署Apache pulsar(standalone)

#作者:闫乾苓

文章目录

  • 1、二进制安装部署Pulsar(standalone)
    • [1.1 安装配置JDK](#1.1 安装配置JDK)
    • [1.2 下载解压pulsar安装包](#1.2 下载解压pulsar安装包)
    • [1.3 启动独立模式的Pulsar 集群](#1.3 启动独立模式的Pulsar 集群)
    • [1.4 创建主题测试](#1.4 创建主题测试)
    • [1.5 向主题写入消息测试](#1.5 向主题写入消息测试)
    • [1.6 从主题中读取消息测试](#1.6 从主题中读取消息测试)
  • 2.docker安装部署Pulsar(standalone)
    • [2.1 使用docker 启动Pulsar](#2.1 使用docker 启动Pulsar)
    • [2.2 使用客户端API测试集群](#2.2 使用客户端API测试集群)

1、二进制安装部署Pulsar(standalone)

1.1 安装配置JDK

根据官方文档要求,需要安装合适的 64 位 JRE/JDK 版本。请参考Pulsar Runtime Java 版本建议

组件 Java 版本
Broker 17
Functions / IO 17
CLI 17
Java Client 8 or 11 or 17

Openjdk17下载地址:

https://adoptium.net/zh-CN/temurin/releases/?variant=openjdk17

复制代码
# 解压下载的安装包
[root@pulsar ~]# tar xf OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz -C /opt

# 配置软连接
[root@pulsar ~]# ln -s /opt/jdk-17.0.14+7/ /opt/openjdk-17

# 配置PATH环境
[root@pulsar ~]# cat >> /etc/profile << EOF
export JAVA_HOME=/opt/openjdk-17
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

# 使PATH环境生效
[root@pulsar ~]# source /etc/profile

# 验证,能输出正确版本为配置成功
[root@pulsar ~]#  java -version
openjdk version "17.0.14" 2025-01-21
OpenJDK Runtime Environment Temurin-17.0.14+7 (build 17.0.14+7)
OpenJDK 64-Bit Server VM Temurin-17.0.14+7 (build 17.0.14+7, mixed mode, sharing)

1.2 下载解压pulsar安装包

复制代码
# 下载安装包
[root@pulsar ~]# wget https://archive.apache.org/dist/pulsar/pulsar-2.11.4/apache-pulsar-2.11.4-bin.tar.gz
# 解压到/opt
[root@pulsar ~]# tar xf apache-pulsar-2.11.4-bin.tar.gz -C /opt/

# 设置软连接
[root@pulsar opt]# ln -s /opt/apache-pulsar-2.11.4/ /opt/pulsar

1.3 启动独立模式的Pulsar 集群

复制代码
[root@pulsar ~]# cd /opt/pulsar/
[root@pulsar ~]# bin/pulsar standalone

Pulsar 集群启动时,会创建以下目录:

目录 描述
data BookKeeper 和 RocksDB 创建的所有数据
Log 所有服务器端日志
  • 要将服务作为后台进程运行,可以使用该bin/pulsar-daemon start standalone命令。
  • 命名空间public/default是在启动 Pulsar 集群时创建的。此命名空间用于开发目的。所有 Pulsar 主题均在命名空间内进行管理。

1.4 创建主题测试

Pulsar 将消息存储在主题中。即使 Pulsar 可以在引用主题时自动创建主题,在使用主题之前明确创建主题也是一种很好的做法。

要创建新主题,请运行以下命令:

root@pulsar pulsar\]# bin/pulsar-admin topics create persistent://public/default/my-topic ### 1.5 向主题写入消息测试 [root@pulsar pulsar]# bin/pulsar-client produce my-topic --messages 'Hello Pulsar!' ... 2025-04-14T11:30:37,582+0800 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced ### 1.6 从主题中读取消息测试 [root@pulsar pulsar]# bin/pulsar-client consume my-topic -s 'my-subscription' -p Earliest -n 0 Earliest 表示从最早的未消费消息开始消费。-n配置消费的消息数量,0 表示永远消费。 一个shell终端写入,另外一个终端读取: ----- got message ----- key:\[null\], properties:\[\], content:Hello Pulsar!-0 ----- got message ----- key:\[null\], properties:\[\], content:Hello Pulsar!-1 ----- got message ----- key:\[null\], properties:\[\], content:Hello Pulsar!-2 1.7 批量写入消息 \[root@pulsar pulsar\]# bin/pulsar-client produce my-topic --messages "$(seq -s, -f 'Message NO.%g' 1 10)" 读取的终端输出如下: ----- got message ----- key:\[null\], properties:\[\], content:Message NO.1 ... ----- got message ----- key:\[null\], properties:\[\], content:Message NO.10 1.8 停止Pulsar 使用bin/pulsar standalone启动时,使用Ctrl-C停止。 使用bin/pulsar-daemon start standalone启动时,使用一些命令停止集群: \[root@pulsar pulsar\]# bin/pulsar-daemon stop standalone ## 2.docker安装部署Pulsar(standalone) ### 2.1 使用docker 启动Pulsar 运行以下命令在 Docker 容器内启动 Pulsar docker run -d \ -p 6650:6650 -p 8080:8080 \ --mount source=pulsardata,target=/pulsar/data \ --mount source=pulsarconf,target=/pulsar/conf \ --user=0 \ apachepulsar/pulsar:2.11.4 bin/pulsar standalone 启动后会创建2个volume [root@pulsar pulsar]# docker volume ls DRIVER VOLUME NAME local pulsarconf local pulsardata 执行健康检查: [root@pulsar pulsarconf]# docker exec -it d7a633a7b7d8 bash root@d7a633a7b7d8:/pulsar# pwd /pulsar root@d7a633a7b7d8:/pulsar# bin/pulsar-admin brokers healthcheck ok ### 2.2 使用客户端API测试集群 Pulsar 提供多种客户端库,例如Java、Go、Python、C++。 下面的示例使用Python 客户端 API开始使用 Pulsar。 直接从PyPI安装 Pulsar Python 客户端库 pip install pulsar-client 创建consumer.py,创建消费者并订阅主题: import pulsar client = pulsar.Client('pulsar://localhost:6650') consumer = client.subscribe('my-topic', subscription_name='my-sub') while True: msg = consumer.receive() print("Received message: '%s'" % msg.data()) consumer.acknowledge(msg) client.close() 创建producer.py启动生产者来发送一些测试消息: import pulsar client = pulsar.Client('pulsar://localhost:6650') producer = client.create_producer('my-topic') for i in range(10): producer.send(('hello-pulsar-%d' % i).encode('utf-8')) client.close() 执行2个py脚本,consumer.py输出如下: [root@pulsar docker_install]# python consumer.py 2025-04-14 17:26:52.515 INFO [140167888657472] Client:86 | Subscribing on Topic :my-topic ... Received message: 'b'hello-pulsar-0'' Received message: 'b'hello-pulsar-1'' Received message: 'b'hello-pulsar-2'' Received message: 'b'hello-pulsar-3'' Received message: 'b'hello-pulsar-4'' Received message: 'b'hello-pulsar-5'' Received message: 'b'hello-pulsar-6'' Received message: 'b'hello-pulsar-7'' Received message: 'b'hello-pulsar-8'' Received message: 'b'hello-pulsar-9'' 获取topic的统计数据: curl http://localhost:8080/admin/v2/persistent/public/default/my-topic/stats | python -m json.tool

相关推荐
alden_ygq1 小时前
金丝雀/灰度/蓝绿发布的详解
云原生·容器·kubernetes·devops
网安INF3 小时前
Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437)
java·网络安全·apache
alden_ygq4 小时前
Kubernetes排错(十)-常见网络故障排查
云原生·容器·kubernetes
zxy984 小时前
Docker、Docker-compose、K8s、Docker swarm之间的区别
docker·kubernetes
alden_ygq5 小时前
K8S服务的请求访问转发原理
云原生·容器·kubernetes
Mr_wilson_liu6 小时前
k8s删除pv和pvc后,vg存储没释放分析
云原生·容器·kubernetes
alden_ygq8 小时前
K8S Svc Port-forward 访问方式
云原生·容器·kubernetes
hwj运维之路8 小时前
k8s监控方案实践(二):集成Alertmanager告警与钉钉Webhook通知
云原生·容器·kubernetes
心动啊1219 小时前
docker常用命令总结
docker·容器·eureka
python算法(魔法师版)9 小时前
Docker容器启动失败?无法启动?
linux·运维·nginx·docker·容器