日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zookeeper 的安装配置及简单使用

發布時間:2024/4/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zookeeper 的安装配置及简单使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

===> Zookeeper?是什么?

? ? ? ? ? ? ? ? => ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。

????????????????=>?ZooKeeper包含一個簡單的原語集,提供Java和C的接口。

????????????????=>?ZooKeeper代碼版本中,提供了分布式獨享鎖、選舉、隊列的接口,代碼在zookeeper-3.4.3\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本


===> Zookeeper應用場景(功能):

????????????????=>?它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:

????????????????????????配置維護、域名服務、分布式同步、組服務等。

????????????????=>?ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。


===> Zookeeper體系結構



===> Zookeeper?工作原理:

????????????????=>?Zookeeper 的核心是原子廣播,這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab協議。

????????????????=>?Zab協議有兩種模式:?恢復模式(選主)廣播模式(同步)

????????????????????當服務啟動或者在領導者崩潰后,Zab就進入了恢復模式,當領導者被選舉出來,且大多數Server完成了和 leader的狀態同步以后,恢復模式就結束了。

????????????? ??()狀態同步保證了leader和Server具有相同的系統狀態?

????????????????=>?為了保證事務的順序一致性,zookeeper采用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加上了zxid。

????????????????????實現中zxid是一個64位的數字,它高32位是epoch用來標識leader關系是否改變,每次一個leader被選出來,它都會有一個新的epoch,標識當前屬于那個leader的統治時期。

????????????????????低32位用于遞增計數。


? ? ????????? ??()對于客戶端來說,ZooKeeper是一個整體(ensemble),連接到ZooKeeper集群實際上感覺在獨享整個集群的服務,so,你可以在任何一個結點上建立到服務集群的連接


?===> Zookeeper?安裝

? ? ? ? =>搭建ZooKeeper的集群環境

????????1、三臺:bigdata12? bigdata13? bigdata14

????????? ?時間同步

????????? ?

????????2、在bigdata12上進行安裝

????????? ?(*) 解壓 tar -zxvf zookeeper-3.4.10.tar.gz -C ~/training/

????????? ?(*) 設置環境變量:每臺機器上

????????ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10

????????export ZOOKEEPER_HOME

????????

????????PATH=$ZOOKEEPER_HOME/bin:$PATH

????????export PATH

????????? ?(*)核心的配置文件: conf/zoo.cfg

????????mkdir /root/training/zookeeper-3.4.10/tmp

????????編輯 zoo.cfg

????????dataDir=/root/training/zookeeper-3.4.10/tmp

????????

????????server.1=bigdata12:2888:3888

????????server.2=bigdata13:2888:3888

????????server.3=bigdata14:2888:3888

????????

????????在/root/training/zookeeper-3.4.10/tmp目錄創建文件: myid

????????輸入? 1

????????3、把bigdata12的ZK復制到其他的節點

????????? ?scp -r zookeeper-3.4.10/ root@bigdata13:/root/training

????????? ?scp -r zookeeper-3.4.10/ root@bigdata14:/root/training

????????? ?

????????4、修改bigdata13和bigdata14上的myid文件

????????5、在每臺機器上,啟動ZK:? zkServer.sh? start


===>?配置文件


????????????=>?zookeeper-3.3.3/conf文件夾下面(可以把默認的zoosample.cfg復制一份到zoo.cfg),配置文件zoo.cfg需要在每臺服務器中都要編寫,以下是一個配置文件的樣本:


????????????????# Filename zoo.cfg

????????????????

????????????????tickTime=2000

????????????????

????????????????dataDir=/home/zookeeper/data

????????????????

????????????????clientPort=2181

????????????????

????????????????initLimit=5

????????????????

????????????????syncLimit=2

????????????????

????????????????server.1=202.115.36.251:2888:3888

????????????????

????????????????server.2=202.115.36.241:2888:3888

????????????????

????????????????server.3=202.115.36.242:2888:3888


????????????????initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集群中連接到 Leader 的 ????????????????Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務器還沒有收到客戶端的返回信息,

????????????那么表明這個客戶端連接失敗。總的時間長度就是 5*2000=10 秒。


????????????????syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒?


????????????????server.A=B:C:D

????????????????????????A?是一個數字,表示這個是第幾號服務器;

????????????????????????B?是這個服務器的 ip 地址;

????????????????????????C?表示的是這個服務器與集群中的 Leader 服務器交換信息的端口;

????????????????????????D?表示的是萬一集群中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。

????????????????????????如果是偽集群的配置方式,由于 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。


?????????????=>?創建myid文件

????????????????除了修改 zoo.cfg 配置文件,集群模式下還要配置一個文件 myid,這個文件在 dataDir 目錄下,這個文件里面就只有一個數據就是 A 的值,Zookeeper 啟動時會讀取這個文

????????????????件,拿到里面的數據與 zoo.cfg 里面的配置信息比較從而判斷到底是那個 server。這個myid的值要和配置文件中的server.x=ip:port:port中的x一致。

????????????????echo 1 > myid


===> Zookeeper?操作

?????????=> 查看zookeeper? 的狀態: zkServer.sh? status

????????=>?通過 zookeeper?客戶端連接:??

????????????????zkCli.sh? -server? 192.168.10.221:2181

????????=>?查看znode節點:

????????????????ls? /

????????=>?創建znode節點(數據):

????????????????create? /test? "hello"

????????=> 獲取znode節點數據:

????????????????get? /test

? ? ????=>?修改znode節點數據:

????????????????set? /test? "word"

????????=>?刪除znode?節點:

????????????????delete? /test


===>?清除zk狀態

????????當在zk上已經做了很多事情,配置已經比較雜亂,現在想重新初始化一下,也就是把所有狀態刪除,步驟是:

????????=>?關閉所有zk節點,用zkServer.sh status查看是否關閉

????????=>?刪除zoo.cfg定義的數據文件夾下的所有文件,除了myid文件外

????????=>?啟動zk節點

????????現在配置就重置了


===>?常見問題

????????在用zkCli.sh啟動客戶端時,Will not attempt to authenticate using SASL (無法定位登錄配置)

????????這是由于沒有啟用用戶驗證導致的,不影響使用,但影響安全性。SASL 即:Simple Authentication and Security Layer

本文轉自 ? tianshuai369 ? 51CTO博客,原文鏈接:http://blog.51cto.com/songqinglong/2062909

總結

以上是生活随笔為你收集整理的zookeeper 的安装配置及简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。