ZooKeeper環境搭建

壹頁書發表於2016-05-08
ZooKeeper版本:3.4.6
解壓縮zookeeper-3.4.6.tar.gz 
建立配置檔案
zookeeper-3.4.6/conf/zoo.cfg:

tickTime=2000
dataDir=/home/zookeeper/data/
clientPort=2181
initLimit=5
syncLimit=2
maxClientCnxns=1000
server.105=192.168.1.105:2888:3888
server.106=192.168.1.106:2888:3888
server.108=192.168.1.108:2888:3888
server.109=192.168.1.109:2888:3888
server.110=192.168.1.110:2888:3888

然後將目錄複製到各臺伺服器.
啟動ZooKeeper服務
./zkServer.sh start

ACL配置
作為配置中心,許可權控制肯定是必要的.否則一旦出現問題...畫面太美

zookeeper目前支援下面一些許可權:
CREATE(c): 建立許可權,可以在在當前node下建立child node
DELETE(d): 刪除許可權,可以刪除當前的node
READ(r): 讀許可權,可以獲取當前node的資料,可以list當前node所有的child nodes
WRITE(w): 寫許可權,可以向當前node寫資料
ADMIN(a): 管理許可權,可以設定當前node的permission

許可權模式
IP,Digest帳號密碼,World預設都開放,Super超級許可權.

以如下節點為例
/service/vdfs/upload/default
我需要建立一個讀寫帳號,和一個只讀帳號.
服務提供者用讀寫帳號(vdfs)
服務呼叫者用只讀帳號(vdfsreadonly)

使用程式計算密碼摘要


設定節點ACL
setAcl /service/vdfs/upload/default digest:vdfs:8bD/0+39dpuh0wUiFnwt1yY1Lu0=:cdrwa,digest:vdfsreadonly:1VzGwZ3x8y+8/yvHeRaqa4hNs+4=:r

digest:vdfs:8bD/0+39dpuh0wUiFnwt1yY1Lu0=:cdrwa
digest說明是帳號密碼認證
vdfs是帳號名稱
8bD/0+39dpuh0wUiFnwt1yY1Lu0= 是密碼摘要
cdrwa 表示許可權

兩個帳號之間,用逗號分隔.


檢視節點ACL
[zk: localhost:2181(CONNECTED) 2] getAcl /service/vdfs/upload/default
'digest,'vdfs:8bD/0+39dpuh0wUiFnwt1yY1Lu0=
: cdrwa
'digest,'vdfsreadonly:1VzGwZ3x8y+8/yvHeRaqa4hNs+4=
: r

登入vdfsreadonly帳號,可以檢視資料,不能新建資料.


而登入vdfs帳號,則有讀寫許可權



增加ACL之後,運維會比較麻煩,需要反覆切換帳號。
ZooKeeper提供了一個Super帳號,用於運維人員.
同樣需要根據密碼先計算一個摘要.
假如設定super的密碼為123456,其摘要為 1VzGwZ3x8y+8/yvHeRaqa4hNs+4=

修改zkServer.sh檔案
大致109行的位置,
增加如下內容
 nohup "$JAVA" -Xmx2G -Xms512m -Dzookeeper.DigestAuthenticationProvider.superDigest=super:1VzGwZ3x8y+8/yvHeRaqa4hNs+4= "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \

重啟ZooKeeper節點
然後登入zkCli.sh
使用Super認證,既獲得管理員超級許可權.
addauth digest super:123456

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2096025/,如需轉載,請註明出處,否則將追究法律責任。

相關文章