簡(jiǎn)介
ZooKeeper是一個(gè)分布式的蜀漆,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)涩馆,是Google的Chubby一個(gè)開源的實(shí)現(xiàn)又官,是Hadoop和Hbase的重要組件左驾。ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯(cuò)的關(guān)鍵服務(wù)镣隶,將簡(jiǎn)單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶诡右。
- ZooKeeper的基本運(yùn)轉(zhuǎn)流程:
- 選舉Leader安岂,選舉機(jī)制大于1/2。
- 同步數(shù)據(jù)帆吻。
- 選舉Leader過(guò)程中算法有很多域那,但要達(dá)到的選舉標(biāo)準(zhǔn)是一致的。
- Leader要具有最高的執(zhí)行ID,類似root權(quán)限次员。
- 集群中大多數(shù)的機(jī)器得到響應(yīng)并Follow選出的Leader败许。
- Leader工作流程:
- 恢復(fù)數(shù)據(jù);
- 維持與Learner的心跳淑蔚,接收Learner請(qǐng)求并判斷Learner的請(qǐng)求消息類型市殷;
- Learner的消息類型主要有PING消息、REQUEST消息刹衫、ACK消息醋寝、REVALIDATE消息,根據(jù)不同的消息類型带迟,進(jìn)行不同的處理音羞。PING消息是指Learner的心跳信息;REQUEST消息是Follower發(fā)送的提議信息仓犬,包括寫請(qǐng)求及同步請(qǐng)求嗅绰;ACK消息是Follower的對(duì)提議的回復(fù),超過(guò)半數(shù)的Follower通過(guò)婶肩,則commit該提議办陷;REVALIDATE消息是用來(lái)延長(zhǎng)SESSION有效時(shí)間。
-
Follower工作流程:
- Follower主要有四個(gè)功能
- 向Leader發(fā)送請(qǐng)求(PING消息律歼、REQUEST消息、ACK消息啡专、REVALIDATE消息)
- 接收Leader消息并進(jìn)行處理险毁;
- 接收Client的請(qǐng)求,如果為寫請(qǐng)求们童,發(fā)送給Leader進(jìn)行投票畔况;
- 返回Client結(jié)果。
- Follower的消息循環(huán)處理如下幾種來(lái)自Leader的消息
- PING消息:心跳消息
- PROPOSAL消息:Leader發(fā)起的提案慧库,要求Follower投票
- COMMIT消息:服務(wù)器端最新一次提案的信息
- UPTODATE消息:表明同步完成
- REVALIDATE消息:根據(jù)Leader的REVALIDATE結(jié)果跷跪,關(guān)閉待revalidate的session還是允許其接受消息
- SYNC消息:返回SYNC結(jié)果到客戶端,這個(gè)消息最初由客戶端發(fā)起齐板,用來(lái)強(qiáng)制得到最新的更新吵瞻。
更多內(nèi)容:http://www.cnblogs.com/felixzh/p/5869212.html
安裝配置
- 環(huán)境信息
IP | HOST_NAME |
---|---|
192.168.10.10 | Ser-Zookeeper01 |
192.168.10.11 | Ser-Zookeeper02 |
192.168.10.12 | Ser-Zookeeper03 |
- JDK安裝
cd /home/worker/soft/
wget http://10.12.3.24/soft/jdk/jdk1.8.0_65.tar.gz
mkdir -p /home/worker/usr/local/
tar xf jdk1.8.0_65.tar.gz -C /home/worker/usr/local/
ln -s /home/worker/usr/local/jdk1.8.0_65 /home/worker/usr/local/jdk
vim ~/.bash_profile
#########JDK ENV#########
export JAVA_HOME=/home/worker/usr/local/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
生效環(huán)境變量
source ~/.bash_profile
- 安裝zookeeper,配置單點(diǎn)
wget http://10.12.3.24/upload/zhaobin/zookeeper/zookeeper-3.4.6.tar.gz
tar xf zookeeper-3.4.6.tar.gz -C ~/opt/
cd ~/opt/zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
#修改配置文件
vim zoo.cfg
dataDir=/home/worker/opt/zookeeper_data/
#創(chuàng)建數(shù)據(jù)目錄
mkdir -p /home/worker/opt/zookeeper_data/
- 關(guān)閉甘磨、啟動(dòng)橡羞、重啟服務(wù)等
/home/worker/opt/zookeeper-3.4.6/bin/zkServer.sh --help
JMX enabled by default
Using config: /home/worker/opt/zookeeper-3.4.6/bin/../conf/zoo.cfg
Usage: /home/worker/opt/zookeeper-3.4.6/bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
集群配置
- 在集群的每臺(tái)服務(wù)器host中添加以下配置
vim /etc/hosts
192.168.10.10 Ser-Zookeeper01
192.168.10.11 Ser-Zookeeper02
192.168.10.12 Ser-Zookeeper03
- 修改配置文件,配置集群
vim zoo.cfg
server.1=Ser-Zookeeper01:2888:3888
server.2=Ser-Zookeeper02:2888:3888
server.3=Ser-Zookeeper03:2888:3888
[worker@Ser-Zookeeper01 conf]$ echo '1' >> /home/worker/opt/zookeeper_data/myid
[worker@Ser-Zookeeper02 conf]$ echo '2' >> /home/worker/opt/zookeeper_data/myid
[worker@Ser-Zookeeper03 conf]$ echo '3' >> /home/worker/opt/zookeeper_data/myid
- 重啟zookeeper服務(wù)
~/opt/zookeeper-3.4.6/bin/zkServer.sh restart