pulsar集群搭建

前置条件,需要JDK环境

192.168.1.1 192.168.1.2 192.168.1.3

写入hosts 所有机器都需要执行

$ cat >>/etc/hosts<<EOF 192.168.1.1 pulsar01 zk01 192.168.1.2 pulsar02 zk02 192.168.1.3 pulsar03 zk03

JDK 所有机器都需要执行

下载地址 https://www.oracle.com/java/technologies/downloads/ 版本:jdk-8u351-linux-x64.tar.gz

$ tar xvfz jdk-8u351-linux-x64.tar.gz $ mv jdk1.8.0_351 /opt/module/jdk1.8.0_351

编辑 ~/.bash_profile 加入环境配置

JAVA_HOME=/opt/module/jdk1.8.0_351 CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH CLASSPATH JAVA_HOME

$ source ~/.bash_profile 生效命令

下载pulsar 所有机器都需要执行

$ wget 'https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=pulsar/pulsar-2.10.2/apache-pulsar-2.10.2-bin.tar.gz' -O apache-pulsar-2.10.2-bin.tar.gz $ tar xvfz apache-pulsar-2.10.2-bin.tar.gz $ mv apache-pulsar-2.10.2-bin /opt/module/pulsar-2.10.2

如果上方地址下载不成功,需要手动下载后导入
https://pulsar.apache.org/download/

部署Zookeeper 所有机器都需要执行

zookeeper为pulsar管理各种与协调相关和配置相关的基本任务,而且pulsar安装包里已经集成了zookeeper组件
加入配置到zookeeper配置文件
官方文档里面支持 etcd还有别的组件来替代zookeeper,此文档先用zookeeper配置

cat >>/opt/module/pulsar-2.10.2/conf/zookeeper.conf<<EOF server.1=zk01:2185:2186 server.2=zk02:2185:2186 server.3=zk03:2185:2186 EOF

在每个主机上指定节点ID
zk01

mkdir -p /opt/module/pulsar-2.10.2/data/zookeeper echo "1" > /opt/module/pulsar-2.10.2/data/zookeeper/myid

zk02

mkdir -p /opt/module/pulsar-2.10.2/data/zookeeper echo "2" > /opt/module/pulsar-2.10.2/data/zookeeper/myid

zk03

mkdir -p /opt/module/pulsar-2.10.2/data/zookeeper echo "3" > /opt/module/pulsar-2.10.2/data/zookeeper/myid

启动zookeeper
/opt/module/pulsar-2.10.2/bin/pulsar-daemon start zookeeper 使用命令查看端口是否正常
net -anp|grep 2181

部署Bookkeeper 所有机器都需要执行

编辑配置文件,找到以下配置项

# Default port for Prometheus metrics exporter advertisedAddress=pulsar01 #56行 这里需要填入本地ip,每台机器都不一样,另外两台机器按实际填入 prometheusStatsHttpPort=8100 #575行 修改成8100,因为8000已经被zookeeper占用 metadataServiceUri=metadata-store:zk:zk01:2181,zk02:2181,zk03:2181 #638行 加入zk地址

初始化元数据
/opt/module/pulsar-2.10.2/bin/bookkeeper shell metaformat
启动 bookkeeper
/opt/module/pulsar-2.10.2/bin/pulsar-daemon start bookie #出现Y/N: 输入Y即可
测试 bookkeeper
/opt/module/pulsar-2.10.2/bin/bookkeeper shell bookiesanity 出现末尾出现 Bookie sanity test succeeded 算成功

Plumtree集群架构缺点 pulsar集群搭建_JAVA

初始化集群数据,在其中一台执行就行

$ bin/pulsar initialize-cluster-metadata \ --cluster pulsar-cluster-qj \ --metadata-store zk:zk01:2181,zk02:2181,zk03:2181 \ --configuration-metadata-store zk:zk01:2181,zk02:2181,zk03:2181 \ --web-service-url http://pulsar01:8080,pulsar02:8080,pulsar03:8080 \ --web-service-url-tls https://pulsar01:8443,pulsar02:8443,pulsar03:8443 \ --broker-service-url pulsar://pulsar01:6650,pulsar02:6650,pulsar03:6650 \ --broker-service-url-tls pulsar+ssl://pulsar01:6651,pulsar02:6651,pulsar03:6651

--cluster集群名字
--metadata-store 元数据存储连接字符串
--configuration-metadata-store 整个实例的配置存储连接字符串
--web* 集群的web服务url
--broker* 集群 允许与集群中的代理进行交互的代理服务URL

出现下面这个算成功

Plumtree集群架构缺点 pulsar集群搭建_zookeeper_02

配置broker 所有机器都需要执行

clusterName=pulsar-cluster-qj #115行,和初始化的时候填写的一样 metadataStoreUrl=zk:zk01:2181,zk02:2181,zk03:2181 #27行填写zk集群url

启动broker
/opt/module/pulsar-2.10.2/bin/pulsar-daemon start broker
查看状态
/opt/module/pulsar-2.10.2/bin/pulsar-admin brokers list pulsar-cluster-qj
出现集群机器信息表示成功

Plumtree集群架构缺点 pulsar集群搭建_zookeeper_03

收尾

配置pulsar的环境变量,命令操作就方便许多
编辑环境变量文件 vim ~/.bash_profile
添加 PULSAR_HOME=/opt/module/pulsar-2.10.2/bin 修改PATH,在末尾加入 :$PULSAR_HOME 生效配置文件 source ~/.bash_profile

官方使用etcd或者RocksDB替换Zookeeper做为pulsar metadata stroe 文档
https://pulsar.apache.org/docs/next/administration-metadata-store/