ZooKeeper的安裝包括單機模式安裝,以及集羣模式安裝。node
安裝若是有不懂能夠看:linux
http://www.javashuo.com/article/p-xnadfoyd-hk.htmlshell
環境要求:必需要有jdk環境。apache
(1)安裝jdkvim
(2)安裝zookeeper,能夠在http://zookeeper.apache.org/官網下下載zookeeper。服務器
我下載的是3.3.6版本的zookeeper。工具
(3)解壓zookeeper後獲取到zookeeper的目錄。性能
對主要的一些目錄作介紹:測試
Bin:主要運行的一些腳本ui
Conf:配置文件的所在地
Lib:zookeeper的jar
(4)啓動zookeeper服務
走到bin目錄下去運行zkServer.cmd,雙擊它,可是出現一閃而退的狀況,這是正常的。
到conf目錄下將zoo_sample.cfg複製粘貼命名爲zoo.cfg。
並修改其中的內容:
1 # The number of milliseconds of each tick 2 3 tickTime=2000 4 5 # The number of ticks that the initial 6 7 # synchronization phase can take 8 9 initLimit=10 10 11 # The number of ticks that can pass between 12 13 # sending a request and getting an acknowledgement 14 15 syncLimit=5 16 17 # the directory where the snapshot is stored. 18 19 dataDir=C:\\Users\\Dell\\Desktop\\zookeeper\\zookeeper-3.3.6\\zookeeper-3.3.6\\data 20 21 dataDir=C:\\Users\\Dell\\Desktop\\zookeeper\\zookeeper-3.3.6\\zookeeper-3.3.6\\log 22 23 # the port at which the clients will connect 24 25 clientPort=2181
配置文件簡單解析:
一、tickTime:這個時間是做爲Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。
二、dataDir:顧名思義就是Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
三、dataLogDir:顧名思義就是Zookeeper 保存日誌文件的目錄
四、clientPort:這個端口就是客戶端鏈接Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
好修改完畢後,就能夠去啓動zookeeper的服務了。
出現當前界面表示啓動成功。能夠去測試一下了。
補充:ZooKeeper的安裝模式分爲三種,分別爲:單機模式(stand-alone)、集羣模式和集羣僞分佈模式。ZooKeeper 單機模式的安裝相對比較簡單,若是第一次接觸ZooKeeper的話,建議安裝ZooKeeper單機模式或者集羣僞分佈模式。以上使用的是單機模式
提示:
單機模式較簡單,是指只部署一個zk進程,客戶端直接與該zk進程進行通訊。
在開發測試環境下,經過來講沒有較多的物理資源,所以咱們常使用單機模式。固然在單臺物理機上也能夠部署集羣模式,但這會增長單臺物理機的資源消耗。故在開發環境中,咱們通常使用單機模式。
可是要注意,生產環境下不可用單機模式,這是因爲不管從系統可靠性仍是讀寫性能,單機模式都不能知足生產的需求。
環境要求:必需要有jdk環境。當前安裝機器是有jdk1.8的環境了,就不演示jdk的安裝了。
(1)下載zookeeper安裝包zookeeper-3.3.6.tar.gz
(2)上傳到linux上,並將其解壓出來。解壓命令:tar -zxvf zookeeper-3.3.6.tar.gz
解壓後會獲得一個zookeeper-3.3.6的目錄。並將去複製到/usr/local目錄下
cp -r zookeeper-3.3.6 zookeeper
(3)進入到/usr/local/zookeeper/conf目錄下,拷貝zoo_samle.cfg爲zoo.cfg
cd zookeeper-3.3.6/conf/
cp zoo_sample.cfg zoo.cfg
(4)編輯zoo.cfg文件,修改成:
1 # The number of milliseconds of each tick 2 3 tickTime=2000 4 5 # The number of ticks that the initial 6 7 # synchronization phase can take 8 9 initLimit=10 10 11 # The number of ticks that can pass between 12 13 # sending a request and getting an acknowledgement 14 15 syncLimit=5 16 17 # the directory where the snapshot is stored. 18 19 # 指定數據存放目錄 20 21 dataDir=/usr/zookeeper 22 23 # log 存放目錄 24 25 dataLogDir=/usr/zookeeper/log 26 27 # the port at which the clients will connect 28 29 # 端口號 30 31 clientPort=2181
配置文件簡單解析:
一、tickTime:這個時間是做爲Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。
二、dataDir:顧名思義就是Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
三、dataLogDir:顧名思義就是Zookeeper 保存日誌文件的目錄
四、clientPort:這個端口就是客戶端鏈接Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
(5)修改環境變量
vim /etc/profile
#指向到zookeeper目錄下
export ZOOKEEPER_INSTALL=/usr/local/zookeeper
export PATH=$ZOOKEEPER_INSTALL/bin:$PATH
source /etc/profile //讓環境變量生效
(6)啓動zookeeper
到bin目錄下
./zkServer.sh start 啓動
./zkServer.sh status 查看狀態,看看是否啓動成功
./zkServer.sh stop 關閉zookeeper服務
(7)好了安裝成功,可使用客戶端去使用zookeeper了。
鏈接zookeeper:Zkcli.sh -server 127.0.0.1:2181
單機模式的zk進程雖然便於開發與測試,但並不適合在生產環境使用。在生產環境下,咱們須要使用集羣模式來對zk進行部署。
注意 :
在集羣模式下,建議至少部署3個zk進程,或者部署奇數個zk進程。若是隻部署2個zk進程,當其中一個zk進程掛掉後,剩下的一個進程並不能構成一個quorum的大多數。所以,部署2個進程甚至比單機模式更不可靠,由於2個進程其中一個不可用的可能性比一個進程不可用的可能性還大。
環境要求:
準備三臺服務器,每臺服務器上必需要有jdk環境。
安裝開始:
(1)上傳zookeeper 壓縮包而且解壓出來。
(2)拷貝conf 目錄下的zoo_samle.cfg文件爲zoo.cfg,並修改其中的內容:
tickTime=2000 initLimit=5 syncLimit=2 dataLogDir=/usr/local/zookeeper/logs dataDir=/usr/local/zookeeper/data clientPort=2181 server.1=192.168.100.21:2888:3888 server.2=192.168.100.23:2888:3888 server.3=192.168.100.90:2888:3888
配置說明:
initLimit:
ZooKeeper集羣模式下包含多個zk進程,其中一個進程爲leader,餘下的進程爲follower。
當follower最初與leader創建鏈接時,它們之間會傳輸至關多的數據,尤爲是follower的數據落後leader不少。initLimit配置follower與leader之間創建鏈接後進行同步的最長時間。
syncLimit:
配置follower和leader之間發送消息,請求和應答的最大時間長度。
tickTime:
tickTime則是上述兩個超時配置的基本單位,例如對於initLimit,其配置值爲5,說明其超時時間爲 2000ms * 5 = 10秒。
server.id=host:port1:port2:
其中id爲一個數字,表示zk進程的id,這個id也是dataDir目錄下myid文件的內容。
host是該zk進程所在的IP地址,port1表示follower和leader交換消息所使用的端口,port2表示選舉leader所使用的端口。
dataDir:
其配置的含義跟單機模式下的含義相似,不一樣的是集羣模式下還有一個myid文件。myid文件的內容只有一行,且內容只能爲1 - 255之間的數字,這個數字亦即上面介紹server.id中的id,表示zk進程的id。
注意
若是僅爲了測試部署集羣模式而在同一臺機器上部署zk進程,server.id=host:port1:port2配置中的port參數必須不一樣。可是,爲了減小機器宕機的風險,強烈建議在部署集羣模式時,將zk進程部署不一樣的物理機器上面。
(3)進入zoo.cfg文件制定data的目錄下建立myid文件,並寫入值。
這個值是每臺服務器上的zookeeper的進程id。都是不一樣的。
(4)三臺服務器分別進行以上操做後。分別在這三臺機器上啓動zk進程,這樣咱們便將zk集羣啓動了起來。
在啓動成功後,可使用 ./zkServer.sh status 來查看每臺服務器是否啓動成功,還能夠看到當前zk的進程是leader仍是follower。
(5)鏈接
可使用如下命令來鏈接一個zookeeper集羣:
bin/zkCli.sh -server 192.168.100.21:2181,192.168.100.23:2181,192.168.100.90:2181
成功鏈接後,能夠看到以下輸出:
ZooKeeper命令行工具相似於Linux的shell環境,不過功能確定不及shell啦,可是使用它咱們能夠簡單的對ZooKeeper進行訪問,數據建立,數據修改等操做.使用 zkCli.sh -server 127.0.0.1:2181 鏈接到 ZooKeeper 服務,鏈接成功後,系統會輸出 ZooKeeper 的相關環境以及配置信息。
命令行工具的一些簡單操做以下:
1. 顯示根目錄下、文件: ls / 使用 ls 命令來查看當前 ZooKeeper 中所包含的內容
2. 顯示根目錄下、文件: ls2 / 查看當前節點數據並能看到更新次數等數據
3. 建立文件,並設置初始內容: create /zk "test" 建立一個新的 znode節點「 zk 」以及與它關聯的字符串
4. 獲取文件內容: get /zk 確認 znode 是否包含咱們所建立的字符串
5. 修改文件內容: set /zk "zkbak" 對 zk 所關聯的字符串進行設置
6. 刪除文件: delete /zk 將剛纔建立的 znode 刪除
7. 退出客戶端: quit
8. 幫助命令: help