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
相关推荐
zhangpfly4 分钟前
OpenEuler22.04配置zookeeper+kafka三节点集群
分布式·zookeeper·kafka
员宇宙2 小时前
【RabbitMQ的死信队列】
分布式·rabbitmq·ruby
Allen Bright2 小时前
RabbitMQ中的批量Confirm模式:提升消息可靠性与性能
分布式·rabbitmq
bennybi4 小时前
基于Docker的ETCD分布式集群
分布式·docker·etcd
学Linux的语莫6 小时前
linux中,redis分布式集群搭建
linux·redis·分布式·mysql
斑驳竹影7 小时前
kafka的配置
分布式·kafka
沙滩de流沙9 小时前
Hadoop生态
大数据·hadoop·分布式
m0_7482451710 小时前
Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
apache
君败红颜10 小时前
Apache Commons Pool2—Java对象池的利器
java·开发语言·apache
白了个白i10 小时前
多个方向说下nginx和apache的区别
运维·nginx·apache