Apache Pulsar集群搭建部署2.9.3

集群架构

  • Broker
    • 一个或多个Broker
    • 处理和负载接受到的生产者发送的消息数据
    • 调度消息发送给消费者
    • 与Zookeeper进行通信以处理各种协调任务,
    • 将消息存储在BookKeeper实例(又称为bookies)中
    • 依赖于ZooKeeper集群来执行某些任务,
    • 等等
  • Apache Zookeeper(Standby/Cluster)
    • Pulsar使用ZK存储元数据、集群配置,还有协调各Broker
    • 协调由那个Broker响应数据处理
    • 存储Topic主题的元数据
  • Apache BookKeeper(又称为bookies)
    • 由一个或多个bookies组成的BookKeeper集群来存储需要持久化的消息数据,和消费者消费消息的游标offset
    • Apache BookKeeper是一个分布式的WAL(write-ahead log)系统

提示

1. 除了最极端的情况,对于绝大多数的用例来说,单机群安装的Pulsar就能够满足要求了。 如果是创业公司或单个团队想体验下Pulsar,我们推荐使用单集群。 如果你需要使用多集群的 Pulsar 实例 请看这个指南here。

2. 如果要在部署的 Pulsar 集群中使用所有内置的 Pulsar IO连接器。你必须先下载apache-pulsar-io-connectors安装包,然后将apache-pulsar-io-connectors安装到每台 broker 中 Pulsar 安装路径的connectors目录下。如果需要用独立的 function worker 运行Pulsar Functions,则也需要将包安装在 worker 节点的对应目录。

3. 如果要在部署的集群使用分层存储特性,你必须先下载apache-pulsar-offloaders安装包,然后将apache-pulsar-offloaders安装到每台 broker 中 Pulsar 安装路径的offloaders 目录下。 了解该特性的详细配置,请参考分层存储指南。

Pulsar Runtime Java Version Recommendation

  • 请使用java8及以上版本

部署Pulsar集群包括以下步骤(按顺序):

  • 部署一个 ZooKeeper 集群 (可选)
  • 初始化集群元数据
  • 部署一个 Bookeeper 集群
  • 部署一个或多个 Pulsar brokers

一、集群组成说明

1、搭建Pulsar集群至少需要3个组件:ZooKeeper集群、BookKeeper集群和Broker集群(Broker是Pulsar的自身实例)。这三个集群组件如下:
ZooKeeper集群(3个ZooKeeper节点组成)
Bookie集群(也称为BookKeeper集群,3个BookKeeper节点组成)
Broker集群(3个Pulsar节点组成)

2、Pulsar的安装包已经包含了搭建集群所需的各个组件库,无需单独下载ZooKeeper安装包和BookKeeper安装包。

二、安装前置条件

1、准备3台测试Linux服务器(Centos 7)。
2、在3台Linux裸机服务器上安装JDK(要求版本不低于JDK8)。
3、下载Pulsar安装包,https://pulsar.apache.org/download/,上传至3台服务器。

三、ZooKeeper集群搭建

Pulsar安装包内包含了ZooKeeper,也可以自建ZooKeeper,自建ZooKeeper的方式略。安装Pulsar安装包内的ZooKeeper方法如下:

1、解压Pulsar安装包
#创建data目录:
mkdir -p /data/zookeeper/{data,log}
#解压:
tar xvzf apache-pulsar-2.9.3-bin.tar.gz
cd apache-pulsar-2.9.3
2、安装内置连接器(可选)
wget https://archive.apache.org/dist/pulsar/pulsar-2.9.3/connectors/{connector}-2.9.3.nar
mkdir connectors
wget https://archive.apache.org/dist/pulsar/pulsar-2.9.3/connectors/pulsar-io-kafka-2.9.3.nar
mv pulsar-io-kafka-2.9.3.nar connectors/
3、修改zookeeper.conf配置文件(三个节点上都需执行此操作),新增或修改如下关键配置项:
#dataDir是修改,其他都是新增
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/log
server.1=IP1:2888:3888
server.2=IP2:2888:3888
server.3=IP3:2888:3888
参数说明:
dataDir:当前zookeeper节点的数据存放目录
dataLogDir:当前zookeeper节点的日志存放目录
server.1~3:为zookeeper集群的各个节点指定编号
4、在每个zookeeper节点的机器上,新建如下文件目录:
#data:ZooKeeper使用的数据存储目录
mkdir -p /data/zookeeper/data
#log:ZooKeeper使用的日志存储目录
mkdir -p /data/zookeeper/log
5、为每个zookeeper节点新建myid,分别在指定的sever上写入配置文件中指定的编号:
在server.1服务器上执行命令:
echo 1 > /data/zookeeper/data/myid
在server.2服务器上执行命令:
echo 2 > /data/zookeeper/data/myid
在server.3服务器上执行命令:
echo 3 > /data/zookeeper/data/myid
6、后台启动zookeeper:
./bin/pulsar-daemon start zookeeper
7、执行zookeeper客户端连接命令:
./bin/pulsar zookeeper-shell

客户端正常连接,就算zookeeper启动好了

7、在另外两台服务器上也执行bin/pulsar-daemon start zookeeper之后,在其中一个zookeeper节点的机器上,初始化集群元数据(总共只需执行一次):

例如在IP1上:


./bin/pulsar initialize-cluster-metadata \
    --cluster pulsar-cluster-1 \
    --zookeeper IP1:2181 \
    --configuration-store IP1:2181 \
    --web-service-url http://IP1:8080,IP2:8080,IP3:8080 \
    --web-service-url-tls https://IP1:8443,IP2:8443,IP3:8443 \
    --broker-service-url pulsar://IP1:6650,IP2:6650,IP3:6650 \
--broker-service-url-tls pulsar+ssl://IP1:6651,IP2:6651,IP3:6651

或使用如下指令:

./bin/pulsar initialize-cluster-metadata \
  --cluster pulsar-cluster-1 \
  --zookeeper HOSTNAMEIP:2181 \
  --configuration-store HOSTNAMEIP:2181 \
  --web-service-url http://HOSTNAMEIP:8080 \
  --web-service-url-tls https://HOSTNAMEIP:8443 \
  --broker-service-url pulsar://HOSTNAMEIP:6650 \
  --broker-service-url-tls pulsar+ssl://HOSTNAMEIP:6651

集群元数据说明:

  • cluster 集群名称
  • zookeeper ZooKeeper集群连接参数,仅需要包含ZooKeeper集群中的一个节点即可
  • configuration-store Pulsar实例的配置存储集群(ZooKeeper),多集群部署时才会发挥作用,需要另外部署ZooKeeper集群,但是单集群部署时可以和–zookeeper参数设置一样,只需要包含ZooKeeper集群中的一个节点即可
  • web-service-url 集群Web服务的URL+端口,URL是一个标准的DNS名称,默认端口8080,不建议修改。
  • web-service-url-tls 集群Web提供TLS服务的URL+端口,端口默认8443,不建议修改。
  • broker-service-url 集群brokers服务URL,URL中DNS的名称和Web服务保持一致,URL使用pulsar替代http/http,端口默认6650,不建议修改。
  • broker-service-url-tls 集群brokers提供TLS服务的URL,默认端口6551,不建议修改。
8、验证zookeeper初始化集群是否初始化成功
./bin/pulsar zookeeper-shell
进入zk控制台,通过ls /查看所有zk节点。能看到bookies,ledgers等节点,则说明初始化成功了。
如果需要关闭zookeeper,可使用命令
./bin/pulsar-daemon stop zookeeper

四、BookKeeper集群搭建

1、修改bookkeeper.conf配置文件(三个节点上都需执行此操作),修改如下关键配置项:
advertisedAddress=IP1
zkServers=IP1:2181,IP2:2181,IP3:2181
journalDirectory=/data/bookkeeper/journal
ledgerDirectories=/data/bookkeeper/ledgers
prometheusStatsHttpPort=8100
注意:
1、prometheusStatsHttpPort默认是8000,但实际上在bookkeeper.conf中,httpServerPort默认也是8000,会导致端口被占用。
2、上面的advertisedAddress需要设置为对应机器的ip,而不是全设置为同一个

参数说明:

  • advertisedAddress:指定当前节点的主机名或IP地址。
  • zkServers:指定zookeeper集群,用来将bookkeeper节点的元数据存放在zookeeper集群。
  • journalDirectories:当前bookkeeper节点的journal数据存放目录。
    如果需要提高磁盘写入性能,可以指定多个目录用来存放journal数据,关键是每一个目录必须在不同的磁盘,不然反而会影响写入性能
  • ledgerDirectories:当前bookkeeper节点的ledger存放目录
2、在每个部署bookkeeper的机器上,创建bookie所需要目录
mkdir -p /data/bookkeeper/{journal,ledgers}
##### 3、在三台机器上,分别输入以下命令来以后台进程启动bookie

~~~shell
./bin/pulsar-daemon start bookie
4、验证是否启动成功
#出现Bookie sanity test succeeded则代表启动成功。
./bin/bookkeeper shell bookiesanity
#验证查看bookie可用节点个数
 ./bin/bookkeeper shell listbookies -rw
#如果需要关闭bookkeeper,可使用命令
./bin/pulsar-daemon stop bookie

五、Broker集群搭建

1、在每个部署Broker的机器上,修改broker.conf配置文件,修改如下关键配置项:
zookeeperServers=IP1:2181,IP2:2181,IP3:2181
configurationStoreServers=IP1:2181,IP2:2181,IP3:2181
advertisedAddress=IP1
#clusterName与前面zookeeper初始化的cluster一致
clusterName=pulsar-cluster-1
注意:
上面的advertisedAddress需要设置为对应机器的ip,而不是全设置为同一个

参数说明:

  • zookeeperServers:指定zookeeper集群,用来将broker节点的元数据存放在zookeeper集群
  • configurationStoreServers:多集群部署时管理多个pulsar集群元数据的zookeeper集群地址,单集群部署时可以和zookeeperServers设置一样
  • advertisedAddress:指定当前节点的主机名或IP地址
  • clusterName:指定pulsar集群名称,与初始化时定义的保持一致
2、在每个部署Broker的机器上,以后台进程启动broker
./bin/pulsar-daemon start broker
如果需要关闭broker,可使用命令
./bin/pulsar-daemon stop broker
3、查看集群 brokers 节点情况
./bin/pulsar-admin brokers list pulsar-cluster

此时集群内有存活的节点: IP1、IP2、IP3,端口号都是8080。到这一步,Pulsar的部署就完成了

六、验证集群正常的生产消费功能

● 通过启动consumer和producer测试消息是否能传输成功。
● 建议先启动Consumer,再启动Producer。
● Consumer

bin/pulsar-client consume \
  persistent://public/default/test \
  -n 100 \
  -s "consumer-test" \
  -t "Exclusive"

● Produce
○ 如果你指定了 pulsar-cluster-prod 以外的集群名称,你需要在主题中使用不同的集群名称。

bin/pulsar-client produce \
  persistent://public/default/test \
  -n 1 \
  -m "Hello Pulsar"

● 成功消费返回结果:

----- got message -----
Hello Pulsar

参考:

https://pulsar.apache.org/zh-CN/docs/2.9.3/deploy-bare-metal/

你可能感兴趣的:(apache,大数据,linux)