centos6.9下安裝zookeeper及shell操作
zookeeper介紹及叢集環境搭建
zookeeper概述
zookeeper是一個分散式協調服務的開源框架。主要用來解決分散式叢集中的應用系統的一致性問題,例如在避免在同時處理同一資料時出現髒讀。
zookeeper本質是一個分散式的小檔案儲存系統,提供類似於檔案系統的目錄樹方式的資料儲存,並且對樹中的節點進行有效的管理。
zookeeper的架構
zookeeper叢集中有:leader,follower,observer三個角色
leader是叢集工作的核心:
leader是事務請求(增刪改)的唯一排程者和處理者,保證事務處理的順序性,叢集內部的各個伺服器的排程者
follower:
用來處理非事務的請求,並且轉發事務請求給leader,並且參與叢集leader的選舉投票,2n-1可以做叢集投票
此外針對訪問量較大的叢集,還可以增加觀察者這個角色
observer
觀察者角色,觀察zookeeper叢集的最新狀態變化,並將這些狀態同步過來,可以對非事務進行獨立的處理,對於事務請求轉發給leader,並且不會參與leader的選舉投票,增加併發的讀請求
zookeeper的特性
1.全域性資料的一致性:每個servier儲存一份相同的資料副本,client無論連線到哪個server,展示的都是一致的
2.可靠性:如果訊息被一個伺服器接收了,那麼將被所以的伺服器接受
3.順序性:包括全域性有序和偏序兩種,如果在一臺伺服器上,訊息a在訊息b之前釋出,那麼在所有的伺服器上訊息a都在訊息b前釋出;偏序是指如果一個訊息b在訊息a後被同一個釋出者釋出,a必將排在b前面
4.資料更新的原子性:一次資料更新要麼成功(半數以上節點成功),要麼失敗
5實時性:zookeeper保證客戶端在一個時間間隔的範圍內獲得伺服器的更新資訊或者伺服器的失效資訊。
三臺虛擬機器的zookeeper叢集的環境搭建
zookeeper叢集搭建指的是zookeeper分散式模式的安裝,通常由2n+1臺servers組成,這是為了保證leader選舉時能得到多數的支援,叢集數量一般為奇數。
在安裝zookeeper之前需要確保這三臺虛擬機器能夠聯網,免密登陸,時鐘同步,jdk環境。
第一步:下載zookeeper安裝包
下載網址:http://archive.apache.org/dist/zookeeper/
選擇穩定版本下載使用,下載完成後上傳到虛擬機器中
第二步:解壓
解壓壓縮包,進行安裝
第三步:修改配置檔案
在zookeeper的安裝目錄下的conf檔案中
#複製一份配置檔案
cp zoo_sample.cfg zoo.cfg
#在安裝目錄下建立檔案加
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
#修改配置檔案
vim zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
#在末尾新增
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
第四步:新增myid配置
在zkdatas目錄下建立一個檔案
echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第五步:安裝包分發並修改myid的值
scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/
分別在另外兩臺虛擬機器上修改myid的值
echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid
echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第六步:三臺虛擬機器啟動zookeeper服務
#啟動三臺虛擬機器的bin目錄下的zkServer.sh指令碼
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
#檢視啟動狀態
/export/servers/zookeeper-3.4.9/bin/zkServer.sh status
zookeeper的shell操作
客戶端連線
執行bin目錄下的zkCli.sh ,進入命令列工具
輸入help,能看到zk shell提示
shell操作
建立節點
create [-s] [-e] path data acl
#其中的-s或者-e分別指定節點特性,順序或者臨時節點,若不指定預設是永久節點
#建立順序節點
create -s /test 123
#建立臨時節點
create -e /test-temp 123temp
#建立永久節點
create /test-p 123p
讀取節點
與讀取相關的命令有ls,get
#列出指定節點下的所有子節點,指定節點下的第一級所有節點
ls path [watch]
#獲取zookeeper指定節點的資料內容和屬性資訊
get path [watch]
#更新節點
ls2 /
更新節點內容
set path data [version]
#修改之後,dataVersion會隨之修改,表示進行了更新
刪除節點
delete path
#若刪除節點存在子節點。那麼無法刪除該節點,必須刪除子節點。再刪除父節點
Rmr path
#可以遞迴刪除節點
quota
setquta -n | -b val path
#對節點增加限制 n:表示子節點的最大個數 b:表示資料值的最大長度 val:子節點最大個數或資料值的最大長度 path:節點路徑
listquota path
#列出指定節點的quota
delquota quota
其他命令
history:列出命令歷史