1. 程式人生 > >Zookeeper安裝學習(zoo.cfg配置詳解)

Zookeeper安裝學習(zoo.cfg配置詳解)

1.1安裝前準備

1.Java6 環境要求安裝
如果用Zookeeper在windows條件下執行,應該安裝Cygwin.
2.在hhtp://hadoop.apache.org/zookeeper/releases.html下載穩定釋放zookeeper並在合適的地方解壓

% tar xzf zookeeper-x.y.z.tar.gz


3.將如下放在在命令列路徑中會為後續工作帶來方便:
% export ZOOKEEPER_INSTALL=/home/tom/zookeeper-x.y.z
% export PATH=$PATH:$ZOOKEEPER_INSTALL/bin


4.在執行Zookeepr前,應先建立配置檔案,按慣例命名為zoo.cfg,並把它放在conf子目錄下,也可以把它放在/etc/zookeeper下。

tickTime=2000(是Zookeeper獨立的工作時間單元)
dataDir=/Users/tom/zookeeper(儲存資料的地址)
clientPort=2181(2181是經常的選擇,此處是關於使用者和Zookeeper相連的地方)

在完成上述的過程後,就可以進行Zookeeper的部署了。

1.2 獨立模式
1 配置conf/zoo.conf檔案
tickTime=2000
dataDir=/usr/zdatadir
dataLogDir=/usr/zlogdir
clientPort=2181
initLimit=5
syncLimit=2

tickTime
基本事件單元,以毫秒為單位。它用來控制心跳和超時,預設情況下最小的會話超時時間為兩倍的 tickTime。

dataDir是存放記憶體資料庫快照的位置;
dataLogDir 是事務日誌目錄;
clientPort是client連線的埠。
2 啟動server
執行命令
bin/zkServer.sh start
bin/zkCli.sh –server 127.0.0.1:2181


1.3 複製模式
Zookeeper執行在獨立模式下可以很方便的進行測試,評估,研發,但在實際應用中Zookeeper執行在所謂的複製模式下,我們把提供相同應用的伺服器組稱之為一個quorum,quorum中的所有機器都有相同的配置檔案,在這裡我們以五個機器組成的quorum為例,具體配置如下。
1. 配置conf/zoo.conf檔案
tickTime=2000
dataDir=/usr/zdatadir
dataLogDir=/usr/zlogdir
clientPort=2181
initLimit=5
syncLimit=2
server.1=cloud:2888:3888
server.2=cloud02:2888:3888
server.3=cloud03:2888:3888
server.4=cloud04:2888:3888
server.5=cloud05:2888:3888

其中server.X代表組成整個服務的機器,當服務啟動時,會在資料目錄下查詢這個檔案myid,這個檔案中存有伺服器的號碼。

initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裡所說的客戶端不是使用者連線 Zookeeper 伺服器的客戶端,而是 Zookeeper 伺服器叢集中連線到 Leader 的 Follower 伺服器初始化連線時最長能忍受多少個心跳時間間隔數。當已經超過5個心跳的時間(也就是 tickTime)長度後 Zookeeper伺服器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是 5*2000=10 秒
syncLimit:這個配置項標識 Leader 與 Follower 之間傳送訊息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒
server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號伺服器;B 是這個伺服器的 ip 地址;C 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的埠;D 表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。如果是偽叢集的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 例項通訊埠號不能一樣,所以要給它們分配不同的埠號。

除了修改 zoo.cfg 配置檔案,叢集模式下還要配置一個檔案 myid,這個檔案在 dataDir 目錄下,這個檔案裡面就有一個數據就是 A 的值,Zookeeper 啟動時會讀取這個檔案,拿到裡面的資料與 zoo.cfg 裡面的配置資訊比較從而判斷到底是那個 server。

2 myid配置
在dataDir所定義的目錄下新建myid檔案,本例中在/usr/zdatadir下新建myid檔案[/b][/color],填入各主機之ID。如cloud機器的myid檔案內容為1。

3 配置/etc/sysconfig/iptables檔案
在/etc/sysconfig/iptables中加入:
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 –j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 –j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 –j ACCEPT

執行命令:
      
service iptables stop
       service iptables start

4 啟動server
         執行命令
          
bin/zkServer.sh start
           bin/zkCli.sh –server 127.0.0.1:2181