做者:超級大丁丁
my.oschina.net/mHUMTSy9311/blog/2960544
怎麼搭建單機無安全校驗的就不說了,百度一搜一大堆。這裏我就說說怎麼搭建一個生產環境可用的Zookeeper集羣java
Zookeeper 3.4.13下載地址node
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
Docker方式不太建議,要考慮的東西比較多,若是要用Docker方式仍是比較建議自建鏡像,假如是Docker專家能夠忽略本句。面試
如下介紹的都是Linux服務器下搭建(Winserver服務器的也是雷同)先操做單機,再copy到其餘機器。下載完Zookeeper(下稱zk)後,進入zk解壓目錄下的conf文件夾,zoo_sample.cfg是zk的配置文件實例,Copy一個出來命名爲zoo.cfg zk默認會讀這個配置。redis
如需使用Hosts請在每一個實例所在的機器設置Hosts(/etc/hosts) 如:zk1 127.0.0.1數據庫
下面貼一下個人簡單配置:apache
# The number of milliseconds of each ticktickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/data/zookeeper/data # the port at which the clients will connect clientPort=2181 server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk2:2888:3888
zk的腳本都放在zk/bin 目錄下api
zkServer.sh 服務操做腳本(只介紹經常使用命令)
# 後臺啓動 ./zkServer.sh start # 前臺啓動 ./zkServer.sh start-foreground # 中止 ./zkServer.sh stop # 重啓 ./zkServer.sh restart # 查看狀態 (其中 Mode表明是Leader節點仍是Follow節點) ./zkServer.sh status
zkCli.sh 是zk的客戶端,默認鏈接本機實例,能夠經過進入ZkCli後執行ZooKeeper -server host:port cmd args去操做其餘遠程實例安全
# 進入zk客戶端命令行操做 ./zkCli.sh
列舉下一些經常使用命令(其餘命令能夠)服務器
# 查看根目錄下節點 ls /pathget /path # 查看節點狀態/屬性 stat /path # 刪除節點 rmr /path # 刪除節點下數據 delete /path [version]
zk的權限驗證有3種方式,這裏只介紹比較經常使用的兩種方式(先搭建好集羣,權限設置會同步到整個集羣):微信
create /path "test" #建立節點和別名
1.經過IP限制
#進入zkCli後的權限驗證設置命令 後面會介紹permission參數 setAcl /path ip:192.168.1.1:[permissions] #也能夠是ip段 setAcl /path ip:192.168.0.0/16:[permissions] #驗證 本機校驗是經過的。能夠用另外一個ip段的來驗證 ls /path
2.經過用戶+密碼控制
這種方式的密碼是BASE64(SHA1(原文密碼))出來的密文,怎樣生成保證成功的密文呢
#經過這個類計算出密文(對應的版本能夠從zk/lib目錄下看到) java -cp ./zookeeper-3.4.13.jar:./lib/log4j-1.2.17.jar:./lib/slf4j-log4j12-1.7.25.jar:./lib/slf4j-api-1.7.25.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider test:123456
#test是用戶名 password是密碼BASE64(SHA1(原文密碼)) setAcl /path digest:test:password:[permission]
# 校驗是否成功,如今確定是成功的,可是從新進入zkCli就會失敗了 ls /path #進入zkCli執行addAuth命令,這是相似登陸的功能 test是用戶名,123456是剛剛的原文 addauth digest test:123456 #而後再執行 ls命令 這時候就成功 ls /path
permission是用cdrwa來表示 如:
setAcl /path digest:test:password:cdw
每一個字母分別表明的是:
歡迎你們關注個人微信公衆號【民工哥技術之路】,最新整理的 2TB 技術乾貨:包括架構師實戰教程、大數據、Docker容器、系統運維、數據庫、redis、MogoDB、電子書、Java基礎課程、Java實戰項目、ELK Stack、機器學習、BAT面試精講視頻等。只需在「 民工哥技術之路」微信公衆號對話框回覆關鍵字:1024便可獲取所有資料。