您好,登錄后才能下訂單哦!
這篇文章主要講解了“zookeeper集群模式的配置方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“zookeeper集群模式的配置方法”吧!
集群模式的配置
為了確保ZooKeeper服務的穩定與可靠性,通常是搭建成一個ZK集群來對外提供服務。關于ZooKeeper,需要明確一個很重要的特性:集群中只要有過半的機器是正常工作的,那么整個集群對外就是可用的(本文下面就用―過半存活即可用‖來代替這個特性吧^-^)。正是基于這個特性,建議是將ZK集群的機器數量控制為奇數較為合適。為什么選擇奇數臺機器,我們可以來看一下,假如是4臺機器構成的ZK集群,那么只能夠允許集群中有一個機器down掉,因為如果down掉2臺,那么只剩下2臺機器,顯然沒有過半。而如果是5臺機器的集群,那么就能夠對2臺機器down掉的情況進行容災了。
你可以按照以下步驟來配置一個ZK機器,更多詳細步驟請查看《ZooKeeper快速搭建》: 1. 安裝JDK。相關鏈接:http://java.sun.com/javase/downloads/index.jsp
2. 設置Java heap 大小。避免內存與磁盤空間的交換,能夠大大提升ZK的性能,設置合理的heap大小則能有效避免此類空間交換的觸發。在正式發布上線之前,建議是針對使用場景進行一些壓力測試,確保正常運行后內存的使用不會觸發此類交換。通常在一個物理內存為4G的機器上,最多設置-Xmx為3G。
3. 下載安裝ZooKeeper,相關鏈接:http://zookeeper.apache.org/releases.html
4. 配置文件zoo.cfg。初次使用zookeeper,按照如下這個簡單配置即可:
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
本文后續章節會對這些參數進行詳細的介紹,這里只是簡單說幾點:
A. 集群中的每臺機器都需要感知整個集群是由哪幾臺機器組成的,在配置文件中,可以按照這樣的格式,每行寫一個機器配置:server.id=host:port:port. 關于這個id,我們稱之為Server ID,標識host機器在集群中的機器序號,在每個ZK機器上,我們需要在數據目錄(數據目錄就是dataDir參數指定的那個目錄)下創建一個myid文件,myid中就是這個Server ID數字。
B. 在ZooKeeper的設計中,集群中任意一臺機器上的zoo.cfg文件的內容都是一致的。因此最好是用SVN把這個文件管理起來,保證每個機器都能共享到一份相同的配置。
5. 關于myid文件。myid文件中只有一個數字,即一個Server ID。例如,server.1 的myid文件內容就是―1‖。注意,請確保每個server的myid文件中id數字不同,并且和server.id=host:port:port中的id一致。另外,id的范圍是1~255。 6. 至此,配置文件基本ok,可以嘗試使用如下命令來啟動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版本也是不一樣的,請看清楚自己的版本后,再執行上面這個命令。QuorumPeerMain類會啟動ZooKeeper Server,同時,JMX MB也會被啟動,方便管理員在JMX管理控制臺上進行ZK的控制。這里有對ZK JMX的詳細介紹:http://zookeeper.apache.org/doc/r3.4.3/zookeeperJMX.html. 另外,完全可以有更簡便的方式,直接使用%ZK_HOME%/bin 中的腳本啟動即可。
1. ./zkServer.sh start
7. 連接ZK host來檢驗部署是否成功。
A. Java語言的話,可以通過運行這個命令來檢測:
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。無論運行哪種客戶端,最終都是一個類似于文件系統的命令行操作。
注意:除了上面這種檢測方法,其實%ZK_HOME%/bin也有其它腳本,下面這個命令執行后,就進入了zookeeper樹狀結構的文件系統中。
1. ./zkCli.sh
另外,還有一種方式,能夠查看ZK服務器當前狀態,如下,這個能夠很好的看出目前這個機器的運行情況了:
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集群模式的配置方法”的內容了,經過本文的學習后,相信大家對zookeeper集群模式的配置方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。