下載下傳、安裝
使用3.4.14版本,下載下傳位址
因為Zookeeper為Java開發,需要JDK1.6以上的環境。
将下載下傳的tar包解壓到一個目錄下,比如
/opt/zookeeper-3.4.14/
,将該目錄作為
%ZK_HOME%
,目錄結構如下:
單機模式
單機模式隻是一種特殊的叢集模式(隻有一台機器的叢集)
在
%ZK_HOME%
下建立一個檔案夾
dataDir
,在dataDir中建立一個名為
myid
的檔案,内容隻有一個
"1"
,對應配置檔案中的
server.1
修改
%ZK_HOME%/conf
目錄下的zoo_sample.cfg檔案,重命名或複制一個為zoo.cfg,然後配置如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=../dataDir/
clientPort=2181
server.1=127.0.0.1:2888:3888
啟動:使用
%ZK_HOME%/bin
目錄下的zkServer.sh腳本進行啟動
zkServer.sh start
驗證伺服器是否正常:
zkServer.sh status
停止:
zkServer.sh stop
叢集模式
假設使用3台機器搭建一個Zookeeper叢集,它們的IP位址分别為IP1、IP2和IP3。
修改zoo.cfg:
tickTime=2000
dataDir=../dataDir/
clientPort=2181
initLimit=5
syncLimit=2
server.1=IP1:2888:3888 #每一行都代表一個機器的配置
server.3=IP2:2888:3888
server.3=IP3:2888:3888
- 在叢集模式下,叢集中的每台機器都需要感覺到整個叢集是由哪幾台機器組成的,在配置檔案中,可以按照這樣的格式進行配置,每一行都代表一個機器配置:
其中,id被稱為Server ID,用來辨別該機器在叢集中的機器序号。同時,在每台ZooKeeper機器上,我們都需要在資料目錄(即dataDir參數指定的那個目錄)下建立一個myid 檔案,該檔案隻有一行内容,并且是一個數字,即對應于每台機器的ServerID數字。server . id=host :port:port
- 在ZooKeeper的設計中,叢集中所有機器上zoo.cfg檔案的内容都應該是一緻的。是以最好使用SVN或是GIT把此檔案管理起來,確定每個機器都能共享到一份相同的配置。
- 上面也提到了,myid檔案中隻有一個數字,即一個Server ID。例如,
。注意,請確定每個伺服器的myid檔案中的數字不同,并且和自己所在機器的zoo.cfg中server . id=host:port:port的id值一緻。另外,server.1的myid檔案内容就是“1”
id的範圍是1~255。
建立myid檔案:
在dataDir所配置的目錄下,建立一個名為myid的檔案,在該檔案的第一行寫上一個數字,和zoo.cfg中目前機器的編号對應上。
然後按照相同步驟,為其他機器都配置zoo.cfg和myid檔案。
啟動檢測即可。
僞叢集模式
如果隻有一台機器,配置還可以的話,Zookeeper也支援使用一台機器搭建為叢集。
所謂的僞叢集,用一句話說就是,使用不同的配置檔案啟動多個執行個體,但是還是以叢集的特性來對外提供服務。
準備3個配置檔案,對應3個執行個體,注意,端口号和dataDir需要指定不同的,畢竟是為叢集。對應的dataDir中也需要建立myid檔案。
zoo1.cfg
tickTime=2000
dataDir=../dataDir/zoo1/
clientPort=2181
initLimit=5
syncLimit=2
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
zoo2.cfg
tickTime=2000
dataDir=../dataDir/zoo2/
clientPort=2182
initLimit=5
syncLimit=2
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
zoo3.cfg
tickTime=2000
dataDir=../dataDir/zoo3/
clientPort=2183
initLimit=5
syncLimit=2
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
啟動3個執行個體,通過:
zkServer.sh start 配置檔案
分别啟動
檢視各個執行個體的角色:
zkServer.sh status 配置檔案