ZooKeeper集群搭建過程
提綱
1、ZooKeeper簡介
2、ZooKeeper的下載和安裝
3、部署3個節點的ZK偽分布式集群
3.1、解壓ZooKeeper安裝包
3.2、為每個節點建立data目錄、logs目錄和myid文件
3.3、為每個節點創建配置文件
3.4、啟動zk集群
3.5、客戶端接入集群
4、真正分布式集群需要注意的地方
5、配置文件中的配置項的含義
6、參考資料
1、ZooKeeper簡介
===================
ZooKeeper是一個開源的分布式框架,提供了協調分布式應用的基本服務。它向外部應用暴露一組通用服務——分布式同步(Distributed Synchronization)、命名服務(Naming Service)、集群維護(Group Maintenance)等,簡化分布式應用協調及其管理的難度。
它是Google的Chubby一個開源的實現。它本身可以搭建成一個集群,這個zk集群用來對應用程序集群進行管理,監視應用程序集群中各個節點的狀態,並根據應用程序集群中各個節點提交的反饋信息決定下一步的合理操作。
關於ZooKeeper的使用方法和原理,后續再另外介紹,現在先記錄搭建和初步運行的過程。
2、ZooKeeper的下載和安裝
========================
ZooKeeper的下載很簡單,安裝就是解壓一下,也很簡單。
3、部署3個節點的ZK偽分布式集群
=============================
在同一台服務器上,部署一個3個ZooKeeper節點組成的集群,這樣的集群叫偽分布式集群,而如果集群中的3個節點分別部署在3個服務器上,那么這種集群就叫真正的分布式集群。
這里,記錄一下搭建一個3節點的偽分布式集群的過程,真正的分布式集群的搭建過程和偽分布式的過程類似,稍有不同,我會在下面指出來的。
首先,建立一個集群安裝的目錄,就叫zk34(zk34是指使用ZooKeeper3.4版本),建立的集群就叫它zk34吧。
其次,在這個目錄的下面解壓三份ZooKeeper,形成3個節點,每一個目錄中的ZooKeeper就代表一個節點。
這樣就形成了如下的安裝目錄結構:
/home/zzl/DataTool/zk34
|----zookeeper0/
|----zookeeper1/
|----zookeeper2/
3.1 解壓ZooKeeper安裝包
-------------------------------------------
首先在要安裝集群的目錄中解壓zk。
[zzl@localhost zk34]$ tar -xzf path/to/zookeeper-3.4.6.tar.gz -C .
[zzl@localhost zk34]$ ls
zookeeper-3.4.6
之后把解壓的zk復制出三份來,分別命名為zookeeper0,zookeeper1,zookeeper2,這三個目錄中的zk就當成是集群中的3個節點。
[zzl@localhost zk34]$ cp zookeeper-3.4.6 zookeeper0
[zzl@localhost zk34]$ cp zookeeper-3.4.6 zookeeper1
[zzl@localhost zk34]$ cp zookeeper-3.4.6 zookeeper2
這樣集群中的目錄結構就是下面這樣的:
/home/zzl/DataTool/zk34
|----zookeeper0/
|----zookeeper1/
|----zookeeper2/
3.2 為每個節點建立data目錄、logs目錄和myid文件
-------------------------------------------------------------------------
在3個節點目錄中分別建立data目錄、logs目錄和myid文件。
下面是zookeeper0上的:
新建目錄data:/home/zzl/DataTool/zk34/zookeeper0/data
新建目錄logs:/home/zzl/DataTool/zk34/zookeeper0/logs
新建文件myid:/home/zzl/DataTool/zk34/zookeeper0/data/myid
myid文件的內容是節點在集群中的編號,zookeeper0節點的編號就寫成0,后邊的zookeeper1的編號是1,zookeeper2的編號就是2。
按照同樣的方法,依次在zookeeper1和zookeeper2上都建立以上目錄和文件。
3.3 為每個節點創建配置文件
-----------------------------------------
新建zookeeper0的配置文件zoo.cfg:/home/zzl/DataTool/zk34/zookeeper0/conf/zoo.cfg
配置文件zoo.cfg的內容如下:
tickTime=2000 initLimit=5 syncLimit=2 dataDir=/home/michael/opt/zookeeper/server0/zookeeper/data dataLogDir=/home/michael/opt/zookeeper/server0/zookeeper/logs clientPort=4180 server.0=127.0.0.1:8880:7770 server.1=127.0.0.1:8881:7771 server.2=127.0.0.1:8882:7772
配置文件中的配置項的含義參見下面的介紹。
用同樣的方法,在zookeeper1和zookeeper2的相應位置創建zoo.cfg,文件內容復制zookeeper0的zoo.cfg。只不過需要改動clientport、dataDir、dataLogDir三個配置項,zookeeper1的clientport改為4181,zookeeper2的clientport改為4182,而dataDir和dataLogDir都修改為相應的目錄,就好了。
經過以上的配置,zk34集群中的3個節點就全部配置好了。
3.4 啟動zk集群
-----------------------------
進入zk34集群的第一個節點zookeeper0的bin目錄下,啟動服務:
[zzl@localhost zk34]$ [zzl@localhost zk34]$ cd zookeeper0/ [zzl@localhost zookeeper0]$ bin/zkServer.sh start
然后,按照同樣的方法,依次啟動zookeeper1和zookeeper2的服務。
這樣zk34集群的3個節點都啟動起來了。
3.5 客戶端接入集群
------------------------------
進入zk34集群中任意一個節點的bin目錄下,啟動一個客戶端,接入已經啟動好的zk34集群。這里的server可以填寫集群中的任何一個節點的ip,端口號是對應ip的節點的配置文件中clientport的值。
./zkCli.sh –server 127.0.0.1:4180
下面的截圖是我成功之后的3個節點和客戶端的圖:
以上就是zk集群的搭建過程。
4、真正分布式集群需要注意的地方
==============================
真正的分布式集群和偽分布式集群不一樣的地方在於配置文件。
1、clientport端口各個節點一樣就行。
2、server.0=127.0.0.1:8880:7770中的ip要修改成對應的server的ip,后邊的兩個端口號不需要不同,各個節點都一樣就可以了。
其他地方偽分布式和真正分布式都是一樣的。
5、ZooKeeper配置文件中的配置項的含義
=================================
配置文件中配置項的含義:
- tickTime: zookeeper中使用的基本時間單位,毫秒值,比如可以設為1000,那么基本時間單位就是1000ms,也就是1s。
- initLimit: zookeeper集群中的包含多台server,其中一台為leader,集群中其余的server為follower,initLimit參數配置初始化連接時,follower和leader之間的最長心跳時間。如果該參數設置為5,就說明時間限制為5倍tickTime,即5*1000=5000ms=5s。
- syncLimit: 該參數配置leader和follower之間發送消息,請求和應答的最大時間長度。如果該參數設置為2,說明時間限制為2倍tickTime,即2000ms。
- dataDir: 數據目錄. 可以是任意目錄,一般是節點安裝目錄下data目錄。
- dataLogDir: log目錄, 同樣可以是任意目錄,一般是節點安裝目錄下的logs目錄。如果沒有設置該參數,將使用和dataDir相同的設置。
- clientPort: 監聽client連接的端口號。
- server.X=A:B:C 其中X是一個數字, 表示這是第幾號server,它的值和myid文件中的值對應。A是該server所在的IP地址。B是配置該server和集群中的leader交換消息所使用的端口。C配置選舉leader時所使用的端口。由於配置的是偽集群模式,所以各個server的B, C參數必須不同,如果是真正分布式集群,那么B和C在各個節點上可以相同,因為即使相同由於節點處於不同的服務器也不會導致端口沖突。
6 參考資料
============
http://blog.csdn.net/poechant/article/details/6633923