溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

zookeeper集群模式的配置方法

發(fā)布時(shí)間:2021-08-02 21:07:42 來源:億速云 閱讀:161 作者:chen 欄目:云計(jì)算

這篇文章主要講解了“zookeeper集群模式的配置方法”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“zookeeper集群模式的配置方法”吧!

集群模式的配置 
為了確保ZooKeeper服務(wù)的穩(wěn)定與可靠性,通常是搭建成一個(gè)ZK集群來對(duì)外提供服務(wù)。關(guān)于ZooKeeper,需要明確一個(gè)很重要的特性:集群中只要有過半的機(jī)器是正常工作的,那么整個(gè)集群對(duì)外就是可用的(本文下面就用―過半存活即可用‖來代替這個(gè)特性吧^-^)。正是基于這個(gè)特性,建議是將ZK集群的機(jī)器數(shù)量控制為奇數(shù)較為合適。為什么選擇奇數(shù)臺(tái)機(jī)器,我們可以來看一下,假如是4臺(tái)機(jī)器構(gòu)成的ZK集群,那么只能夠允許集群中有一個(gè)機(jī)器down掉,因?yàn)槿绻鹍own掉2臺(tái),那么只剩下2臺(tái)機(jī)器,顯然沒有過半。而如果是5臺(tái)機(jī)器的集群,那么就能夠?qū)?臺(tái)機(jī)器down掉的情況進(jìn)行容災(zāi)了。 
你可以按照以下步驟來配置一個(gè)ZK機(jī)器,更多詳細(xì)步驟請(qǐng)查看《ZooKeeper快速搭建》: 1. 安裝JDK。相關(guān)鏈接:http://java.sun.com/javase/downloads/index.jsp 
2. 設(shè)置Java heap 大小。避免內(nèi)存與磁盤空間的交換,能夠大大提升ZK的性能,設(shè)置合理的heap大小則能有效避免此類空間交換的觸發(fā)。在正式發(fā)布上線之前,建議是針對(duì)使用場(chǎng)景進(jìn)行一些壓力測(cè)試,確保正常運(yùn)行后內(nèi)存的使用不會(huì)觸發(fā)此類交換。通常在一個(gè)物理內(nèi)存為4G的機(jī)器上,最多設(shè)置-Xmx為3G。 
3. 下載安裝ZooKeeper,相關(guān)鏈接:http://zookeeper.apache.org/releases.html 
4. 配置文件zoo.cfg。初次使用zookeeper,按照如下這個(gè)簡(jiǎn)單配置即可: 
1. tickTime=2000  
2. dataDir=/var/lib/zookeeper/  
3. clientPort=2181  
4. initLimit=5  
5. syncLimit=2 server.1=zoo1:2888:3888  6. server.2=zoo2:2888:3888  7. server.3=zoo3:2888:3888  
本文后續(xù)章節(jié)會(huì)對(duì)這些參數(shù)進(jìn)行詳細(xì)的介紹,這里只是簡(jiǎn)單說幾點(diǎn): 
   A. 集群中的每臺(tái)機(jī)器都需要感知整個(gè)集群是由哪幾臺(tái)機(jī)器組成的,在配置文件中,可以按照這樣的格式,每行寫一個(gè)機(jī)器配置:server.id=host:port:port. 關(guān)于這個(gè)id,我們稱之為Server ID,標(biāo)識(shí)host機(jī)器在集群中的機(jī)器序號(hào),在每個(gè)ZK機(jī)器上,我們需要在數(shù)據(jù)目錄(數(shù)據(jù)目錄就是dataDir參數(shù)指定的那個(gè)目錄)下創(chuàng)建一個(gè)myid文件,myid中就是這個(gè)Server ID數(shù)字。 
   B. 在ZooKeeper的設(shè)計(jì)中,集群中任意一臺(tái)機(jī)器上的zoo.cfg文件的內(nèi)容都是一致的。因此最好是用SVN把這個(gè)文件管理起來,保證每個(gè)機(jī)器都能共享到一份相同的配置。 
5. 關(guān)于myid文件。myid文件中只有一個(gè)數(shù)字,即一個(gè)Server ID。例如,server.1 的myid文件內(nèi)容就是―1‖。注意,請(qǐng)確保每個(gè)server的myid文件中id數(shù)字不同,并且和server.id=host:port:port中的id一致。另外,id的范圍是1~255。 6. 至此,配置文件基本ok,可以嘗試使用如下命令來啟動(dòng)zookeeper了: 
1. $ java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4
j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMainzoo.cfg  
注意,不同的ZK版本,依賴的log4j和slf4j版本也是不一樣的,請(qǐng)看清楚自己的版本后,再執(zhí)行上面這個(gè)命令。QuorumPeerMain類會(huì)啟動(dòng)ZooKeeper Server,同時(shí),JMX MB也會(huì)被啟動(dòng),方便管理員在JMX管理控制臺(tái)上進(jìn)行ZK的控制。這里有對(duì)ZK JMX的詳細(xì)介紹:http://zookeeper.apache.org/doc/r3.4.3/zookeeperJMX.html.  另外,完全可以有更簡(jiǎn)便的方式,直接使用%ZK_HOME%/bin 中的腳本啟動(dòng)即可。 
1. ./zkServer.sh start  
7. 連接ZK host來檢驗(yàn)部署是否成功。 
   A. Java語言的話,可以通過運(yùn)行這個(gè)命令來檢測(cè): 
1. $ java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4
j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf:src/java/lib/jline-0.9.94.jar \ org.apache.zookeeper.ZooKeeperMain -server 127.0.0.1:2181  
   B. 如果是C語言的話,方法如下: 
1. $ make cli_st  2. $ make cli_mt  
然后按照的這樣的方式連接ZK:$ cli_mt 127.0.0.1:2181。無論運(yùn)行哪種客戶端,最終都是一個(gè)類似于文件系統(tǒng)的命令行操作。 
注意:除了上面這種檢測(cè)方法,其實(shí)%ZK_HOME%/bin也有其它腳本,下面這個(gè)命令執(zhí)行后,就進(jìn)入了zookeeper樹狀結(jié)構(gòu)的文件系統(tǒng)中。 
1. ./zkCli.sh  
另外,還有一種方式,能夠查看ZK服務(wù)器當(dāng)前狀態(tài),如下,這個(gè)能夠很好的看出目前這個(gè)機(jī)器的運(yùn)行情況了: 
1. $ echo stat|nc localhost 2181  
2. Zookeeper version: 3.4.3-1240972, built on 02/06/2012 10:48 GMT
3. Clients:  
4. /127.0.0.1:40293[0](queued=0,recved=1,sent=0)  5.   
6. Latency min/avg/max: 1/2/3  7. Received: 4  8. Sent: 3  
9. Outstanding: 0  10. Zxid: 0×200000006  11. Mode: leader  12. Node count: 4  

感謝各位的閱讀,以上就是“zookeeper集群模式的配置方法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)zookeeper集群模式的配置方法這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI