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...