zookeeper基礎搭建

Apache ZooKeeper 是一個面向分佈式應用程序的高性能協調服務器。它使用一個簡單的接口暴露公共服務(比如命名和配置管理、同步和組服務),讓用戶不必從頭開始編程。它爲實現共識、組管理、領導者選舉和到場協議(presence protocol)配備了現成的支持。

由於手頭只有一臺機器,所以使用docker進行虛擬化,產生4臺虛擬機。原本是用於學習hadoop的,但是由於zookeeper機器數量應該爲2n+1臺,所以我們只使用了3臺。下面開始搭建zookeeper集羣。(個人覺得學習知識,在瞭解一些基礎知識之後就開始上手學習還是比較不錯的)

首先我們對機器進行一些基本的準備工作,比如java,ssh等。這裏應該注意一個問題,今天在公司用公司電腦搭建的時候,啓動時每臺機器都提示正常啓動,但是通過./zkSer.sh status查看機器啓動狀態時卻提示可能沒有啓動。google一下發現出現這個問題有以下集中原因,在此做一個記錄:

A: 由於我們設定的data目錄不存在導致zookeeper啓動時找不到相關的id文件

B:由於我們配置的集羣環境還沒能完全啓動,導致的選主失敗導致的問題

    C:這個是自己發現的,由於公司電腦都有java環境,所以也就沒有留意,在啓動時出現上述情況。最後通過./zkServer.sh start-foreground命令把啓動日誌打出來發現,原來是由於java版本的問題。(由於公司部分電腦支持的環境需要,部分主機保留java1.4版本)啓動zookeeper的依賴包找不到導致錯誤。具體zookeeper依賴那些jar文件也可以到官網上面搜索一下。

首先下載zookeeper安裝文件:http://www.apache.org/dyn/closer.cgi/zookeeper/

         下載完成之後解壓上述文件到制定目錄,例如: /home/×××/zookeeper  。爲了存在我們所需要的配置文件,我們新建以下幾個文件夾(在/home/***/zookeeper/文件夾下面)data,datalog,logs。然後我們對三臺主機分別在data目錄下新建myid文件,並在其中進行編號:1,2,3。這樣做是爲了我們能夠進行zoo.cfg文件中的定位問題。

         完成之後我們進行zooker/conf/zoo.cfg文件的配置。首先將原始的zoo_sample.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.
dataDir=/home/hadoop/zookeeper/data
dataLogDir=/home/hadoop/zookeeper/datalog
# the port at which the clients will connect
clientPort=2181
server.1=192.168.0.2:2888:3888    
server.2=192.168.0.3:2888:3888    
server.3=192.168.0.4:2888:3888    

參數詳解:

initLimit: zookeeper集羣中的包含多臺server, 其中一臺爲leader, 集羣中其餘的server爲follower. initLimit參數配置初始化連接時, follower和leader之間的最長心跳時間. 此時該參數設置爲5, 說明時間限制爲5倍tickTime, 即5*2000=10000ms=10s.
syncLimit: 該參數配置leader和follower之間發送消息, 請求和應答的最大時間長度. 此時該參數設置爲2, 說明時間限制爲2倍tickTime, 即4000ms.
server.X=A:B:C 其中X是一個數字, 表示這是第幾號server. A是該server所在的IP地址. B配置該server和集羣中的leader交換消息所使用的端口. C配置選舉leader時所使用的端口. 由於配置的是僞集羣模式, 所以各個server的B, C參數必須不同.

這樣我們就完成了zookeeper的相關配置。通過啓動zkServer.sh文件就可以啓動zk,使用status參數可以查看zk的節點是leader還是follower。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章