這篇文章主要講解了“Zookeeper的配置與集群管理方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Zookeeper的配置與集群管理方法是什么”吧!
ZooKeeper安裝好之后,在安裝目錄的conf文件夾下可以找到一個名為“zoo_sample.cfg”的文件,是ZooKeeper配置文件的模板。
ZooKeeper啟動時,會默認(rèn)加載“conf/zoo.cfg”作為配置文件,所以需要將“zoo_sample.cfg”復(fù)制一份,命名為“zoo.cfg”,然后根據(jù)需要設(shè)定里面的配置項。
配置項很簡單,說明如下:
tickTime=2000
這個時間是作為 ZooKeeper服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發(fā)送一個心跳。單位為毫秒。
initLimit=10
這個配置項是用來配置 Leader接受Follower 初始化連接時最長能忍受多少個心跳時間間隔數(shù)。當(dāng)已經(jīng)超過 10 個心跳的時間(也就是 tickTime)長度后 Leader還沒有收到Follower的返回信息,那么表明這個Follower連接失敗??偟臅r間長度就是 5*2000=10 秒。
syncLimit=5
這個配置項標(biāo)識 Leader 與 Follower 之間發(fā)送消息,請求和應(yīng)答時間長度,最長不能超過多少個tickTime 的時間長度,總的時間長度就是5*2000=10 秒。
dataDir=/tmp/zookeeper
顧名思義就是 ZooKeeper保存數(shù)據(jù)的目錄,用于存放內(nèi)存數(shù)據(jù)庫快照的文件夾,同時用于集群的myid文件也存在這個文件夾里。默認(rèn)情況下,ZooKeeper 將寫數(shù)據(jù)的日志文件也保存在這個目錄里。注意:一個配置文件只能包含一個dataDir字樣,即使它被注釋掉了。
clientPort=2181
這個端口就是客戶端連接 ZooKeeper服務(wù)器的端口,ZooKeeper 會監(jiān)聽這個端口,接受客戶端的訪問請求。
maxClientCnxns=60
大的客戶端連接數(shù),默認(rèn)為60.
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
客戶端在與ZooKeeper交互過程中會產(chǎn)生非常多的日志,而且ZooKeeper也會將內(nèi)存中的數(shù)據(jù)作為snapshot保存下來,這些數(shù)據(jù)是不會被自動刪除的,這樣磁盤中這些數(shù)據(jù)就會越來越多。不過可以通過這兩個參數(shù)來設(shè)置,讓zookeeper自動刪除數(shù)據(jù)。autopurge.purgeInterval就是設(shè)置多少小時清理一次。而autopurge.snapRetainCount是設(shè)置保留多少個snapshot,之前的則刪除。
“zkServer.sh”腳本用于執(zhí)行Zookeeper的啟動、停止及狀態(tài)查看等操作
利用“zkServer.sh help”命令,可以查看支持的參數(shù):
可見,“zkServer.sh”可以附帶的參數(shù)有:
(1)start:用于啟動服務(wù)端
(2)stop:用于停止服務(wù)端
(3)restart:用于重啟服務(wù)端
(4)status:用于查看服務(wù)端狀態(tài)
以及用于前臺啟動、更新等操作的其他參數(shù)。
例如,使用命令“zkServer.sh start”啟動ZooKeeper服務(wù)端,該命令后面可以附帶參數(shù),用于指定配置文件的路徑,比如“zkServer.sh start ../conf/ZooKeeper.cfg”,代表使用ZooKeeper.cfg作為配置文件,如果不指定路徑,默認(rèn)加載“conf/zoo.cfg”文件:
使用“zkServer.sh stop”停止服務(wù)端:
使用命令“zkCli.sh -server 127.0.0.1:2181”可以連接到IP為“127.0.0.1”,端口為“2181”的ZooKeeper服務(wù)器。如果連接本機(jī)的2181端口,則后面的參數(shù)可以省略。如:
此時,輸入“help”可以查看命令參數(shù):
在前面已經(jīng)提到過,ZooKeeper維護(hù)者一個樹形的數(shù)據(jù)結(jié)構(gòu),根節(jié)點為“/”。
“ls path”用于查看路徑path下的所有直接子節(jié)點:
可見,系統(tǒng)初始化的時候,根節(jié)點下會自動創(chuàng)建一個名為“zookeeper”的節(jié)點,用于存儲ZooKeeper的管理信息。所以用戶不能再根節(jié)點下創(chuàng)建同名的子節(jié)點。
“create path data”用于在path路徑下創(chuàng)建一個新節(jié)點,攜帶數(shù)據(jù)data。
例如,在根節(jié)點下新建一個名為“firstNode”節(jié)點,存儲的數(shù)據(jù)為“HelloWorld”:
./zkClient.sh -server 127.0.01
create /firstNode HelloWorld
“get path”用于獲取path節(jié)點下的數(shù)據(jù),例如:
get /firstNode
除了返回節(jié)點存儲的數(shù)據(jù)之外,還有一系列的元信息,如代表節(jié)點創(chuàng)建時間的“cZxid”、“ctime”(兩種表示方法);節(jié)點的修改時間“mZxid”、“mtime”等。
“set path data ”用于將path節(jié)點下的數(shù)據(jù)更改為data。
如,將“/firstNode”下的數(shù)據(jù)更改為“WorldHello”:
set /firstNode WorldHello
“delete path”用于刪除path節(jié)點。
如,刪除“/firstNode”節(jié)點:
delete /firstNode
此外,還有用于設(shè)置節(jié)點ACL、查看節(jié)點狀態(tài)等其他命令,需要時可以查閱相關(guān)手冊。
ZooKeeper 支持某些特定的四字命令字母與其的交互。它們大多是查詢命令,用來獲取 ZooKeeper 服務(wù)的當(dāng)前狀態(tài)及相關(guān)信息。用戶在客戶端可以通過 telnet 或 nc 向 ZooKeeper 提交相應(yīng)的命令。
如:
ZooKeeper四字命令
conf
功能描述
輸出相關(guān)服務(wù)配置的詳細(xì)信息
cons
列出所有連接到服務(wù)器的客戶端的完全的連接 / 會話的詳細(xì)信息。包括“接受 / 發(fā)送”的包數(shù)量、會話 id 、操作延遲、最后的操作執(zhí)行等等信息
dump
列出未經(jīng)處理的會話和臨時節(jié)點
envi
輸出關(guān)于服務(wù)環(huán)境的詳細(xì)信息(區(qū)別于 conf 命令)
reqs
列出未經(jīng)處理的請求
ruok
測試服務(wù)是否處于正確狀態(tài)。如果確實如此,那么服務(wù)返回“ imok ”,否則不做任何相應(yīng)
stat
輸出關(guān)于性能和連接的客戶端的列表
wchs
列出服務(wù)器 watch 的詳細(xì)信息
wchc
通過 session 列出服務(wù)器 watch 的詳細(xì)信息,它的輸出是一個與 watch 相關(guān)的會話的列表
wchp
通過路徑列出服務(wù)器 watch 的詳細(xì)信息。它輸出一個與 session 相關(guān)的路徑
例如,查看配置信息:
“echo conf | nc 127.0.0.1 2181”:
nc為“NetCat”工具提供的命令,通常的Linux發(fā)行版中都帶有NetCat。NetCat在網(wǎng)絡(luò)工具中有“瑞士刀”美譽(yù),被設(shè)計為一個簡單、可靠的網(wǎng)絡(luò)工具,可通過TCP或UDP協(xié)議傳輸讀寫數(shù)據(jù)。
該命令的意思為,將“conf”命令傳遞給127.0.0.1的2181端口(即本機(jī)的ZooKeeper服務(wù)端口),并將響應(yīng)打印出來:
在一臺機(jī)器上運(yùn)營一個ZooKeeper實例,稱之為單機(jī)(Standalone)模式。單機(jī)模式有個致命的缺陷,一旦唯一的實例掛了,依賴ZooKeeper的應(yīng)用全得完蛋。
實際應(yīng)用當(dāng)中,一般都是采用集群模式來部署ZooKeeper,集群中的Server為奇數(shù)(2N+1)。只要集群中的多數(shù)(大于N+1臺)Server活著,集群就能對外提供服務(wù)。
在每臺機(jī)器上部署一個ZooKeeper實例,多臺機(jī)器組成集群,稱之為完全分布式集群。此外,還可以在僅有的一臺機(jī)器上部署多個ZooKeeper實例,以偽集群模式運(yùn)行。
下面我們來建一個3個實例的zookeeper偽分布式集群。
首先,需要為三個實例創(chuàng)建不同的配置文件:
zk1.cfg的配置項如下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zk1/dataDir clientPort=2181 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890
zk2.cfg的配置項如下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zk2/dataDir clientPort=2182 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890
zk3.cfg的配置項如下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/zk3/dataDir clientPort=2183 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890
因為部署在同一臺機(jī)器上,所以每個實例的dataDir、clientPort要做區(qū)分,其余配置保持一致。
需要注意的是,集群中所有的實例作為一個整體對外提供服務(wù),集群中每個實例之間都互相連接,所以,每個配置文件中都要列出所有實例的映射關(guān)系。
在每個配置文件的末尾,有幾行“server.A=B:C:D”這樣的配置,其中, A 是一個數(shù)字,表示這個是第幾號服務(wù)器;B 是這個服務(wù)器的 ip 地址;C 表示的是這個服務(wù)器與集群中的 Leader 服務(wù)器交換信息的端口;D 表示的是萬一集群中的 Leader 服務(wù)器掛了,需要一個端口來重新進(jìn)行選舉,選出一個新的 Leader,而這個端口就是用來執(zhí)行選舉時服務(wù)器相互通信的端口。如果是偽集群的配置方式,由于 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。
除了修改 zoo.cfg 配置文件,集群模式下還要配置一個myid文件,這個文件在 dataDir 目錄下,文件里只有一個數(shù)據(jù),就是 A 的值(第幾號服務(wù)器),Zookeeper 啟動時會讀取這個文件,拿到里面的數(shù)據(jù)與配置信息比較從而判斷到底是那個 Server。
上例中,需要在每個實例各自的dataDir目錄下,新建myid文件,分別填寫“1”、“2”、“3”。
依次啟動三個實例:
查看Server狀態(tài):
可見,現(xiàn)在的集群中,zk2充當(dāng)著Leader角色,而zk1與zk3充當(dāng)著Follower角色。
使用三個客戶端連接三個Server,在zk1的客戶端下,新增“/newNode”節(jié)點,儲存數(shù)據(jù)“zk1”:
在zk2的客戶端與查看該節(jié)點:
在zk3的客戶端與查看該節(jié)點:
可見,集群中的Server保持著數(shù)據(jù)同步。
如果我們把身為Leader的zk2關(guān)閉,會發(fā)生什么呢?
可見,集群自動完成了切換,zk3變成了Leader。實際應(yīng)用中,如果集群中的Leader宕機(jī)了,或者Leader與超過半數(shù)的Follower失去聯(lián)系,都會觸發(fā)ZooKeeper的選舉流程,選舉出新的Leader之后繼續(xù)對外服務(wù)。
如果我們再把zk3關(guān)閉,會發(fā)生什么呢?
可見,關(guān)閉zk3以后,由于集群中的可用Server只剩下一臺(達(dá)不到集群總數(shù)的半數(shù)以上),集群將處于不可用的狀態(tài)。
感謝各位的閱讀,以上就是“Zookeeper的配置與集群管理方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Zookeeper的配置與集群管理方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
網(wǎng)站標(biāo)題:Zookeeper的配置與集群管理方法是什么-創(chuàng)新互聯(lián)
URL鏈接:http://www.rwnh.cn/article30/dggspo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化、微信小程序、網(wǎng)站導(dǎo)航、網(wǎng)站營銷、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容