摘要: 講述單台linux伺服器中搭建zookeeper集群的步驟,以及配置檔案中引數的說明。
偽分布式集群:在一台server中,啟動多個zookeeper的例項。
cd /usr
rz -by
tar xf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo1.cfg
cp zoo_sample.cfg zoo2.cfg
cp zoo_sample.cfg zoo3.cfg
例項1的配置:
例項2的配置:vi zoo1.cfg
ticktime=2000
initlimit=10
synclimit=5
datadir=/tmp/zookeeper/d_1
clientport=2181
datalogdir=/usr/zookeeper-3.4.6/logs_1
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
例項3的配置:vi zoo2.cfg
ticktime=2000
initlimit=10
synclimit=5
datadir=/tmp/zookeeper/d_2
clientport=2182
datalogdir=/usr/zookeeper-3.4.6/logs_2
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
vi zoo3.cfg
ticktime=2000
initlimit=10
synclimit=5
datadir=/tmp/zookeeper/d_3
clientport=2183
datalogdir=/usr/zookeeper-3.4.6/logs_3
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
mkdir /tmp/zookeeper/d_1
mkdir /tmp/zookeeper/d_2
mkdir /tmp/zookeeper/d_3
mkdir /usr/zookeeper-3.4
.6/logs_1
mkdir /usr/zookeeper-3.4
.6/logs_2
mkdir /usr/zookeeper-3.4
.6/logs_3
echo "1" > /tmp/zookeeper/d_1/myid
echo "2" > /tmp/zookeeper/d_2/myid
echo "3" > /tmp/zookeeper/d_3/myid
/usr/zookeeper-3.4
.6/bin/zkserver.sh start zoo1.cfg
/usr/zookeeper-3.4
.6/bin/zkserver.sh start zoo2.cfg
/usr/zookeeper-3.4
.6/bin/zkserver.sh start zoo3.cfg
jps
#看到類似下面的程序就表示3個例項均啟動成功
13419 quorumpeermain
13460 quorumpeermain
13561 jps
13392 quorumpeermain
#如果未成功啟動,可以到zookeeper.out檔案中檢視啟動失敗的日誌資訊。
至此,乙個zk的偽分布式集群搭建完畢。[root@localhost ~]# /usr/zookeeper-3.4.6
/bin/zkserver.sh status zoo1.cfg
jmx enabled by default
using config: /usr/zookeeper-3.4.6
/bin/../conf/zoo1.cfg
mode: follower
[root@localhost ~]# /usr/zookeeper-3.4.6
/bin/zkserver.sh status zoo2.cfg
jmx enabled by default
using config: /usr/zookeeper-3.4.6
/bin/../conf/zoo2.cfg
mode: leader
[root@localhost ~]# /usr/zookeeper-3.4.6
/bin/zkserver.sh status zoo3.cfg
jmx enabled by default
using config: /usr/zookeeper-3.4.6
/bin/../conf/zoo3.cfg
mode: follower
#發現例項2為leader,例項1和例項3均為follower
需要引入zookeeper-3.4.6.jar和slf4j-api-1.61.jar這兩個jar包。
package com.cjw.demo;
import org.apache.zookeeper.createmode;
import org.apache.zookeeper.watchedevent;
import org.apache.zookeeper.watcher;
import org.apache.zookeeper.zookeeper;
import org.apache.zookeeper.zoodefs.ids;
public class zookeeperclient
};zookeeper zk = new zookeeper("192.168.157.22:2181", 3000, watcher);
system.out.println("====建立節點");
zk.create("/cjw", "znode1".getbytes(), ids.open_acl_unsafe, createmode.persistent);
system.out.println("====檢視節點是否安裝成功");
system.out.println(new string(zk.getdata("/cjw", false, null)));
system.out.println("====修改節點的資料");
zk.setdata("/cjw", "cjw2015".getbytes(), -1);
system.out.println("====檢視修改的節點是否成功");
system.out.println(new string(zk.getdata("/cjw", false, null)));
system.out.println("====刪除節點");
zk.delete("/cjw", -1);
system.out.println("====檢視節點是否被刪除");
system.out.println("節點狀態:" + zk.exists("/cjw", false));
zk.close();
}}
執行結果:
====建立節點
watchedevent state:syncconnected type:none path:null
====檢視節點是否安裝成功
znode1
====修改節點的資料
====檢視修改的節點是否成功
cjw2015
====刪除節點
====檢視節點是否被刪除
節點狀態:null
initlimit: follower連線並同步到leader的初始化連線時間,它是通過ticktime的倍數表示。當初始化連線
時間超過設定的時間時,則連線失敗。
synclimit: follower和leader之間傳送訊息時請求和應答的時間長度,如果follower在設定的時間範圍內
不能和leader通訊,那麼該follower將被丟棄,它也是按ticktime的倍數進行配置的。
ticktime: 定義心跳的時間間隔,
注:zk的client和server之間也有和web開發類似的session的概念,而zk裡最小的session過期時間
就是ticktime的兩倍
datadir: 儲存在記憶體中資料庫快照功能。
clientport: 監聽客戶端連線的埠號
datalogdir: zk執行的相關日誌寫入目錄,設定了配置,那麼datalog裡日誌的目錄將無效,專門的日誌存放
路徑,對zk的效能和穩定性有好處。
單機搭建zookeeper偽分布式集群
最近在研究hbase的時候,說要依賴zookeeper集群,於是又花時間來研究了下zookeeper集群的搭建,希望能幫到一些童鞋.首先將zookeeper解壓之後,建立了個zookeepercluser的資料夾將解壓的zookeeper複製三份到zookeepercluser下 現在以zookee...
zookeeper偽分布式
wget解壓 tar zxvf zookeeper 3.4.5 cdh5.9.3.tar.gz c opt 進入 opt 目錄修改檔名 mv zookeeper 3.4.5 cdh5.9.3 zookeeper01進入 opt zookeeper01 conf目錄設定配置檔案 cp zoo samp...
簡單搭建zookeeper集群分布式 偽分布式
二 環境準備 2 我準備了三颱虛擬機器,分別為192.168.48.101 192.168.48.102 和 192.168.48.103 3 上傳zookeeper包到101機器。並在zookeeper目錄進行解壓 三 簡單配置 在conf目錄下,通過zoo sample.cfg複製了乙個zoo....