1. 程式人生 > >Zookeeper 叢集配置

Zookeeper 叢集配置

1.下載Zookeeper 2.解壓縮,進入zookeeper/conf 目錄下修改 zoo.cfg配置檔案 3.相關配置講解    tickTime=2000     #ZooKeeper伺服器心跳時間 ,單位為ms    initLimit=10         #投票選舉新Leader的初始化時間    syncLimit=5         #Leader與Follower心跳檢測最大容忍時間 響應不能超過syncLimit*tickTime 否則leader認為follwer死掉    clientPort=2181  #埠    dataDir=/tmp/ZooKeeper/data     #資料目錄    dataLogDir/tmp/ZooKeeper/log   #日誌記錄   #配置zookeeper的叢集    server.1=node1:2888:3888    server.2=node2:2888:3888    server.3=node3:2888:3888 4. 在zookeeper的工作目錄中建立myid     mkdir /opt/zookeeper
    cd /opt/zookeeper
   vi myid
   cat myid
   1    然後將這個檔案分別傳遞到node2 node3 修改myid的值為 2和3    scp -r zookeeper [email protected]:/opt/    然後傳遞zookeeper傳遞到node2  node3 5. 然後配置zk的環境變數    進入etc/profile    export JAVA_HOME=/usr/lib/jvm/java7    export JRE_HOME=${JAVA_HOME}/jre    export PATH=$JAVA_HOME/bin:$PATH    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    export PATH=$PATH:/home/zk/bin   #配置zk的環境變數    然後讓環境變數立即生效使用    source /etc/profile    然後同步這個檔案到 node2  node3 在分別使用source 生效 6. 然後這個時候就可以啟動zookeeper了 要在三個節點上分別啟動    [
[email protected]
 home]# zkServer.sh start
   JMX enabled by default
   Using config: /home/zk/bin/../conf/zoo.cfg
   Starting zookeeper ... STARTED
   [[email protected] home]# jps
   2848 Jps
   2827 QuorumPeerMain   # 這個就是zookeeper的java程序的名字 7.安裝驗證 通過這個命令來檢視Leader 或Follower
  1. zkServer.sh status  
zookeeper詳解 zookeeper叢集是一個獨立的分散式協調服務叢集,"獨立"的含義就是說,如果想使用zookeeper實現分散式應用的協調與管理,簡化協調與管理,任何分散式應用都可以使用,這就要歸功於zookeeper的資料模型(Data Model)和層次名稱空間(Hierarchical Namespace),在設計你的分散式應用協調服務時,首要的就是考慮如何組織層次名稱空間 主機名稱到ip地址對映配置 zookeeper叢集中具有兩個關鍵的角色:Leader和Follower,叢集中所有的結點作為一個整體對分散式應用提供服務,叢集中每個結點之間都相互連線,所以,在配置的zookeeper叢集的時候,每一個結點的host到ip地址的對映都要配置上叢集中其他結點的對映資訊 所以要修改/etc/hosts檔案,為各個結點配置上 192.168.12.128  node1 192.168.12.129  node2 192.168.12.130  node3 192.168.12.131  node4 zookeeper採用一種稱為Leader election 的選舉演算法,在整個叢集執行過程中,只有一個Leader,其他的都是Follower,如果zookeeper叢集在執行過程中Leader出了問題,系統會採用該演算法重新選出一個Leader,因此,各個結點之間要能夠保證互相連線,必須配置上述對映 設定myid
建立一個myid檔案,裡面內容為一個數字,用來標識當前主機 conf/zoo.cfg檔案中配置的server.X中X為什麼數字,則myid檔案中就輸入這個數字 檢視啟動日誌
  1. 2012-01-08 06:51:19,133 - INFO  [main:[email protected]] - Defaulting to majority quorums  
  2. 2012-01-08 06:51:19,167 - INFO  [main:[email protected]] - Starting quorum peer  
  3. 2012-01-08 06:51:19,227 - INFO  [main:[email protected]] - binding to port 0.0.0.0/0.0.0.0:2181  
  4. 2012-01-08 06:51:19,277 - INFO  [main:[email protected]] - tickTime set to 2000  
  5. 2012-01-08 06:51:19,278 - INFO  [main:[email protected]] - minSessionTimeout set to -1  
  6. 2012-01-08 06:51:19,279 - INFO  [main:[email protected]] - maxSessionTimeout set to -1  
  7. 2012-01-08 06:51:19,281 - INFO  [main:[email protected]] - initLimit set to 5  
  8. 2012-01-08 06:51:19,347 - INFO  [Thread-1:[email protected]] - My election bind port: 3888  
  9. 2012-01-08 06:51:19,393 - INFO  [QuorumPeer:/0:0:0:0:0:0:0:0:2181:[email protected]] - LOOKING  
  10. 2012-01-08 06:51:19,396 - INFO  [QuorumPeer:/0:0:0:0:0:0:0:0:2181:[email protected]] - New election. My id =  1, Proposed zxid = 0  
  11. 2012-01-08 06:51:19,400 - INFO  [WorkerReceiver Thread:[email protected]] - Notification: 1 (n.leader), 0 (n.zxid), 1 (n.round), LOOKING (n.state), 1 (n.sid), LOOKING (my state)  
  12. 2012-01-08 06:51:19,416 - WARN  [WorkerSender Thread:[email protected]] - Cannot open channel to 2 at election address slave-02/192.168.0.178:3888  
  13. java.net.ConnectException: Connection refused 
這個是正常的現象,由於zookeeper叢集啟動的時候,每個結點都試圖去連線叢集中的其他結點,先啟動的肯定連不上後面還沒啟動,所以上面日誌前面部分的異常是可以忽略的,通過後面部分可以看到,叢集在選出一個Leader後,最後穩定了