zookeeper安裝部署

zookeeper安裝部署

下載

wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz

解壓

tar xvf zookeeper-3.4.12.tar.gz

解壓完成后進(jìn)入zookeeper-3.4.12

目錄結(jié)構(gòu)如下:

├── bin

├── build.xml

├── conf

├── contrib

├── dist-maven

├── docs

├── ivysettings.xml

├── ivy.xml

├── lib

├── LICENSE.txt

├── NOTICE.txt

├── README.md

├── README_packaging.txt

├── recipes

├── src

├── zookeeper-3.4.12.jar

├── zookeeper-3.4.12.jar.asc

├── zookeeper-3.4.12.jar.md5

└── zookeeper-3.4.12.jar.sha1

其中:

  • bin

    • zk的可執(zhí)行腳本目錄,包括zk服務(wù)進(jìn)程总滩,zk客戶端氛魁,等腳本。其中,.sh是Linux環(huán)境下的腳本,.cmd是Windows環(huán)境下的腳本。
  • conf

    • 配置文件目錄滚朵。zoo_sample.cfg為樣例配置文件,需要修改為自己的名稱前域,一般為zoo.cfg。log4j.properties為日志配置文件韵吨。
  • lib

    • zk依賴的包匿垄。
  • contrib

    • 一些用于操作zk的工具包。
  • recipes

    • zk某些用法的代碼示例

單機(jī)模式部署

單機(jī)模式的部署較為簡(jiǎn)單,主要用于開(kāi)發(fā)環(huán)境下較為方便的開(kāi)發(fā)和測(cè)試椿疗,生產(chǎn)環(huán)境不可應(yīng)用單擊模式漏峰,無(wú)論穩(wěn)定性和IO效率單機(jī)模式都無(wú)法滿足生產(chǎn)需求。

單機(jī)模式配置

運(yùn)行單擊模式需要更改一下配置文件届榄,zk的本身提供了一個(gè)樣例配置文件,位于conf/zoo_sample.cfg,復(fù)制一份命名為zoo.cfg并根據(jù)需求修改 cp conf/zoo_sample.cfg zoo.cfg浅乔。

來(lái)看一下zoo.cfg的默認(rèn)配置

# 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=/depdata/zk/dataDir
# 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

其中:

  • tickTime

    • 心跳間隔時(shí)間,以毫秒為單位铝条【肝客戶端與ZK服務(wù)端每2000ms進(jìn)行一次心跳通信,如果ZK服務(wù)端超過(guò)4000ms沒(méi)有收到客戶端的心跳班缰,那么認(rèn)為客戶端會(huì)話超時(shí)
    • 更低的tickTime值可以更快的發(fā)現(xiàn)超時(shí)問(wèn)題贤壁,但是也會(huì)因?yàn)樾奶ㄐ鸥l繁而導(dǎo)致更高的網(wǎng)絡(luò)流量和更高的CPU使用
  • dataDir

    • ZK存儲(chǔ)內(nèi)存數(shù)據(jù)庫(kù)的位置,目錄位置可以自定義,更改為/depdata/zk/dataDir/
    • 注意提前創(chuàng)建/depdata/zk/dataDir/目錄埠忘,并保證讀寫(xiě)權(quán)限
  • clientPort

    • ZK服務(wù)進(jìn)程監(jiān)聽(tīng)的TCP端口,客戶端與ZK服務(wù)端連接時(shí)即使用這個(gè)端口號(hào)

單機(jī)模式啟動(dòng)

啟動(dòng)服務(wù)端

后臺(tái)啟動(dòng) /bin/zkServer.sh start

如果想要前臺(tái)啟動(dòng)并查看日志 bin/zkServer.sh start-foreground

可以觀察到日志輸出:

......

2018-06-24 18:01:21,076 [myid:] - INFO  [main:Environment@100] - Server environment:user.home=/root
2018-06-24 18:01:21,076 [myid:] - INFO  [main:Environment@100] - Server environment:user.dir=/storage/dep/zookeeper-3.4.12
2018-06-24 18:01:21,098 [myid:] - INFO  [main:ZooKeeperServer@835] - tickTime set to 2000
2018-06-24 18:01:21,098 [myid:] - INFO  [main:ZooKeeperServer@844] - minSessionTimeout set to -1
2018-06-24 18:01:21,098 [myid:] - INFO  [main:ZooKeeperServer@853] - maxSessionTimeout set to -1
2018-06-24 18:01:21,141 [myid:] - INFO  [main:ServerCnxnFactory@117] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory
2018-06-24 18:01:21,148 [myid:] - INFO  [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181


觀察日志可知ZK服務(wù)已經(jīng)啟動(dòng)并且綁定了我們?cè)谂渲梦募oo.cfg中指定的端口號(hào)2181

客戶端連接

在同一臺(tái)主機(jī)上可以啟動(dòng)ZK客戶端進(jìn)行連接 bin/zkCli.sh 默認(rèn)客戶端會(huì)連接本機(jī)127.0.0.1 端口號(hào)2181

如果客戶端和服務(wù)端位于不同的機(jī)器脾拆,可以使用-server 來(lái)指定ip和端口,比如bin/zkCli.sh -server 192.168.4.50:2181

客戶端連接成功之后,可以輸出幾個(gè)命令來(lái)測(cè)試客戶端連接,如ls /

輸出:[zookeeper]

創(chuàng)建一個(gè)節(jié)點(diǎn) create /zk_test my_data,再ls /得到輸出[zookeeper, zk_test],說(shuō)明zk_test節(jié)點(diǎn)創(chuàng)建好了

觀察我們?cè)谂渲梦募付ǖ膁ataDir(ZK存儲(chǔ)內(nèi)存數(shù)據(jù)庫(kù)的位置)ll /depdata/zk/dataDir/發(fā)現(xiàn)已經(jīng)有ZK創(chuàng)建的文件

關(guān)閉ZK服務(wù)bin/zkServer.sh stop

集群模式部署

雖然單機(jī)模式的zk便于開(kāi)發(fā)與測(cè)試莹妒,但并不適合在生產(chǎn)環(huán)境使用名船。在生產(chǎn)環(huán)境下,我們需要使用集群模式來(lái)對(duì)zk進(jìn)行部署旨怠。

注意

在集群模式下包帚,建議至少部署3個(gè)zk進(jìn)程,或者部署奇數(shù)個(gè)zk進(jìn)程运吓。如果只部署2個(gè)zk進(jìn)程渴邦,當(dāng)其中一個(gè)zk進(jìn)程掛掉后,剩下的一個(gè)進(jìn)程并不能構(gòu)成一個(gè)quorum的大多數(shù)拘哨。因此谋梭,部署2個(gè)進(jìn)程甚至比單機(jī)模式更不可靠,因?yàn)?個(gè)進(jìn)程其中一個(gè)不可用的可能性比一個(gè)進(jìn)程不可用的可能性還大倦青。

集群模式配置

在集群模式下瓮床,所有的zk服務(wù)可以使用相同的配置文件(是指各個(gè)zk服務(wù)部署在不同的機(jī)器上面),例如如下配置:

tickTime=2000
dataDir=/depdata/zk/dataDir/
clientPort=2181
initLimit=5
syncLimit=2
server.0=192.168.4.50:2888:3888
server.1=vc1:2888:3888
server.2=vc2:2888:3888

其中:

  • initLimit

    ZooKeeper集群模式下包含多個(gè)zk進(jìn)程产镐,其中一個(gè)進(jìn)程為leader隘庄,余下的進(jìn)程為follower。
    當(dāng)follower最初與leader建立連接時(shí)癣亚,它們之間會(huì)傳輸相當(dāng)多的數(shù)據(jù)丑掺,尤其是follower的數(shù)據(jù)落后leader很多。initLimit配置follower與leader之間建立連接后進(jìn)行同步的最長(zhǎng)時(shí)間述雾。

  • syncLimit

    配置follower和leader之間發(fā)送消息街州,請(qǐng)求和應(yīng)答的最大時(shí)間長(zhǎng)度兼丰。

  • tickTime

    tickTime則是上述兩個(gè)超時(shí)配置的基本單位,例如對(duì)于initLimit唆缴,其配置值為5鳍征,說(shuō)明其超時(shí)時(shí)間為 2000ms * 5 = 10秒。

  • server.id=host:port1:port2

    • 其中id為一個(gè)數(shù)字面徽,表示zk進(jìn)程的id艳丛,這個(gè)id也是dataDir目錄下myid文件的內(nèi)容。
    • 不同的機(jī)器下需要在dataDir下分別生成一個(gè)myid文件趟紊,文件的內(nèi)容就是主機(jī)對(duì)應(yīng)的id號(hào)氮双,比如機(jī)器vc0的/depdata/zk/dataDir/下需要有文件myid,內(nèi)容為0
    • host是該zk服務(wù)所在的IP地址
    • port1表示follower和leader交換消息所使用的端口织阳,port2表示選舉leader所使用的端口眶蕉。

將配置文件拷貝到3個(gè)不同的主機(jī)之后,在/depdata/zk/dataDir下創(chuàng)建文件myid,文件myid的內(nèi)容為0或1或2,取值對(duì)應(yīng)的是server.id的配置值

集群模式啟動(dòng)

分別在3臺(tái)主機(jī)上啟動(dòng)ZK服務(wù)bin/zkServer.sh start-foreground

查看ZK集群的服務(wù)狀態(tài)

分別查看ZK的服務(wù)狀態(tài)bin/zkServer.sh status

三臺(tái)主機(jī)分別返回:


[root@vc1 zookeeper-3.4.12]# bin/zkServer.sh status  
ZooKeeper JMX enabled by default
Using config: /root/dep/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader

[root@vc0 zookeeper-3.4.12]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/dep/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower


[root@vc2 zookeeper-3.4.12]# bin/zkServer.sh status  
ZooKeeper JMX enabled by default
Using config: /root/dep/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower

測(cè)試集群高可用性

停掉集群中的為leader的ZK服務(wù),在名稱為vc1的主機(jī)上執(zhí)行bin/zkServer.sh stop

連接集群

輸入:bin/zkCli.sh -server 192.168.4.50:2181,192.168.4.14:2181,192.168.4.18:2181

響應(yīng):

2018-06-24 21:16:02,305 [myid:] - INFO  [main:ZooKeeper@441] - Initiating client connection, connectString=192.168.4.50:2181,192.168.4.14:2181,192.168.4.18:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b85612c
Welcome to ZooKeeper!
2018-06-24 21:16:02,360 [myid:] - INFO  [main-SendThread(192.168.4.18:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server 192.168.4.18/192.168.4.18:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-06-24 21:16:02,422 [myid:] - INFO  [main-SendThread(192.168.4.18:2181):ClientCnxn$SendThread@878] - Socket connection established to 192.168.4.18/192.168.4.18:2181, initiating session
[zk: 192.168.4.50:2181,192.168.4.14:2181,192.168.4.18:2181(CONNECTING) 0] 2018-06-24 21:16:02,497 [myid:] - INFO  [main-SendThread(192.168.4.18:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server 192.168.4.18/192.168.4.18:2181, sessionid = 0x2000002cb0c0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

從日志輸出可以看到唧躲,客戶端連接的是192.168.4.18:2181進(jìn)程(連接上哪臺(tái)機(jī)器的zk進(jìn)程是隨機(jī)的)造挽,客戶端已成功連接上zk集群。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弄痹,一起剝皮案震驚了整個(gè)濱河市饭入,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肛真,老刑警劉巖谐丢,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚓让,居然都是意外死亡乾忱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門历极,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窄瘟,“玉大人,你說(shuō)我怎么就攤上這事趟卸√愦校” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵锄列,是天一觀的道長(zhǎng)图云。 經(jīng)常有香客問(wèn)我,道長(zhǎng)邻邮,這世上最難降的妖魔是什么竣况? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮饶囚,結(jié)果婚禮上帕翻,老公的妹妹穿的比我還像新娘鸠补。我一直安慰自己萝风,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著卸奉,像睡著了一般堤器。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歇万,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天揩晴,我揣著相機(jī)與錄音,去河邊找鬼贪磺。 笑死硫兰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寒锚。 我是一名探鬼主播劫映,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刹前!你這毒婦竟也來(lái)了泳赋?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喇喉,失蹤者是張志新(化名)和其女友劉穎祖今,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拣技,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡千诬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了膏斤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徐绑。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掸绞,靈堂內(nèi)的尸體忽然破棺而出泵三,到底是詐尸還是另有隱情,我是刑警寧澤衔掸,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布烫幕,位于F島的核電站,受9級(jí)特大地震影響敞映,放射性物質(zhì)發(fā)生泄漏较曼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一振愿、第九天 我趴在偏房一處隱蔽的房頂上張望捷犹。 院中可真熱鬧弛饭,春花似錦、人聲如沸萍歉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枪孩。三九已至憔晒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔑舞,已是汗流浹背拒担。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留攻询,地道東北人从撼。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钧栖,于是被迫代替她去往敵國(guó)和親低零。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • 1 Zookeeper概述# ZooKeeper是一個(gè)為分布式應(yīng)用所設(shè)計(jì)的分布的桐经、開(kāi)源的協(xié)調(diào)服務(wù)毁兆,它主要是用來(lái)解決...
    七寸知架構(gòu)閱讀 7,339評(píng)論 0 101
  • ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)阴挣,是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn)气堕,是...
    andycheng閱讀 324評(píng)論 0 1
  • 一、系統(tǒng)要求 ZooKeeper可以運(yùn)行在多種系統(tǒng)平臺(tái)上面畔咧,表1展示了zk支持的系統(tǒng)平臺(tái)茎芭,以及在該平臺(tái)上是否支持開(kāi)...
    Alukar閱讀 714評(píng)論 0 1
  • 一、Nginx/keepalived/lvs的介紹 1.nginx 1.1.nginx簡(jiǎn)介 Nginx是一個(gè)自由誓沸、...
    Java幫幫閱讀 1,294評(píng)論 0 5
  • 為什么學(xué)習(xí)好的永遠(yuǎn)都是別人家的孩子拜隧?人與人之間的差距真的就是思維層面上的差距宿百,也許就是因?yàn)橐粋€(gè)概念,兩個(gè)人表現(xiàn)出來(lái)...
    時(shí)間的玫瑰_閱讀 201評(píng)論 0 0