ZooKeeper部署

Zookeeper總體結構

Zookeeper服務自身組成一個集羣(2n+1個服務允許n個失效)。Zookeeper服務有兩個角色,一個是leader,負責寫服務和數據同步,剩下的是follower,提供讀服務,leader失效後會在follower中重新選舉新的leader。

Zookeeper邏輯圖如下,

1.jpg

  1. 客戶端可以連接到每個server,每個server的數據完全相同。

  2. 每個follower都和leader有連接,接受leader的數據更新操作。

  3. Server記錄事務日誌和快照到持久存儲。

  4. 大多數server可用,整體服務就可用。

Zookeeper數據模型

Zookeeper表現爲一個分層的文件系統目錄樹結構(不同於文件系統的是,節點可以有自己的數據,而文件系統中的目錄節點只有子節點)。

數據模型結構圖如下,

2.png

圓形節點可以含有子節點,多邊形節點不能含有子節點。一個節點對應一個應用,節點存儲的數據就是應用需要的配置信息。

Zookeeper 特點

  • 順序一致性:按照客戶端發送請求的順序更新數據。

  • 原子性:更新要麼成功,要麼失敗,不會出現部分更新。

  • 單一性 :無論客戶端連接哪個server,都會看到同一個視圖。

  • 可靠性:一旦數據更新成功,將一直保持,直到新的更新。

  • 及時性:客戶端會在一個確定的時間內得到最新的數據。

 

Zookeeper集羣的安裝,節點數2*n+1,

 

  • tickTime: zookeeper中使用的基本時間單位, 毫秒值.

  • dataDir: 數據目錄. 可以是任意目錄.

  • dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒有設置該參數, 將使用和dataDir相同的設置.

  • clientPort: 監聽client連接的端口號.

、準備Zookeeper環境

配置java環境變量:

vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.7.0_45

export ZOOKEEPER_HOME=/usr/local/zookeeper

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$ZOOKEEPER_HOME/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ZOOKEEPER_HOME/bin

rpm安裝jdk路徑:export JAVA_HOME=/usr/java/jdk1.7.0_45

配置hostname:

vi /etc/profile

172.16.23.195zookeeper1

172.16.23.196zookeeper2

reboot

2、配置zookeeper

Wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.3.6/

tar –xvzf zookeeper-3.3.6.tar.gz

mv /zookeeper-3.3.6 /usr/local/zookeeper

cd /usr/local/zookeeper/conf

mv mv zoo_sample.cfg zoo.cfg

vi zoo.cfg

添加以下內容zookeeper集羣:

server.1= zookeeper1:2888:3888

server.2= zookeeper1:2888:3888

標識Server ID:

cd /tmp/zookeeper

touch myid

1

其它zookeeper服務器配置步驟相同,更改myid值。

啓動zookeeper:

/usr/local/zookeeper/bin/zkServer.sh start

查看啓動狀態:

/usr/local/zookeeper/bin/zkServer.sh status

093140221.png

093142542.png

 

啓動客戶端腳本:

zkCli.sh -server  zookeeper1:2181

顯示根目錄下、文件:
ls / 

093204739.png

創建文件,並設置初始內容:
create /test 1註釋:1爲賦值。

獲取文件內容:
get /test

093230989.png

測試集羣效果,登錄另一臺zookeeper

zkCli.sh -server  zookeeper2:2181

ls /

093250609.png

正確顯示新建節點test,集羣正常。

修改文件內容:
set /test 2

刪除文件:
delete /test

退出客戶端:
quit 

 

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