1. 程式人生 > >Zookeeper叢集部署與配置(三)

Zookeeper叢集部署與配置(三)

在上一篇部落格中我們講解了《Zookeeper的單機配置》,此篇部落格將繼續介紹Zookeeper的叢集部署與配置。

環境

叢集配置的環境與單機配置的環境相同,唯一不同的就是叢集是在多臺伺服器之間配置,當然也有偽叢集的配置,也就是在同一臺機器上配置多臺服務,通過埠號的不同來進行區分。

配置檔案

在單機配置檔案內增加server項的配置,新增之後的配置檔案如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
server.1=IP1:2888:3888
server.2=IP2:2888:3888
server.3=IP3:2888:3888

配置項解釋

引數名 說明
clientPort 無預設值,必須配置,不支援系統屬性方式配置。當前伺服器對外提供服務埠,客戶通過此埠與伺服器建立連線,一般設定為1281。叢集中不需要統一埠,可任意配置埠。
dataDir 無預設值,必須配置。伺服器儲存快照檔案目錄。預設情況下,如果沒有配置dataLogDir,那麼事務日誌也會儲存在這個目錄中。建議將事務日誌目錄獨立配置。
tickTime 預設值:3000(ms),,不支援系統屬性方式配置。用於配置zookeeper中最小時間單元長度,很多執行時的時間間隔都是使用它的倍數來表示的。
initLimit Leader Zookeeper接收叢集其他伺服器初始化等待最大時間(10*tickTime)。
syncLimit Leader Zookeeper和叢集其他伺服器通訊最大時間(5*tickTime)。

server.id=host:port:port解析

每一行此配置表示一個叢集中的一臺伺服器。其中id為Server ID,用來標識該機器在叢集中的編號。同時,在所在伺服器的資料目錄(/tmp/zookeeper)下建立一個myid檔案,該檔案只有一行內容,並且是一個數字,就是對應每臺伺服器的Server ID數字。

比如server.1=IP1:2888:3888的myid中的內容就是1。不同伺服器的ID需要保持不同,並且和zoo.cfg檔案中server.id中的id和myid檔案的內容保持一致。id的取值範圍為1~255。

其中,server.id中配置引數的第一個port是叢集中其他機器與Leader之間通訊的埠,第二個port為當Leader宕機或其他故障時,叢集進行重新選舉Leader時使用的埠。

按照以上相同步驟,配置叢集中的其他機器。每個叢集的zoo.cfg檔案都是相同的,可通過版本控制或其他工具保證每臺zookeeper伺服器的配置檔案相同。叢集中每臺機器唯一不同的是server.id對應的myid檔案中的數字不同。

啟動驗證

完成以上操作之後,啟動叢集中的伺服器,驗證伺服器狀態。此步驟與單機模式相同,不再贅述。

需要注意的是一般zookeeper叢集由3~5臺伺服器組成,即2n+1臺機器。後面章節會詳細介紹為什麼如此。