在zoo.cfg中只配置一個server.id就是單機模式了。linux
這種模式下,若是當前主機宕機,那麼全部依賴於當前zookeeper服務工做的其餘服務器都不能在進行正常工做,這種事件稱爲單節點故障。因此這種模式通常用在測試環境。apache
在zoo.cfg中配置多個server.id,其中ip都是當前機器,而端口各不相同,啓動時就是僞集羣模式了。vim
這種模式和單機模式產生的問題是同樣的。這種模式也是用在測試環境中。bash
多臺機器各自配置zoo.cfg文件,將各自互相加入服務器列表,上面搭建的集羣就是這種徹底分佈式。服務器
這種模式是真實生產環境中使用的zookeeper集羣模式。分佈式
搭建zookeeper集羣須要最少三臺機器,須要安裝jdk做爲基礎支持。這次使用的Zookeeper3.4.7版本。oop
準備三臺虛擬機,將ip和端口規劃好。這裏最好將主機名,以及主機名和ip的映射關係配置好,配置此項關係能夠參看Hadoop徹底分佈式集羣搭建。測試
在虛擬機中安裝jdk,而且配置jdk的環境變量。spa
下載zookeeper的安裝包,下載地址:http://zookeeper.apache.org/.net
上傳到linux集羣環境下,規劃本身的管理目錄,解壓安裝包。
tar -zxvf zookeeper-3.4.7.tar.gz
進入conf目錄,複製zoo-sample.cfg重命名爲zoo.cfg,經過修改zoo.cfg來對zookeeper進行配置。這個名字固定寫死,由於zookeeper啓動會檢查這個文件,根據這個配置文件裏的信息來啓動服務。
cp zoo-sample.cfg zoo.cfg vim zoo.cfg
此文件中須要修改如下兩處:
dataDir:指定zookeeper將數據保存在哪一個目錄下,若是不修改,默認在/tmp下,這個目錄下的數據有可能會在磁盤空間不足或服務器重啓時自動被linux清理,因此必定要修改這個地址。按我的習慣將其修改成本身的管理目錄。
徹底分佈式:多臺機器各自配置。
server.1=xxx.xxx.xxx.xxx:2888:3888 server.2=xxx.xxx.xxx.xxx:2888:3888 server.3=xxx.xxx.xxx.xxx:2888:3888
在配置文件末尾加上這三行,ip填寫本身規劃的ip便可,zookeeper服務默認的端口號爲2888和3888,也可將/etc/hosts文件添加主機和ip映射,將此處的ip寫成主機名稱。
說明:2888原子廣播端口,3888選舉端口,zookeeper有幾個節點,就配置幾個server。
以下文件,這裏我使用的是主機名。 建議填寫主機名。
到以前配置的zookeeper數據文件所在的目錄下生成一個文件叫myid,其中寫上一個數字代表當前機器是哪個編號的機器。
vim myid 1
注意:文件名稱必須是myid,文件內容只須要一個數字即服務器列表中當前服務器的編號。
將以上Zookeeper文件夾遠程拷貝到另外兩臺服務器中:
scp -r zookeeper-3.4.7 root@yun02 scp -r zookeeper-3.4.7 root@yun03
而後修改另外兩臺服務器中的myid文件中的id便可。
#yun02 vim myid 2 #yun03 vim myid 3
啓動zookeeper的各類命令操做以下,可使用絕對路徑操做這些命令,也可以使用相對路徑操做這些命令,相對路徑須要進到zookeeper服務的bin目錄進行操做。
#啓動ZK服務: bin/zkServer.sh start #中止ZK服務: bin/zkServer.sh stop #重啓ZK服務: bin/zkServer.sh restart #查看ZK服務狀態: bin/zkServer.sh status
Zookeeper集羣須要每臺挨個啓動。
能夠是用jps命令查看線程。
啓動集羣的時候,集羣數量啓動沒有超過一半,狀態會有錯誤提示,當集羣啓動數量超過一半就會自動轉爲正常狀態,而且此臺使集羣進入正常工做狀態的服務器會成爲leader角色,集羣中其餘服務器的角色爲fllower。
Zookeeper集羣模式搭建到此完成。
下一篇:Zookeeper原理介紹