ZooKeeper初探之安裝和配置

1. ZooKeeper簡介

  Zookeeper是Hadoop下的一個子項目,它是一個針對大型分佈式系統的可靠的協調系統,提供的功能包括配置維護,名字服務,分佈式同步,組服務等,Zookeeper是能夠集羣複製的,集羣間經過Zab(Zookeeper Atomic Broadcast)協議來保存數據的一致性。該協議看起來是Paxos協議的某種變形,該協議包括兩個階段:leader election階段和Atomic broadcas階段。集羣中選舉出一個leader,其它的機器則稱爲follwer。當leader崩潰或者leader失去大多數的follower時,須要從新選舉出一個新的leader,讓全部的服務器恢復到一個正確的狀態,當leader被選舉出來,且大多數服務器完成了和leader的狀態同步後,leader election的過程就結束了,將進入Atomic broadcas的過程。html

  Zookeeper的核心其實相似一個精簡的文件系統,提供一些簡單的操做和一些附加的抽象(例如znode的排序與watch,而且集羣的部署方式使其具備較高的可靠性),Zookeeper的協做過程簡化了鬆散耦合系統之間的交互,即便參與者彼此不自動對方的存在,頁你呢掛鉤相互發現而且完成交互。java

2. ZooKeeper環境搭建

(1)安裝JDKnode

  因爲Zookeeper是基於Java開發的linux

  下載jre-7u79-linux-x64-rpm 下載地址apache

  安裝過程參考:https://blog.csdn.net/abselute/article/details/70039204?locationNum=8&fps=1vim

(2)下載zookeeper-3.4.5.tar.gz  下載地址centos

  整個安裝過程參考:http://www.javashuo.com/article/p-edhqealk-ba.html服務器

(3)建立配置文件及配置說明oracle

  我我的習慣將Zookeeper安裝在/usr/local目錄下ssh

  cd /usr/local/zookeeper-3.4.5/conf

  mv zoo_sample.cpg zoo_cfg

  vim zoo_cfg

tickTime=2000 #Zookeeper服務器心跳時間,單位爲ms
initLimit=10 #投票選舉新Leader的初始化時間
syncLimit=5 #leader與follower心跳檢測最大容忍時間,相應超過syncLimit*tickTime,leader認爲follwer死掉,從服務器列表中刪除
clientPor=2181
dataDir=/usr/local/zookeeper-3.4.5/data
dataLogDir=/usr/local/zookeeper-3.4.5/log

(4)配置myid

  echo 1 > data/myid

  cat data/myid

(5)啓動ZooKeeper

  cd /usr/local/zookeeper-3.4.5/bin

  ./zkServer.sh start

(6)總結配置過程當中的種種問題

  初次配置測試,遇到了不少問題,總結下須要特別注意的點:

A. 關閉防火牆(必定必定),否則會遇到沒法連接主機的系列問題

解決rhel7防禦牆關閉問題:
rhel7或centos7或Fedora中防火牆由firewalld來管理,能夠還原傳統的管理方式:
systemctl  stop firewalld
systemctl mask firewalld
yum install iptables-services
systemctl stop iptables
systemctl enable iptables
 

B. 設置數據目錄data時須要生成myid文件,並寫入id,該id對應zoo_cfg中的server.id,必須一一對應,server.id=ip:port:port仔細仔細再仔細

C. 注意查看zookeeper/bin目錄下的日誌文件zookeeper.out,會幫助咱們肯定問題所在

d. 實現ssh遠程控制,參考以前的博客:http://www.javashuo.com/article/p-ncbhyvhw-ct.html

e.配置腳本,同時啓動多臺服務器

f. 每臺服務器的系統時間必須同樣

3. 測試

(1)連接測試

(2)同步測試:建立節點和獲取節點值

服務器192.168.1.20同步測試

  更詳細測試請參考:https://blog.csdn.net/fenglongmiao/article/details/79269772

4. 參考博客

(1)http://www.cnblogs.com/wuxl360/p/5817471.html#3950934

(2)http://snowolf.iteye.com/blog/2156019

(3)http://www.javashuo.com/article/p-edhqealk-ba.html

(4)https://i.cnblogs.com/EditPosts.aspx?postid=9365296&update=1

相關文章
相關標籤/搜索