ZooKeeper 的安裝 以及配置說明

Zookeeper的安裝和配置十分簡單, 既能夠配置成單機模式, 也能夠配置成集羣模式. 下面將分別進行介紹.git

單機模式

下載zookeeper的安裝包以後(http://mirror.bit.edu.cn/apache/zookeeper/), 解壓到合適目錄. 進入zookeeper目錄下的conf子目錄, 建立zoo.cfg:github

Bash代碼  apache

  1. tickTime=2000    併發

  2. dataDir=/Users/apple/zookeeper/data    app

  3. dataLogDir=/Users/apple/zookeeper/logs    spa

  4. clientPort=4180   orm

參數說明:server

  • tickTime: 基本事件單元,以毫秒爲單位,用來控制心跳和超時,默認狀況超時的時間爲兩倍的tickTimeblog

  • dataDir: 數據目錄. 能夠是任意目錄.進程

  • dataLogDir: log目錄, 一樣能夠是任意目錄. 若是沒有設置該參數, 將使用和dataDir相同的設置.

  • clientPort: 監聽client鏈接的端口號.

其餘配置項:

    

    maxClientCnxns    限制鏈接到zookeeper的客戶端數量,而且限制併發鏈接數量,它經過ip區分不一樣的客戶端。

    minSessionTimeout和maxSessionTimeout

                                 最小會話超時時間和最大的會話超時時間,在默認狀況下,最小的超時時間爲2倍的tickTime時間,最大的會話超時時間爲20倍的會話超時時間,系統啓動時會顯示相應的信息。默認爲-1

    initLimit

                                參數設定了容許全部跟隨者與領導者進行鏈接並同步的時間,若是在設定的時間段內,半數以上的跟隨者未能完成同步,領導者便會宣佈放棄領導地位,進行另外一次的領導選舉。若是zk集羣環境數量確實很大,同步數據的時間會變長,所以這種狀況下能夠適當調大該參數。默認爲10

syncLimit

                                參數設定了容許一個跟隨者與一個領導者進行同步的時間,若是在設定的時間段內,跟隨者未完成同步,它將會被集羣丟棄。全部關聯到這個跟隨者的客戶端將鏈接到另一個跟隨着。


至此, zookeeper的單機模式已經配置好了. 啓動server只需運行腳本:

Bash代碼  

  1. bin/zkServer.sh start  

 Server啓動以後, 就能夠啓動client鏈接server了, 執行腳本:

Bash代碼  

  1. bin/zkCli.sh -server localhost:4180  

 

僞集羣模式

所謂僞集羣, 是指在單臺機器中啓動多個zookeeper進程, 並組成一個集羣. 以啓動3個zookeeper進程爲例.

將zookeeper的目錄拷貝2份:

Bash代碼  

  1. |--zookeeper0  

  2. |--zookeeper1  

  3. |--zookeeper2  

 更改zookeeper0/conf/zoo.cfg文件爲:

Bash代碼  

  1. tickTime=2000    

  2. initLimit=5    

  3. syncLimit=2    

  4. dataDir=/Users/apple/zookeeper0/data    

  5. dataLogDir=/Users/apple/zookeeper0/logs    

  6. clientPort=4180  

  7. server.0=127.0.0.1:8880:7770    

  8. server.1=127.0.0.1:8881:7771    

  9. server.2=127.0.0.1:8882:7772  

新增了幾個參數, 其含義以下:

  • initLimit: zookeeper集羣中的包含多臺server, 其中一臺爲leader, 集羣中其他的server爲follower. initLimit參數配置初始化鏈接時, follower和leader之間的最長心跳時間. 此時該參數設置爲5, 說明時間限制爲5倍tickTime, 即5*2000=10000ms=10s.

  • syncLimit: 該參數配置leader和follower之間發送消息, 請求和應答的最大時間長度. 此時該參數設置爲2, 說明時間限制爲2倍tickTime, 即4000ms.

  • server.X=A:B:C 其中X是一個數字, 表示這是第幾號server. A是該server所在的IP地址. B配置該server和集羣中的leader交換消息所使用的端口. C配置選舉leader時所使用的端口. 因爲配置的是僞集羣模式, 因此各個server的B, C參數必須不一樣.

參照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 只需更改dataDir, dataLogDir, clientPort參數便可.

在以前設置的dataDir中新建myid文件, 寫入一個數字, 該數字表示這是第幾號server. 該數字必須和zoo.cfg文件中的server.X中的X一一對應.
/Users/apple/zookeeper0/data/myid文件中寫入0, /Users/apple/zookeeper1/data/myid文件中寫入1, /Users/apple/zookeeper2/data/myid文件中寫入2.

分別進入/Users/apple/zookeeper0/bin, /Users/apple/zookeeper1/bin, /Users/apple/zookeeper2/bin三個目錄, 啓動server.
任意選擇一個server目錄, 啓動客戶端:

Bash代碼  

  1. bin/zkCli.sh -server localhost:4180  

 

集羣模式

集羣模式的配置和僞集羣基本一致.
因爲集羣模式下, 各server部署在不一樣的機器上, 所以各server的conf/zoo.cfg文件能夠徹底同樣.
下面是一個示例:

Bash代碼  

  1. tickTime=2000    

  2. initLimit=5    

  3. syncLimit=2    

  4. dataDir=/home/zookeeper/data    

  5. dataLogDir=/home/zookeeper/logs    

  6. clientPort=4180  

  7. server.43=10.1.39.43:2888:3888  

  8. server.47=10.1.39.47:2888:3888    

  9. server.48=10.1.39.48:2888:3888  

示例中部署了3臺zookeeper server, 分別部署在10.1.39.43, 10.1.39.47, 10.1.39.48上. 須要注意的是, 各server的dataDir目錄下的myid文件中的數字必須不一樣.

10.1.39.43 server的myid爲43, 10.1.39.47 server的myid爲47, 10.1.39.48 server的myid爲48.

相關文章
相關標籤/搜索