前言
最近在搭建Hbase 服務(wù)時,服務(wù)無法啟動,于是決定將 hbase 服務(wù)刪除,在當(dāng)刪除 zookeeper
的 /hbase
節(jié)點時報錯,報 thentication is not valid : /hbase/tokenauth
。
看到網(wǎng)上大部分的文章都是使用跳過 ACL
或者 開啟 super 模式
這兩種方式,于是比較好奇有沒有第三種解,這里整理并記錄一下。
版本
- zookeeper 3.4.8
- CDP 7.1.7 (同CDH)
問題復(fù)現(xiàn)
zookeeper-client -server `hostname`:2181
rmr /hbase
Authentication is not valid : /hbase/tokenauth
解決方案
這里將三種方式都列出來。
一、跳過acl
CDH 配置方式如下
在CM -> Zookeeper -> Configuration -> "ZooKeeper Service Environment Advanced Configuration Snippet (Safety Valve)"
添加如下配置
-Dzookeeper.skipACL=true
二、super 模式
Super模式,顧名思義就是超級用戶的意思,為管理員所使用,這也是一種特殊的 Digest 模式。在 Super 模式下,超級用戶可以對任意 ZooKeeper 上的數(shù)據(jù)節(jié)點進行任何操作,不會被任何節(jié)點的 ACL 所限制。
1. 配置環(huán)境變量
找到 /bin/zkServer.sh
文件。添加如下:
-Dzookeeper.DigestAuthenticationProvider.superDigest=super:zUZ0bpqYS7FucDXsnUgxOWTto1s=
其中,super 代表了一個超級管理員的用戶名;zUZ0bpqYS7FucDXsnUgxOWTto1s=
是由 ZooKeeper 的系統(tǒng)管理員自主配置密碼的兩次編碼處理后的密文,此例中使用的是 super:roo
t 的編碼。
三、sasl 認證
以上兩種方式,其實都不是正常的解決方式,一種時跳過 ACL 認證,一種是添加一個super 賬號,來強制刪除。那么正常的認證方式到底時如何的。
1. 編寫jaas.conf文件
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/path/to/client/keytab"
storeKey=true
useTicketCache=false
principal="hbase@TEST.com";
};
2. 添加環(huán)境變量
export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/path/jaas.conf"
3. 使用zookeeper-client
zookeeper-client -server `hostname`:2181
4. 查看ACL
getAcl /hbase/tokenauth
'sasl,' hbase
: cdrwa
總結(jié)
SASL 身份驗證方案與某些其他方案的不同之處在于,如果方案是sasl
,則addauth <scheme> <auth>
命令無效。這是因為身份驗證是在連接后立即使用啟用 SASL
的令牌交換執(zhí)行的,而不是像 addauth
那樣在連接后的任何時間發(fā)生。文章來源:http://www.zghlxwxcb.cn/news/detail-623053.html
相關(guān)鏈接文章來源地址http://www.zghlxwxcb.cn/news/detail-623053.html
http://smartsi.club/zookeeper-acl-access-permission-control-mechanism.html
https://cwiki.apache.org/confluence/display/ZOOKEEPER/Client-Server+mutual+authentication
到了這里,關(guān)于【zookeeper】問題解決 Authentication is not valid : /hbase/tokenauth的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!