zookeeper僞分佈式集羣環境搭建

step一、下載html

下載地址:http://zookeeper.apache.org/releases.htmljava

將下載的壓縮包放到用戶家目錄下(其餘目錄也能夠)apache

step二、解壓vim

 

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. $tar –zxvf zookeeper-3.4.6.tar.gz  

重命名api

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. $mv zookeeper-3.4.6 zookeeper  

step三、配置服務器

進入zookeeper/conf/目錄下,將改目錄下的zoo_sample.cfg配置文件拷貝4份,依次爲zoo.cfg  zoo1.cfg  zoo2.cfg  zoo3.cfsession

使用vim編輯zoo1.cfg  zoo2.cfg zoo3.cfg這三個配置文件dom

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. $ vim zoo1.cfg  

修改內容以下socket

配置說明oop

  • tickTime:這個時間是做爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。
  • initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶鏈接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中鏈接到 Leader 的 Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。當已經超過 10個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是 10*2000=20 秒
  • syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 5*2000=10秒
  • dataDir:顧名思義就是 Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
  • clientPort:這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
  • server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,須要一個端口來從新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通訊的端口。若是是僞集羣的配置方式,因爲 B 都是同樣,因此不一樣的 Zookeeper 實例通訊端口號不能同樣,因此要給它們分配不一樣的端口號。
使用vim修改zoo2.cfg的dataDir=/home/jianjian/zookeeper/server2/data,clientPort=2182,修改zoo3.cfg的dataDir=/home/jianjian/zookeeper/server3/data,clientPort=2183。dataDir目錄開始不存在,須要手動建立,並在各data文件下建立名爲myid的文件,文件內容對應服務器編號
[plain]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. [jianjian@localhost zookeeper]$ echo 1 > server1/data/myid  
  2. [jianjian@localhost zookeeper]$ echo 2 > server2/data/myid  
  3. [jianjian@localhost zookeeper]$ echo 3 > server3/data/myid  

step四、啓動

進入目錄/home/Hadoop/zookeeper/bin目錄,執行命令:

 

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. $zkServer.sh start zoo1.cfg  

啓動zoo1.cfg配置的服務,同理依次啓動zoo2.cfg和zoo3.cfg所配置的服務

 

step五、查看狀態

依次查看啓動的三臺服務,可見第二臺服務爲leader,第一臺和三臺爲follower(試驗好屢次都是第二臺是leader,只有一次是第三臺是leader,醉~)

附:

當zkServer.sh start和zkServer.sh status命令不接配置文件參數是,默認使用conf/zoo.cfg做爲參數

這是隻啓動一臺服務的狀況,可見Mode爲standalone,只有一臺服務的集羣...

step六、連通測試

測試server2(leader,其餘服務同理)是否連通

[plain]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. [root@localhost bin]# ./zkCli.sh -server 127.0.0.1:2182  
  2. Connecting to 127.0.0.1:2182  
  3. 2015-08-12 20:55:23,658 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT  
  4. 2015-08-12 20:55:23,661 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=localhost.localdomain  
  5. 2015-08-12 20:55:23,661 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.7.0_79  
  6. 2015-08-12 20:55:23,662 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation  
  7. 2015-08-12 20:55:23,662 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.7.0_79/jre  
  8. 2015-08-12 20:55:23,662 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/home/jianjian/zookeeper/bin/../build/classes:/home/jianjian/zookeeper/bin/../build/lib/*.jar:/home/jianjian/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/home/jianjian/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/home/jianjian/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/home/jianjian/zookeeper/bin/../lib/log4j-1.2.16.jar:/home/jianjian/zookeeper/bin/../lib/jline-0.9.94.jar:/home/jianjian/zookeeper/bin/../zookeeper-3.4.6.jar:/home/jianjian/zookeeper/bin/../src/java/lib/*.jar:/home/jianjian/zookeeper/bin/../conf:  
  9. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/i386:/lib:/usr/lib  
  10. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp  
  11. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>  
  12. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux  
  13. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=i386  
  14. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=2.6.18-194.el5  
  15. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root  
  16. 2015-08-12 20:55:23,663 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root  
  17. 2015-08-12 20:55:23,664 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/home/jianjian/zookeeper/bin  
  18. 2015-08-12 20:55:23,665 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2182 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@154ea79  
  19. 2015-08-12 20:55:23,699 [myid:] - INFO  [main-SendThread(127.0.0.1:2182):ClientCnxn$SendThread@975] - Opening socket connection to server 127.0.0.1/127.0.0.1:2182. Will not attempt to authenticate using SASL (unknown error)  
  20. 2015-08-12 20:55:23,703 [myid:] - INFO  [main-SendThread(127.0.0.1:2182):ClientCnxn$SendThread@852] - Socket connection established to 127.0.0.1/127.0.0.1:2182, initiating session  
  21. 2015-08-12 20:55:23,718 [myid:] - INFO  [main-SendThread(127.0.0.1:2182):ClientCnxn$SendThread@1235] - Session establishment complete on server 127.0.0.1/127.0.0.1:2182, sessionid = 0x24f21e1b05b0000, negotiated timeout = 30000  
  22. Welcome to ZooKeeper!  
  23.   
  24. WATCHER::  
  25.   
  26. WatchedEvent state:SyncConnected type:None path:null  
  27. JLine support is enabled  
  28. [zk: 127.0.0.1:2182(CONNECTED) 0]   

出現以上信息表示連通成功。

附:

看到有些人配置僞集羣是將壓縮包壓縮後拷貝幾個副本,每一個副本表明一個zookeeper服務,我的以爲不必,只有拷貝配置文件並修改就行,一個配置文件表明一個zookeeper服務。

相關文章
相關標籤/搜索