pulsar叢集搭建——生產環境

2023-01-03 15:00:36

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 算成功

初始化叢集資料,在其中一臺執行就行

$ 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

出現下面這個算成功

設定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
出現叢集機器資訊表示成功

收尾

設定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/