首頁 > 軟體

Apache Pulsar叢集搭建部署詳細過程

2022-02-08 13:02:08

一、叢集組成說明

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安裝包

切換到根目錄:$ cd / 
建立data目錄:$ mkdir data
解壓:$ tar -zxvf apache-pulsar-2.9.1-bin.tar.gz

2、修改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叢集的各個節點指定編號

3、在每個zookeeper節點的機器上,新建如下檔案目錄:

data:ZooKeeper使用的資料儲存目錄
mkdir -pv /data/zookeeper/data
log:ZooKeeper使用的紀錄檔儲存目錄
mkdir -pv /data/zookeeper/log

4、為每個zookeeper節點新建myid,分別在指定的sever上寫入組態檔中指定的編號:

在server.1伺服器上執行bash命令:
echo 1 > /data/zookeeper/data/myid
在server.2伺服器上執行bash命令:
echo 2 > /data/zookeeper/data/myid
在server.3伺服器上執行bash命令:
echo 3 > /data/zookeeper/data/myid

5、執行後臺執行命令,這個命令是啟動zookeeper:

bin/pulsar-daemon start zookeeper

6、執行zookeeper使用者端連線命令:

bin/pulsar zookeeper-shell
使用者端正常連線,就算zookeeper啟動好了

7、在另外兩臺伺服器上也執行bin/pulsar-daemon start zookeeper之後,在其中一個zookeeper節點的機器上,初始化叢集後設資料(總共只需執行一次):

例如在IP1上:
bin/pulsar initialize-cluster-metadata 
    --cluster pulsar-cluster-zk 
    --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-zk 
  --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

注意:
啟動3臺伺服器的zookeeper節點之後,發現zookeeper節點之後無法相互註冊,需要開放特定的埠或直接關閉防火牆。下面是firewall防火牆相關操作指令:

firewall防火牆
1、檢視firewall服務狀態
systemctl status firewalld
出現Active: active (running)切高亮顯示則表示是啟動狀態。
出現 Active: inactive (dead)灰色表示停止,看單詞也行。

2、檢視firewall的狀態
firewall-cmd --state

3、開啟、重啟、關閉、firewalld.service服務
# 開啟
service firewalld start
# 重啟
service firewalld restart
# 關閉
service firewalld stop

4、檢視防火牆規則
firewall-cmd --list-all

5、查詢、開放、關閉埠
# 查詢埠是否開放
firewall-cmd --query-port=8080/tcp
# 開放80埠
firewall-cmd --permanent --add-port=80/tcp
# 移除埠
firewall-cmd --permanent --remove-port=8080/tcp
#重啟防火牆(修改設定後要重啟防火牆)
firewall-cmd --reload

四、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 -pv /data/bookkeeper/
mkdir -pv /data/bookkeeper/journal
mkdir -pv /data/bookkeeper/ledgers

3、執行初始化後設資料命令,若出現提示,輸入Y繼續(該步驟只需在一個bookie節點執行一次,總共只需執行一次)

bin/bookkeeper shell metaformat

4、在三臺機器上,分別輸入以下命令來以後臺程序啟動bookie

bin/pulsar-daemon start bookie

5、驗證是否啟動成功

bin/bookkeeper shell bookiesanity
出現Bookie sanity test succeeded則代表啟動成功。
如果需要關閉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-zk

注意:
上面的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的部署就完成了。

六、docker安裝pulsar-dashboard

Pulsar自帶 Dashboard,可對broker、bookie、ZooKeeper 叢集和topic等進行監控和統計。

1、安裝docker

yum install -y docker 
systemctl start docker
systemctl enable docker

2、安裝pulsar-dashboard

docker run --name pulsar-dashboard -dit -p 80:80 -e SERVICE_URL=http://PULSARSEVERIP:8080 apachepulsar/pulsar-dashboard

通過瀏覽器存取docker宿主機IP

到此這篇關於Apache Pulsar叢集搭建的文章就介紹到這了,更多相關Apache Pulsar叢集內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com