zookeeper學習及集群搭建

2021-08-25 08:35:32 字數 2742 閱讀 5817

zookeeper是分布式協調服務,目的是為分布式應用提供協調服務。

zookeeper也是乙個分布式程式,由多個節點組成,節點又分為leader和follower(還有一種系節點成為observer)兩種角色;zookeeper底層主要是由乙個樹形結構進行對資料的儲存,每個樹節點稱為znode,並且可以監控這些樹節點來實現資料監聽,通過這樣的底層zookeeper實現了不同的服務。然而zookeeper作為第三方,那它一定要實現高可用,zookeeper集群的高可用基本原理是必須有半數以上節點執行,集群即可正常提供服務。

持久型節點:persistent

臨時型節點:ephemeral

順序型節點:sequential

looking狀態:該狀態下表示節點可以進行選舉

following狀態:由looking狀態轉換而來

leading狀態:由looking狀態轉換而來

observer狀態:該狀態下的節點只進行讀資料

leader節點會為每乙個客戶端提交的事務分配乙個全域性的事務id,並且該id是從0遞增的。

zookeeper集群中為了選舉出乙個主節點,集群搭建時必須要搭建3、5、7等奇數個節點,這樣就可以通過相應的選舉演算法(paxos演算法)選舉出乙個leader節點,用於管理整個集群,其他節點成為follower.

當主機server1上線時,通過投票選舉機制server1會給自己投一票,當然這並不能選舉出乙個leader;當server2上線時,server2也給自己投了一票,這樣仍然不能選舉出乙個leader,此時根據演算法會先比較這兩個節點的事務id,發現兩節點事務id均為0,然後會再進行myid(機器id)比較,最後發現server2的myid要大,所以server1會將再次投票將自己的一票投給server2,server2發現自己的票數達到節點數的一半,系統將server2的狀態從looking轉換為leading狀態,server1從looking狀態轉換為following狀態;這樣當乙個主機的票數超過集群數半數的時候選舉出了乙個leader節點,新上線的節點自動成為follower節點。

zookeeper集群中資料的更新,是通過leader節點保證資料一致性的。如上圖:當server1更新了乙個資料後,先是通過與leader節點通訊,然後將資料告訴leader節點,最後leader節點將新的資料下發給其他follower節點。

我這裡準備搭建三個節點的zookeeper集群。

2.上傳安裝包:

這裡可以通過xftp,sftp或者rz上傳軟體包

解壓安裝包

使用tar命令先將jdk解壓到乙個目錄下,並進行環境配置(我之前寫過shell自動安裝和配置,可以嘗試自動化安裝部署),然後解壓zookeeper軟體包到乙個目錄。

配置好jdk環境變數後使用source /etc/profile 命令,更新環境配置

配置相應檔案

進入zookeeper目錄中,首先建立乙個data目錄(用於存放資料),然後進入到conf目錄使用mv命令將zoo_******.cfg檔名修改為zoo.cfg,然後使用vi或vim編輯器進行相應配置。

1.在data目錄中建立乙個myid檔案,用於指定節點id

2.修改datadir路徑到剛剛建立的data路徑,新增圖二指定內容,來指定集群節點以及通訊埠,配置好後儲存退出

對於圖二中的server.1、server.2、server.3,其中的數字要與myid配置檔案中數字保持一致,該id指定機器id在啟動時用於選舉使用。

3.配置好上述檔案後,現在我們需要將配置好的jdk和zookeeper傳輸給其他節點,對於jdk無需更改配置,只需在每台主機上配置環境/etc/profile,然而對於zookeeper的話,需要更改data目錄下的myid為各自id號

server1-->myid:1

server2-->myid:2

server3-->myid:3

啟動集群

注意:啟動集群之前需要先將各節點的防火牆關閉。

各節點進入zookeeper的bin目錄使用zkserver.sh start 命令啟動zookeeper。然後使用zkserver.sh status檢視zk狀態。

集群啟動成功

5 2 搭乙個zookeeper集群

在第乙個已經啟動起來的zookeeper,如果停止,用.zkserver.sh stop 如果要搭集群,那麼一定要修改配置檔案 在conf裡面的zoo.cfg裡修改 vim zoo.cfg 詳細解釋 zookeeper的預設配置檔案為zookeeper conf zoo sample.cfg,需要將...

zookeeper在linux上的集群搭建

1.用stfp等檔案傳輸軟體將linux版本的zookeeper傳輸到linux中 2.在檔案中進行解壓命令為 tar zxvf 檔名 路徑 檔名 c 解壓路徑 3.可以將解壓後的一些無用檔案刪除 doc src 1.進入conf這個檔案中,複製zoo sample.cfg並改名為zoo.cfg 2...

centos7 zookeeper集群的搭建

說明 該集群的搭建是為了服務於solr集群,請參考我的關於solr集群搭建的部落格。1 建立solr cloud目錄 mkdir usr local solr cloud2 將解壓的apache zookeeper 3.5.5 bin複製三份到solr cloud目錄中 cp r apache zo...