在centos上搭建ZooKeeper

前言

本篇假設大家已經知道了ZooKeeper的基礎概念,在此不做任何介紹。在這裏,我們首先一起在centos系統上安裝一個單機ZooKeeper,並使用簡單的客戶端操作。然後提升下檔次,爲了ZooKeeper的高可用,我們再配置一下,讓ZooKeeper轉入仲裁模式!

單機模式

廢話不多說先上一下第一階段的操作步驟,全軍出擊!

1.下載ZooKeeper包

   http://zookeeper.apache.org

2.解壓tar -zvxf 包名

3.啓動zookeeper服務端

4.通過zkCli工具連接服務端

1)可以在windows上下載包,然後使用FileZilla等工具上傳到linux系統上。

2)自己創建一個合適的目錄,然後一頓命令操作,將包解壓,得到如下圖所示目錄文件。

3)進去看一下目錄結構,我們重點看的是bin目錄和conf目錄,bin目錄中有可執行的工具,conf目錄可以根據具體場景配置相關參數。在啓動之前需要將conf目錄下的sample_zoo.cfg名字修改爲zoo.cfg,因爲zkServer.sh在啓動的時候會去這個目錄下找zoo.cfg。

4)現在讓我們去啓動吧!這裏需要注意下,要麼在hosts文件里加上localhost 127.0.0.1映射,要麼在zoo.conf裏配置server的ip爲公網ip,否則客戶端會報連接拒絕。

5)啓動客戶端,成功!啓動期間會輸出一些環境信息,主要是ZooKeeper版本,java版本,系統環境等等,同時會建立一個session,並生成sessionid。

6)接下來我們對znode進行簡單的操作。

ls 只看節點,ls2 可以查看節點狀態 。

create: create [-s] [-e] path data acl 創建節點 。其中-s表示創建順序節點,-e表示創建臨時節點。

仲裁模式

上面我們僅僅配置了單機模式,但是這樣在實際應用中是非常不可靠的,一臺服務故障,整個服務就不能使用了。接下來我們配置多個服務相互協作來保證服務的高可用性。我們需要使用下面這些參數:

我們現在說下每個參數的含義:

tickTime:ZooKeeper服務器之間或者客戶端與服務器之間維持心跳的時間間隔,每隔tickTime時間(毫秒)發送一個心跳。

initLimit:ZooKeeper中客戶端(follower服務器)連接到leader服務器所用時長最多能忍受多少個心跳時間。當超過10個心跳時長也就是2000*10=20秒,表明這個客戶端連接失敗。

syncLimit:ZooKeeper中客戶端(follower服務器)和leader服務器

請求和應答的時長,最長不能超過多少個tickTime時間。

dataDir:ZooKeeper用來保存數據的目錄。

clientPort:客戶端連接ZooKeeper服務器的端口,ZooKeeper通過監聽這個端口來接受客戶端的訪問請求。

server.n:每個server.n都指定了一個服務器的地址和端口號。通過冒號分爲三部分,第一部分是服務器的ip地址或者主機名,第二部分和第三部分是端口號,分別用於通信和羣首選舉。

目前我們在同一臺服務器上配置,所以第二個端口不能相同。下面先給出大概步驟,後面進行操作。

1.設置data目錄

2.設置myid文件

3.分別命名各自的cfg文件

4.啓動服務

5.當開啓服務器數大於等於法定人數,選舉出主節點,服務開始可用

1)我們可以創建三個ZooKeeper目錄,然後分別在三個目錄下創建data文件夾。

2)創建myid文件,服務器啓動時,服務器通過配置文件中的dataDir來查找data目錄。然後通過myid獲取服務器的id,之後使用配置文件中的server.n對應的項來設置端口並監聽。

3)配置cfg文件。通過上面的配置信息,分別在三個目錄下配置cfg文件。我在z1下創建了z1.cfg,然後將clientPort設置爲3187,同理,可以在z2,z3下分別配置,將clientPort設置爲3188,3189。

4)啓動服務器,後面參數加上各自的cfg配置文件。啓動的時候最好看下z1,z2,z3文件夾下的zookeeper.out啓動日誌,因爲有時候你選擇的端口可能會被佔用,此時會啓動失敗。

5)全部啓動之後,我們可以訪問一下這個集羣。其實開啓第二個的時候,leader已經被選取出來了,id值最大的就是leader,此後開啓的第三個服務器也只能作爲follower。可以看到此時客戶端是連接道leader上的(端口號3188)。如果客戶端多次進行連接,會發現客戶端可能會連接到不同的服務器上,在此不再給出圖片,可以自己測試一下。

到此,我們已經搭建了ZooKeeper的單機模式和仲裁模式(也就是集羣模式),但是還有更多的ZooKeeper特性需要我們去了解,這就留待以後讓我們一起去探索!

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