zookeeper介紹與安裝(單機與偽分布式)

一、分布式文件系統(tǒng)概述

1雳窟、分布式文件系統(tǒng):硬件尊浪、軟件分布在不同計算機上,通過消息傳遞進行通信封救。
2际长、分布式文件系統(tǒng)存在的典型問題:通信異常、網(wǎng)絡分區(qū)(分布式環(huán)境下兴泥,由于網(wǎng)絡通訊故障工育,一些節(jié)點認為應用不可用,一些節(jié)點認為應用可用搓彻,整個系統(tǒng)提供服務時如绸,造成不一致性)、三態(tài)(成功旭贬、失敗怔接、超時)、節(jié)點故障
3稀轨、任何分布式系統(tǒng)都必須遵循CAP特性扼脐,滿足其中的兩個,P:分區(qū)容錯性,CP:一致性瓦侮,AP:可用性艰赞。

二、zookeeper介紹

1肚吏、zookeeper的功能

zookeeper是一個分布式數(shù)據(jù)一致性的解決方案方妖,可以基于它實現(xiàn)數(shù)據(jù)的發(fā)布及訂閱、負載均衡罚攀、名稱服務党觅、分布式協(xié)調及通知、集群管理斋泄、master選舉杯瞻、分布式鎖和分布式隊列。

2炫掐、zookeeper的結構

zookeeper是一個集群魁莉,其中包括leader、follower卒废、observer(觀察者)
leader:選舉產(chǎn)生沛厨,具備讀寫權限
follower:參與選舉,可被選舉摔认,具備讀權限
observer:參與選舉逆皮,不可被選舉,具備讀權限

3参袱、會話

zookeeper中电谣,客戶端與服務端是通過一個TCP長連接進行通信。

(面)4抹蚀、數(shù)據(jù)節(jié)點

zookeeper數(shù)據(jù)存儲于內(nèi)存中剿牺,數(shù)據(jù)模型為樹狀結構,每個znode都會將數(shù)據(jù)存儲在自己的內(nèi)存中环壤,znode包括持久節(jié)點(僅顯示刪除才消失)晒来、臨時節(jié)點(會話終止即消失)、持久化順序節(jié)點(客戶端與 zookeeper 斷開連接后郑现,該節(jié)點依舊存在湃崩,只是 Zookeeper 給該節(jié)點名稱進行順序編號)、臨時順序節(jié)點(客戶端與 zookeeper 斷開連接后接箫,該節(jié)點被刪除攒读,只是 Zookeeper 給該節(jié)點名稱進行順序編號)

5、版本

zookeeper為每個znode維護一個stat的數(shù)據(jù)結構,記錄當前znode的三個版本,分別為version(當前版本)、cversion(當前znode子節(jié)點版本)倚搬、aversion(當前znode的ACL版本)

6邓梅、ACL

zookeeper使用ACL進行權限控制

7脱盲、事件監(jiān)聽器

zookeeper上,由用戶指定的觸發(fā)機制震放,在某些事件產(chǎn)生時宾毒,zookeeper能將通知給相關客戶端驼修。

8殿遂、ZAB協(xié)議

ZAB協(xié)議為zookeeper的原子廣播協(xié)議,為了選舉新的leader乙各,并保證數(shù)據(jù)的完整性和一致性墨礁。ZAB協(xié)議中存在三種狀態(tài),looking耳峦、following恩静、leading,在leader故障或者集群剛啟動時蹲坷,所有的節(jié)點都處于looking狀態(tài)驶乾,等到選出leader后,改為following狀態(tài)循签。

9级乐、安裝

zookeeper的部署安裝可以分為三種類型,單機模式县匠、偽分布式(一個機器风科,啟動多個zookeeper實例)、分布式模式(集群模式)

10乞旦、zookeeper命令的使用

(1)delete和rmr
持久節(jié)點只能使用delete和rmr刪除贼穆,文件路徑下沒有子路徑使用delete刪除,存在子路徑兰粉,使用rmr
(2)stat(查詢節(jié)點信息)
cZxid:事務id故痊,創(chuàng)建該事務的節(jié)點,
mZxid:最近更新該節(jié)點的事務id

11玖姑、watcher

client 端會對某個 znode 建立一個 watcher 事件愕秫,當該 znode 發(fā)生變化時,這些client 會收到 zk 的通知客峭,然后 client 可以根據(jù) znode 變化來做出業(yè)務上的改變等豫领。

12、監(jiān)控zookeeper的四字命令

ruok舔琅、stat等恐、srvr、conf、cons课蔬、wchs囱稽、envi

[root@centos7 bin]# telnet 192.168.43.101 2181
Trying 192.168.43.101...
Connected to 192.168.43.101.
Escape character is '^]'.
ruok
imokConnection closed by foreign host.
[root@centos7 bin]# telnet 192.168.43.101 2181
Trying 192.168.43.101...
Connected to 192.168.43.101.
Escape character is '^]'.
stat
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
 /192.168.43.101:50102[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/1/10
Received: 14
Sent: 13
Connections: 1
Outstanding: 0
Zxid: 0x2
Mode: standalone
Node count: 4
Connection closed by foreign host.

13、zoo.cfg配置文件的參數(shù)

#基本配置參數(shù)
clientPort=2181
dataDir=/data/zookeeper
dataLogDir  #事務日志文件路徑
tickTime=2000

#存儲配置
preAllocsize  #為事務日志預先分配的磁盤空間二跋,默認65536kb
snapCount  #每多少次事務執(zhí)行一次快照战惊,每次事務平均大小在100字節(jié)
autopurge.snapRetainCount  #要保留在 dataDir 中的快照數(shù)
autopurge.purgeInterval  #purge操作的時間間隔,0表示不啟動
fsync.warningresholdms  #zookeeper進行事務日志fsync操作時消耗的時間報警閾值
weight.x=N  #判斷quornum時的投票權限扎即,默認1

#網(wǎng)絡配置
maxClientCnxns  #每客戶端IP的最大并發(fā)連接數(shù)
clientPortAddress  #zookeeper監(jiān)聽IP地址
minSessionTimeout  #默認為ticktime的兩倍
maxSessionTimeout

#集群配置
initLimit  #follower連入leader并完成數(shù)據(jù)同步的時長吞获,一般為ticktime的倍數(shù)
syncLimit  #心跳檢測的最大延遲
leaderServer  #默認zk的leader接收讀寫請求
cnxTimeout  #leader選舉期間,各服務器創(chuàng)建TCP鏈接的超時時長
ellectionAlg  #選舉算法谚鄙,僅支持FastLeaderElection一種
server.id=[hostname]:port:port[:observer]

三各拷、zookeeper的部署安裝

1、獲取zookeeper的源碼文件

https://archive.apache.org/dist/zookeeper/

2闷营、配置jdk

如果系統(tǒng)存在jdk烤黍,可以直接使用,如果沒有傻盟,安裝好jdk速蕊,可選擇較新版的jdk文件,openjdk也可以娘赴。

3规哲、解壓壓縮文件到系統(tǒng)中

cd /usr/local/src 
tar -xvf zookeeper-3.4.6.tar.gz

4、修改配置文件

cp /usr/local/src/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/local/src/zookeeper-3.4.6/conf/zoo.cfg
mkdir /data/zookeeper

vim zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
#dataDir=/tmp/zookeeper
dataDir=/data/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

5筝闹、啟動服務

cd /usr/local/src/zookeeper-3.4.6/bin
./zkServer.sh start

./zkCli.sh (鏈接客戶端)

6媳叨、偽分布式部署

(1)配置文件的修改
在一臺機器上部署了3個Server,需要注意的是在集群為分布式模式下我們使用的每個配置文檔模擬一臺機器关顷,也就是說單臺機器及上運行多個ZooKeeper實例糊秆。但是,必須保證每個配置文檔的各個端口號不能沖突议双,除了clientPort不同之外痘番,dataDir也不同。另外平痰,還要在dataDir所對應的目錄中創(chuàng)建myid文件來指定對應的ZooKeeper服務器實例汞舱。

clientPort端口:如果在1臺機器上部署多個Server,那么每臺機器都要不同的clientPort宗雇,比如Server1是2181昂芜,Server2是2182,Server3是2183
dataDir和dataLogDir:dataDir和dataLogDir也需要區(qū)分下赔蒲,將數(shù)據(jù)文件和日志文件分開存放泌神,同時每個Server的這兩變量所對應的路徑都是不同的
server.X和myid: server.X這個數(shù)字就是對應良漱,data/myid中的數(shù)字。在3個Server的myid文件中分別寫入了0欢际,1母市,2,那么每個Server中的zoo.cfg都配server.0损趋,server.2患久,server.3就行了。因為在同一臺機器上浑槽,后面連著的2個端口蒋失,3個Server都不要一樣,否則端口沖突括荡。

# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
dataDir=/usr/local/zk/data_1

# the port at which the clients will connect
clientPort=2181

#the location of the log file
dataLogDir=/usr/local/zk/logs_1

server.0=localhost:2287:3387
server.1=localhost:2288:3388
server.2=localhost:2289:3389

(2)寫入myid文件

echo "0">/usr/local/data_1/myid
echo "1">/usr/local/data_2/myid
echo "2">/usr/local/data_3/myid

(3)服務啟動

zkServer.sh start zoo1.cfg
zkServer.sh start zoo2.cfg
zkServer.sh start zoo3.cfg
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末高镐,一起剝皮案震驚了整個濱河市溉旋,隨后出現(xiàn)的幾起案子畸冲,更是在濱河造成了極大的恐慌,老刑警劉巖观腊,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邑闲,死亡現(xiàn)場離奇詭異,居然都是意外死亡梧油,警方通過查閱死者的電腦和手機苫耸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來儡陨,“玉大人褪子,你說我怎么就攤上這事∑澹” “怎么了嫌褪?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胚股。 經(jīng)常有香客問我笼痛,道長,這世上最難降的妖魔是什么琅拌? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任缨伊,我火速辦了婚禮,結果婚禮上进宝,老公的妹妹穿的比我還像新娘刻坊。我一直安慰自己,他們只是感情好党晋,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布谭胚。 她就那樣靜靜地躺著活尊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漏益。 梳的紋絲不亂的頭發(fā)上蛹锰,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音绰疤,去河邊找鬼铜犬。 笑死,一個胖子當著我的面吹牛轻庆,可吹牛的內(nèi)容都是我干的癣猾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼余爆,長吁一口氣:“原來是場噩夢啊……” “哼纷宇!你這毒婦竟也來了?” 一聲冷哼從身側響起蛾方,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤像捶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后桩砰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拓春,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年亚隅,在試婚紗的時候發(fā)現(xiàn)自己被綠了硼莽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡煮纵,死狀恐怖懂鸵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情行疏,我是刑警寧澤匆光,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站隘擎,受9級特大地震影響殴穴,放射性物質發(fā)生泄漏。R本人自食惡果不足惜货葬,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一采幌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧震桶,春花似錦休傍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽人柿。三九已至,卻和暖如春忙厌,著一層夾襖步出監(jiān)牢的瞬間凫岖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工逢净, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哥放,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓爹土,卻偏偏與公主長得像甥雕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胀茵,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容