[TOC]
概述
關(guān)鍵字
- 分布式
- open source
- 協(xié)調(diào)服務(wù)(For 分布式應(yīng)用程序)
- 配置維護(hù)
- 域名維護(hù)
- 分布式同步
- 組服務(wù)
起源
- Google的Chubby的開源實(shí)現(xiàn)
- Hadoop和Hbase的重要組件
- 算法基礎(chǔ)是Fast Paxos的改進(jìn)版
目標(biāo)
- 封裝好復(fù)雜易出錯(cuò)的關(guān)鍵服務(wù)
- 提供簡(jiǎn)單晃危、高效盯仪、穩(wěn)定的系統(tǒng)
接口
- 包含簡(jiǎn)單的原語(yǔ)集(原語(yǔ):不可分割的機(jī)器指令集)
- 提供Java和C的接口
運(yùn)轉(zhuǎn)流程
- 選舉Leader
- 同步數(shù)據(jù)
分治
狀態(tài)機(jī)郭厌,參考Link
實(shí)戰(zhàn)
部署偽集群
- 從zookeeper官網(wǎng)下載最新stable版本
- 解壓并復(fù)制三份:
drwxr-xr-x 11 work work 4.0K May 20 19:37 zookeeper00
drwxr-xr-x 11 work work 4.0K May 20 19:49 zookeeper01
drwxr-xr-x 11 work work 4.0K May 20 19:49 zookeeper02
-rw-r--r-- 1 work work 34M May 20 19:29 zookeeper-3.4.10.tar.gz
- 分別添加配置和mypid如下:
-- zoo1
? tools cat zookeeper00/conf/zoo.cfg
tickTime=2000
dataDir=log
clientPort=8181
initLimit=5
syncLimit=2
server.1=127.0.0.1:8182:8183
server.2=127.0.0.1:8282:8283
server.3=127.0.0.1:8382:8383
? tools cat zookeeper00/log/myid
1
-- zoo2
? tools cat zookeeper00/conf/zoo.cfg
tickTime=2000
dataDir=log
clientPort=8281
initLimit=5
syncLimit=2
server.1=127.0.0.1:8182:8183
server.2=127.0.0.1:8282:8283
server.3=127.0.0.1:8382:8383
? tools cat zookeeper01/log/myid
2
-- zoo3
? tools cat zookeeper02/conf/zoo.cfg
tickTime=2000
dataDir=log
clientPort=8381
initLimit=5
syncLimit=2
server.1=127.0.0.1:8182:8183
server.2=127.0.0.1:8282:8283
server.3=127.0.0.1:8382:8383
? tools cat zookeeper02/log/myid
3
- 分別啟動(dòng)三個(gè)zookeeper
$ cd zookeeper00
$ bin/zkServer.sh start
$ cd ../zookeeper01
$ bin/zkServer.sh start
$ cd ../zookeeper02
$ bin/zkServer.sh start
-
檢查進(jìn)程
檢查是否啟動(dòng)成功
$ bin/zkCli.sh -server 127.0.0.1:8181
...
Welcome to ZooKeeper!
...
[zk: 127.0.0.1:8181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
connect host:port
get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close
ls2 path [watch]
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path
[zk: 127.0.0.1:8181(CONNECTED) 1] ls /
[zookeeper]
Python應(yīng)用注冊(cè)到此集群
- 編譯并安裝c版本的zookeeper client
$ cd zookeeper-3.4.10/src/c
# 這里指定安裝目錄熏兄,以便在非root權(quán)限下安裝
$ ./configure --prefix=/home/work/local
$ make -j8
$ make install
# 需要修改環(huán)境變量以便能使用編譯的zookeeper client
$ cat ~/.bashrc
export PATH="$HOME/local/bin:$PATH"
export LD_RUN_PATH="$HOME/local/lib:$LD_RUN_PATH"
export LD_LIBRARY_PATH="$HOME/local/lib:$LD_LIBRARY_PATH"
export LIBRARY_PATH="$HOME/local/lib:$LD_LIBRARY_PATH"
export C_INCLUDE_PATH="$HOME/local/include/zookeeper:$C_INCLUDE_PATH"
$ source ~/.bashrc
- 安裝zookeeper python庫(kù)參考鏈接
$ easy_install zkpython
# 或者
$ pip install zkpython