Apache Pulsar 是一个原生云、分布式消息传递和流媒体平台。支持是一个可水平扩展、异地复制、多租户、持久化存储、高可靠性、低延迟的消息队列。
一、安装部署
准备工作
每个pulsar实例需要准备两个独立的zookeeper集群,一个集群负责集群级别的操作,提供集群的配置管理和协调。另一个负责实例级别的操作,提供整个系统的配置管理(跨集群)。
这里我准备了2个zookeeper集群,具体zookeeper集群配置详情请参考以前的博客
zookeeper cluster 1 | node1:2181,node2:2181,node3:2181,node4:2181,node5:2181 |
zookeeper cluster 2 | node1:2171,node2:2171,node3:2171,node4:2171,node5:2171 |
集群详细设计
单个pulsar集群由bookkeeper、broker、zookeeper集群组成的。
broker: 一个或者多个,,broker 负责处理和负载均衡 producer 发出的消息,并将这些消息分派给 consumer。
bookkeeper:负责存储消息,以及数据持久化存储,一般为一个或多个bookkeeper集群的形式出现。
具体组件在节点中分布如下:
node1 | node2 | node3 | node4 | node5 | |
broker | 1 | 1 | 1 | ||
bookkeeper | 1 | 1 | 1 | 1 | 1 |
下载安装包
在Apache Pulsar 官网网站上进行下载然后上传到服务器中。也可以通过wget下载。
wget 'https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=pulsar/pulsar-2.8.0/apache-pulsar-2.8.0-bin.tar.gz' -O apache-pulsar-2.8.0-bin.tar.gz
tar -xf apache-pulsar-2.8.0-bin.tar.gz
cd apache-pulsar-2.8.0
配置conf
#broker
vim conf/broker.conf
# Zookeeper quorum connection string
zookeeperServers=node1:2181,node2:2181,node3:2181,node4:2181,node5:2181/pulsat-2.8.0
# Configuration Store connection string
configurationStoreServers=node1:2171,node2:2171,node3:2171,node4:2171,node5:2171/pulsat-2.8.0
# Broker data port
brokerServicePort=6650
# Broker data port for TLS - By default TLS is disabled
brokerServicePortTls=6651
# Port to use to server HTTP request
webServicePort=8080
# Port to use to server HTTPS request - By default TLS is disabled
webServicePortTls=8443
# Name of the cluster to which this broker belongs to
clusterName=pulsar-cluster
#bookkeeper
vim conf/bookkeeper.conf
## Server parameters
# Port that bookie server listen on
bookiePort=3181
# Directories BookKeeper outputs its write ahead log.
journalDirectory=data/bookkeeper/journal
## ZooKeeper parameters
zkServers=node1:2181,node2:2181,node3:2181,node4:2181,node5:2181/pulsat-2.8.0
其他的配置可以根据自己的需求进行设置。
初始化集群元数据
Pulsar 集群的本地 Zookeeper 集群和全局的配置存储 Zookeeper 集群都部署完成, 你需要在实例中为每个集群写入一些元数据,进行初始化设置。
以下操作只是向两个zookeeper集群中写入数据,如果想重新初始化,删除掉zookeeper集群中的信息,重新执行命令既可。
#初始化集群元数据
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper node1:2181,node2:2181,node3:2181,node4:2181,node5:2181/pulsat-2.8.0 \
--configuration-store node1:2171,node2:2171,node3:2171,node4:2171,node5:2171/pulsat-2.8.0 \
--web-service-url http://node1:8080/ \
--web-service-url-tls https://node1:8443/ \
--broker-service-url pulsar://node1:6650/ \
--broker-service-url-tls pulsar+ssl://node1:6651/
部署 Bookkeeper
在bookeeper节点中执行以下命令: node1-node5
#启动 bookie节点
bin/pulsar-daemon start bookie
#如果启动失败请检查下日志,看下是不是zookeeper集群配置错误,或者是初始化失败。可以利用zookeeper的可视化工具看下是否成功。
#检查节点是否正常工作
bin/bookkeeper shell bookiesanity
部署 broker
在borker节点中执行以下命令: node1-node3
#启动broker节点
bin/pulsar-daemon start broker
#前台启动
bin/pulsar broker
#通过日志查看是否启动成功,启动失败,请检查两个zookeeper集群的配置是否写对,要求和初始化元数据的一样。
#查看节点是否启动
jps
73969 Main bookie节点
73751 QuorumPeerMain zookeeper节点
39799 QuorumPeerMain zookeeper节点
98106 PulsarBrokerStarter broker
二、常用使用方式
敬请期待!