Zookeeper的安裝模式分爲三種,分別爲:單機模式、集羣模式和集羣僞分佈模式。Zookeeper單機模式的安裝比較簡單,如果第一次接觸Zookeeper的話,建議安裝Zookeeper單機模式或者集羣僞分佈模式。
1. 單機模式
Zookeeper要求java環境才能運行,並且需要java6以上版本,並且需要配置環境變量。在Zookeeper入門指南已經描述的很清楚,這裏就不再進行描述。
使用單機模式時用戶需要注意:這種配置方式下沒有Zookeeper副本,所以如果Zookeeper服務器出現故障,Zookeeper服務將會停止。
2. 集羣模式
爲了獲得可靠的Zookeeper服務,用戶應該在一個集羣上部署Zookeeper。只要集羣上大多數的Zookeeper服務啓動了,那麼總的Zookeeper服務將是可用的。另外,最好使用奇數臺機器。如果Zookeeper擁有5臺機器,那麼它就能處理2臺機器的故障了。
之後的操作和單機模式的安裝類似,我們同樣需要對java環境進行配置。不同之處在於每臺機器上conf/zoo.cfg配置文件的參數設置,參考如下:
tickTime=2000
dataDir=/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
“server.id=host:port:port”的描述請查看Zookeeper入門指南,這裏只進行用例配置。在這個例子中,每臺機器使用三個端口,分別是:clientPort,2181;port,2888;port:3888。
我們在擁有三臺機器的集羣上測試使用Zookeeper服務,下面代碼清單是Zookeeper的相關配置:
tickTime=2000
initLimit=10
sysncLimit=5
clientPort=2181
server.1=ip1.2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
清單中的ip分別對應的配置是分佈式Zookeeper的ip地址。
3. 集羣僞分佈
簡單來說,集羣僞分佈模式就是在單擊下模擬集羣的Zookeeper服務。
那麼,如何對Zookeeper的集羣僞分佈模式呢?其實很簡單,在Zookeeper配置文檔中,clientPort參數用來配置客戶端連接Zookeeper的端口。Server1.1=ip1:2887:3887中,ip1指示的是組成Zookeeper服務的機器ip地址,2887是組成Zookeeper服務的機器之間通信的端口,3887爲用來進行leader選舉的端口。集羣僞分佈模式是我們使用每個配置文檔模擬一臺機器,也就是說,需要在單臺機器上運行多個Zookeeper實例。但是我們必須要保證各個配置文檔的clientPort不能衝突。
下面是我們所配置的集羣僞分佈模式,通過zoo1.cfg,zoo2.cfg,zoo3.cfg模擬了三臺機器的Zookeeper集羣。詳見以下代碼清單:
代碼清單1:zoo1.cfg;
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper1
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo2.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper2
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo3.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper3
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
從上述三個代碼清單中可以看到,除了clientPort不同之外,dataDir也不同。另外,不要忘記在dataDir所對應的目錄中創建myid文件來指定對應的Zookeeper服務實例。