安裝規劃
zookeeper安裝到zdh41上面,單機模式
10.43.159.41 zdh41 ZDH.COM
安裝用戶
zookeeper/zdh1234
useradd -g hadoop -s /bin/bash -md /home/zookeeper zookeeper
安裝zookeeper集群,并且開啟kerberos認證
1.獲取Zookeeper安裝包
scp garrison@zdh-237:/home/garrison/backup/zookeeper-3.5.1-alpha.tar.gz .
解壓zookeeper包
tar -zxvf zookeeper-3.5.1-alpha.tar.gz
在zookeeper-3.5.1-alpha/conf/目錄執行
mv zoo_sample.cfg zoo.cfg
修改zoo.cfg文件:
dataDir=/home/zookeeper/zookeeper-3.5.1-alpha/dataDir
clientPort=2181
文件最后添加,配置zookeeper集群通信端口:
server.1=zdh-237:12888:13888
創建一個dataDir文件夾:
mkdir ~/zookeeper-3.5.1-alpha/dataDir
再創建一個空文件:
touch /dataDir/myid
最后向該文件寫入ID:
echo 1 > /dataDir/myid
配置環境變量方便以后操作:
export ZOOKEEPER_HOME=:~/zookeeper-3.5.1-alpha
export PATH=ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
2.在zte-krb上,使用root用戶,在/root/keytabs目錄下,創建Zookeeper的principal
kadmin.local
addprinc -randkey zookeeper/zdh41@ZDH.COM
xst -k zookeeper.keytab zookeeper/zdh41@ZDH.COM
exit
scp zookeeper.keytab storm@zdh41:/home/storm/zookeeper-3.5.1-alpha/conf
3.修改zoo.cfg,添加以下內容
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true
4.在conf目錄創建java.env文件,添加以下內容
export JVMFLAGS="-Djava.security.auth.login.config=/home/zookeeper/zookeeper-3.5.1-alpha/conf/jaas.conf"
下面這句zkClient單獨部署的時候可以用
export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/home/zookeeper/zookeeper-3.5.1-alpha/conf/jaas.conf"
5.在conf目錄創建jaas.conf文件
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/zookeeper/zookeeper-3.5.1-alpha/conf/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/zdh41@ZDH.COM";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/zookeeper/zookeeper-3.5.1-alpha/conf/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/zdh41@ZDH.COM";
};
注意:如果修改jaas.conf配置,則一定要重啟zkServer,否則會導致zkClient連不上,
可能是因為zkClinet和zkServer使用同一個配置,實際zkClient應該配置自己的keytab用于訪問。
6.啟動zookeeper
進入到 zookeeper-3.4.5/bin/
./zkServer.sh start
查看狀態:
./zkServer.sh status
停止zookeeper:
./zkServer.sh stop
7.驗證開啟Kerberos
客戶端能夠登陸開啟Kerberos的zkServer
./zkCli.sh -server zdh41:12181
注意不能使用zkCli.sh -server 10.43.159.41:12181登陸,
會導致鑒權失敗,zdh41和10.43.159.41在Kerberos服務器看來是不一樣的principle
但是無法刪除不是自己的storm
deleteall /storm
Authentication is not valid : /storm/leader-lock
其他IP的客戶端未使用kerberos的也能登陸并且查看,
但是應該無法修改有權限的節點:
zkCli.sh -server 10.43.159.41:12181
zkCli.sh -server zdh41:12181
create /znode1 sasl:zookeeper/zdh41@ZDH.COM:cdwra
getAcl /znode1
delete /test
列出目錄:
ls /