Apache Pulsar的分布式集群模式构建

1. 准备环境

6台带jdk8的Linux服务器(CentOS7为例)

ip分别为:

主机名 IP地址
zookeeper1 192.168.8.101
zookeeper2 192.168.8.102
zookeeper3 192.168.8.103
pulsar1 192.168.8.108
pulsar2 192.168.8.109
pulsar3 192.168.8.110

2. 下载Pulsar最新安装包

下载地址:Apache Pulsar

3. 构建

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

三人集群组件如下:

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

Pulsar的安装包已包含了搭建集群所需的各个组件库。无需单独下载ZooKeeper安装包和BookKeeper安装包。(在实际

中,zookeeper我们并不仅仅应用在pulsar上,包括HBase等其他的组件也需要依赖,所以我们此处zookeeper使用外置zk集群环境)

注意:如果是在内网测试环境搭建集群,为了避免防火墙造成端口开启繁琐,可以关闭服务器防火墙

第一步: 将下载的pulsar安装包上传到linux服务器, 并解压

java 复制代码
cd /usr/local
上传apache-pulsar-2.8.1-bin.tar.gz

tar -zxvf apache-pulsar-2.8.1-bin.tar.gz

mv apache-pulsar-2.8.1 pulsar

第二步: 修改bookkeeper集群配置文件

java 复制代码
cd /usr/local/pulsar/conf/
vim bookkeeper.conf

修改其第56行:修改本地ip地址(版本不一样位置可能不一样)
advertisedAddress=pulsar1
修改其39行:(版本不一样位置可能不一样)
journalDirectory=/usr/local/pulsar/tmp/journal
修改其389行:(版本不一样位置可能不一样)
ledgerDirectories=/usr/local/pulsar/tmp/ledgers
修改617行:(版本不一样位置可能不一样)
zkServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181

第三步: 修改broker集群的配置文件

java 复制代码
cd /usr/local/pulsar/conf/
vim broker.conf

修改第98行:修改集群的名称(版本不一样位置可能不一样)
clusterName=pulsar-cluster
修改第23行:配置zookeeper地址(版本不一样位置可能不一样)
zookeeperServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
修改第26行:配置zookeeper地址(版本不一样位置可能不一样)
configurationStoreServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
修改第44行:更改为本地ip地址(版本不一样位置可能不一样)
advertisedAddress=pulsar1

第四步: 将配置好bookies目录和brokers目录发送到第二台和第三台

java 复制代码
cd /usr/local
scp -r pulsar/ pulsar2:$PWD
scp -r pulsar/ pulsar3:$PWD

第五步: 修改第二台和第三台的broker的地址和bookies地址

java 复制代码
pulsar2:
cd /usr/local/pulsar/conf/
vim bookkeeper.conf
修改其第56行:修改本地ip地址
advertisedAddress=pulsar2

vim broker.conf
修改第44行:更改为本地ip地址
advertisedAddress=pulsar2

第三台节点:都更改为对应IP地址或者主机名即可

4. 启动

第一步: 首先启动zookeeper集群

java 复制代码
启动命令在zookeeper1启动脚本中,三个同时启动
启动后注意查看状态,必须看到一个leader和两个follower才可以使用

第二步: 初始化元数据(此操作, 仅需要初始化一次即可)

此操作, 仅需要初始化一次即可

java 复制代码
首先初始化Pulsar集群元数据:
cd /usr/local/pulsar/bin
java 复制代码
./pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 \
--configuration-store zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 \
--web-service-url http://pulsar1:8080,pulsar2:8080,pulsar3:8080 \
--web-service-url-tls https://pulsar1:8443,pulsar2:8443,pulsar3:8443 \
--broker-service-url pulsar://pulsar1:6650,pulsar2:6650,pulsar3:6650 \
--broker-service-url-tls pulsar+ssl://pulsar1:6651,pulsar2:6651,pulsar3:6651

接着初始化bookkeeper集群:若出现提示输入Y/N:请输入Y

java 复制代码
./bookkeeper shell metaformat

第三步: 启动bookkeeper服务

java 复制代码
cd /usr/local/pulsar/bin
java 复制代码
./pulsar-daemon start bookie

注意:三个节点都需要依次启动

验证是否启动:可三台都检测

java 复制代码
./bookkeeper shell bookiesanity

提示:

Bookie sanity test succeeded 认为启动成功

第四步: 启动Broker

java 复制代码
cd /usr/local/pulsar/bin
java 复制代码
./pulsar-daemon start broker

注意:三个节点都需要依次启动

检测是否启动:

java 复制代码
./pulsar-admin brokers list pulsar-cluster

提示:

java 复制代码
[root@node1 bin]# ./pulsar-admin brokers iist pulsar-cluster
"node1.itcast.cn:8080"
"node2.itcast.cn:8080"
"node3.itcast.cn:8080"

认为启动成功

5. 测试

在pulsar的bin目录下, 专门提供了一个pulsar-client的客户端工具, Pulsar-Clinet工具允许使用者在运行的集群中消费并发送消息到

Pulsar Topic中

1:模拟开启消费者监听数据

java 复制代码
./pulsar-client consume persistent://public/default/test -s "consumer-test"

2:模拟生产一条数据

java 复制代码
./pulsar-client produce persistent://public/default/test --messages "hello-pulsa"

6. Apache Pulsar的可视化监控部署

第一步: 下载Pulsar-Manager

下载地址:

java 复制代码
https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.3.0/apache-pulsar-manager-0.3.0-bin.tar.gz

第二步: 上传到服务器, 并解压

java 复制代码
cd /usr/local
上传apache-pulsar-manager-0.3.0-bin.tar.gz
解压操作:
tar -zxf apache-pulsar-manager-0.3.0-bin.tar.gz

cd /usr/local/pulsar-manager
接着再次解压:
tar -xvf pulsar-manager.tar

第三步: 拷贝dist包到 pulsar-manager目录下并更名为ui

java 复制代码
cd /usr/local/pulsar-manager/pulsar-manager
cp -r ../dist ui

第四步: 启动Pulsar

java 复制代码
cd /usr/local/pulsar-manager/pulsar-manager
./bin/pulsar-manager

第五步: 初始化超级用户密码(只用执行一次)

java 复制代码
CSRF_TOKEN=$(curl http://192.168.8.108: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://192.168.8.108:7750/pulsar-manager/users/superuser \
   -d '{"name": "pulsar", "password": "pulsar", "description": "test", "email": "username@test.org"}'

第六步: 访问Pulsar UI

java 复制代码
http://192.168.8.108:7750/ui/index.html

用户名: pulsar

密码: pulsar

Apache Pulsar的可视化监控基本使用

第一步: 点击 + new Enirconment 构建新环境,连接pulsar

Environment Name

java 复制代码
pulsar-cluster

Service URL

java 复制代码
http://192.168.8.108:8080

Bookie URL

java 复制代码
http://192.168.8.108:6650
相关推荐
程序员黎剑2 小时前
RabbitMQ-消息可靠性-publisher-confirm持久化与手动ack
分布式·rabbitmq·ruby
比奥利奥还傲.6 小时前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
拼图20915 小时前
Git常用语法
分布式·git·学习
盟道科技1 天前
小程序订阅消息大规模投递实践:频控令牌池、Redis限流与失败补偿设计
分布式·算法·小程序
卷毛的技术笔记1 天前
RocketMQ事务消息:我把分布式事务这层窗户纸捅破了
java·分布式·后端·java-rocketmq
懂软件的胡子个哥2 天前
微信工单系统如何基于 WechatApi 做消息分流和状态流转
运维·分布式·微信·架构·企业微信
九皇叔叔3 天前
从本地事务到分布式事务
java·分布式·分布式事务·cap·base
刃神太酷啦3 天前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
海宇大数据3 天前
分布式网关架构实战:基于海宇数据公安二要素认证即时版构建自动化司机准入网关
人工智能·分布式·架构·自动化
木圭的AI时代指南4 天前
Spark-X2.5 长输入 Agent 实测:全量读取陷阱与解释器寻找死循环复盘,附可复现任务
大数据·分布式·spark