在剛開始沒有接觸zookeeper的具體應用前,光看別人的描述,其實對它的實際應用其實不是特別清晰,因此慢慢從其基礎應用開始瞭解其底層原理是很重要也是很必要的。html
首先,安裝Zookeeper並瞭解一下Zookeeper的基礎命令。這個過程是很是簡單的,正如zookeeper官網說的,zookeeper是可複製的,安裝zookeeper的集羣其實就是安裝多個單機版的zookeeper,而後經過配置讓每一個zookeeper起來。所以,Zookeeper的安裝有下列幾種:數據庫
其實以前在公司項目裏就研究過Zookeeper的使用,並在team的wiki裏把zookeeper的安裝過程和在項目裏的使用信息在wiki中分享了,這裏把當時的安裝過程翻譯(公司wiki是英文寫的),分享一下,並介紹一下zookeeper的基礎命令。在下一章介紹中會作一個簡單的demo介紹下zookeeper的基礎API的使用,同時也會簡單說說咱們當時在項目中是如何使用zookeeper的。apache
centos7, Java 1.8(Zookeeper要求Java不低於1.6的版本)centos
而且Zookeeper必需要2GB的RAM和80GB硬盤空間。服務器
Zookeeper版本查看:Zookeeper Releases性能
咱們項目中使用的版本是:Release 3.4.11(stable) ; Archive網址:Zookeeper 3.4.11測試
cmd: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gzui
把下載的Zookeeper解壓成binary文件。centos7
cmd: tar -zxvf zookeeper-3.4.11.tar.gz翻譯
進入解壓後zookeeper的文件夾,而後進入conf文件夾。這時候會發現有一個zoo_sample.cfg文件。
複製zoo_sample.cfg並生成一個新的名爲zoo.cfg的文件。
編輯zoo.cfg。
進入Zookeeper目錄下的bin目錄,開始啓動zookeeper並查看Zookeeper的狀態。
啓動Zookeeper cmd: ./zkServer.sh start
查看Zookeeper狀態 cmd: ./zkServer.sh status
若是沒有啓動成功,能夠查看zookeeper根目錄下的zookeeper.out文件。
在zookeeper根目錄下的bin目錄下,有zkCli.sh文件,這就是Zookeeper的客戶端。可使用zookeeper的客戶端來鏈接服務器端。
cmd: ./zkCli.sh -server IP:PORT
IP:PORT不填寫爲默認鏈接本機Zookeeper。
使用quit能夠退出和服務期端的鏈接。
如今咱們在一臺機器上搭建好了zookeeper,這個過程也是很是簡單的。
而Zookeeper的集羣須要2*n+1個實例,因此要搭建一個最簡單的zookeeper的集羣,須要三個實例。那麼如今有兩種方案:
還記得以前的dataDir嗎?進入你設置的dataDir目錄,新建一個名爲myid的文件。文件如其名,myid裏含有一行文本,其含義也就是這個機器在Zookeeper集羣裏的id。這個id不能大於255。若是是在一臺機器上建立了多個zookeeper實例,和在多臺機器上安裝多個zookeeper是同樣,去到它們對應的dataDir文件夾,分別給每個建一個myid文件就能夠了,可是要保證裏面的id值不同。
而後分別編輯每個zookeeper的zoo.cfg文件,在他們的最後加上server.x=ip:port1:port2這樣格式的配置。這樣說有點不清楚,舉個例子配上圖片就清楚啦。
如今假設安裝的三個zookeeper在對應的myid裏設置的id值爲1,2,3,對於其中任意一個zookeeper的實例,它們的x值就是它們在myid裏設置的id值,而且ip也要和實例對應起來,兒後面的port1,port2不只要不同,同時也不能和以前的clientPort同樣,以前我配置的時候吧port1和clientPort配置成同樣的了致使一直失敗。必定要注意!!!
能夠看一下個人配置,記得在每個實例的zoo.cfg中都要配置哦!
看最下面紅框裏面的部分,馬賽克的部分就是對應的ip,千萬記得三個端口不能有重複!
在每一臺機器上重啓zookeeper服務(./zkserver restart),你可能會發現重啓的時候zookeeper會報鏈接不通的錯誤,彆着急,把全部的啓動完~
啓動完以後去看每一臺的狀態,這時候就會有下圖中的狀態:
這個是zookeeper集羣中的leader。
這是集羣中的follower。
zookeeper四字命令的官網介紹:四字命令
下面是每個操做的返回樣例: