zookeeper學習使用

zookeeper使用

ls ls2 stat get

ls : 查看目錄簡要信息
ls2 : 查看目錄詳情
stat : 查看狀態
get : 獲取節點數據

create

1.創建默認節點:create /tyilack nodeData
2.創建臨時節點(session關閉會自動刪除,但不會立刻刪除):create -e /tyilack nodeData
3.創建節點序列(從0000000001開始自動遞增):create -s /tyilack nodeData

set

set /tyilack new-data
set /tyilack 123 1(樂觀鎖,最後的1是版本號,必須使用get命令的dataVersion纔可以更新)

delete

delete /tyilack/sec0000000003 普通刪除
delete /tyilack/sec0000000003 0 刪除指定版本號的節點(樂觀鎖)

watcher

創建

stat /watcher-test watch
get /watcher-test watch
ls /tyilack watch
操作 父目錄 子目錄
set NodeDataChanged NodeChildrenChanged
create NodeCreated NodeChildrenChanged
delete NodeDeleted (沒回調)

acl相關

acl構成:[scheme:id:permissions]

scheme 權限機制,id 允許訪問的用戶 , permissions 權限組合字符串

scheme:

1、world:world下只有一個id(anyone),組合寫法是

world:anyone:[permissions]

2、認證登錄,需要登錄的用戶有權限就可以訪問,寫法是

auth:user:password:[permissions]

3、digest:需要對密碼加密纔可以訪問,寫法是:

digest:username:BASE64(SHA1(password)):[permissions]

4、ip:指定ip纔有權限訪問,寫法是:

ip:192.168.1.1:[permissions]

5、super:超級管理員,擁有所有的權限

permission(crdwa):

1、create© : 創建子節點
2、read® : 獲取當前節點/子節點
3、write(w) : 設置節點數據
4、delete(d) : 刪除子節點
5、admin(a) : 設置權限

獲取權限

getAcl /tyilack/abc

默認權限是:

'world,'anyone
: cdrwa

world權限

setAcl /tyilack/abc world:anyone:rda

auth權限

1、登錄:

addauth digest tyilack:tyilack

2、設置auth權限

setAcl /names/tyilack auth:tyilack:tyilack:cdrwa

+ED8v8PXrj6/XbAWJU+KRU1YEAk=

ip權限

setAcl /names/ip ip:192.168.1.110:cdrwa

super權限

1、修改zkServer.sh,添加super管理員

如下命令:

nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"  \

改成:

nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.DigestAuthenticationProvider.superDigest=tyilack:+ED8v8PXrj6/XbAWJU+KRU1YEAk="  \

2、重啓zkServer.sh

3、訪問前先登錄super用戶

addauth digest tyilack:tyilack

zookeeper四字命令

1、安裝:

yum install nc

2、使用

//狀態信息
echo stat | nc localhost 2181 

Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT
Clients:
 /127.0.0.1:55224[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/2/53
Received: 34
Sent: 33
Connections: 1
Outstanding: 0
Zxid: 0x4d
Mode: standalone
Node count: 9

//是否正在運行
echo ruok | nc localhost 2181

imok
//列出未處理的會話和臨時節點
echo dump | nc localhost 2181

SessionTracker dump:
Session Sets (1):
1 expire at Sat Feb 06 10:26:34 CST 1971:
	0x1081189bd1f0002
ephemeral nodes dump:
Sessions with Ephemerals (0):
// 查看配置信息
echo conf | nc localhost 2181


clientPort=2181
dataDir=/usr/local/zookeeper/dataDir/version-2
dataLogDir=/usr/local/zookeeper/dataLogDir/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0

zookeeper配置集羣遇到的問題:

./zkServer.sh start-foreground

運行後遇到如下報錯:

en channel to 3 at election address /ip:3890
java.net.ConnectException: Connection refused (Connection refused)
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:400)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:243)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:225)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:402)
	at java.base/java.net.Socket.connect(Socket.java:591)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
	at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
	at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:845)
	at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:957)

解決方法:在zoo.cfg文件中加入如下配置即可

quorumListenOnAllIPs=true

具體原因:https://blog.csdn.net/XiyouLinux_Kangyijie/article/details/76704639

quorumListenOnAllIPs:
當設置爲true時,ZooKeeper服務器將會在所有可用的IP地址上監聽來自其對等點的連接請求,而不僅是配置文件的服務器列表中配置的地址。它會影響處理ZAB協議和Fast Leader Election協議的連接。默認值是false。這個和雲服務器的一些虛擬技術有關,因爲雲服務器用的是虛擬網卡,所以需要設置quorumListenOnAllIPs=true來監聽說有的網卡。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章