說(shuō)明
zk自3.4.10開始存在兩種kerberos認(rèn)證方式
-
client-server之間
client到server之間的認(rèn)證是允許匿名用戶登錄查詢的缸托,跟sasl認(rèn)證用戶區(qū)別在于acl上(acl是誰(shuí)創(chuàng)建誰(shuí)能刪除,其他用戶不行瘾蛋,獲取方式getAcl 路徑查看)
server-server之間
client-server認(rèn)證配置
-
生成keytab文件
變量qabb-qa-hadoop3.h.qi-inc.com修改成各自的hostname -f的名字
kadmin -w qaqa -p kadmin/admin -q 'addprinc -randkey zookeeper/qabb-qa-hadoop3.h.qi-inc.com'
mkdir /data/keytab/zk
kadmin -w qaqa -p kadmin/admin -q 'ktadd -k /data/keytab/zk/zk-server.keytab zookeeper/qabb-qa-hadoop3.h.qi-inc.com'
chmod 755 -R /data/keytab/zk -
修改zoo.cfg配置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
kerberos.removeHostFromPrincipal=true
sasl.enabled.mechanisms=GSSAPIrequireClientAuthScheme=sasl
-
新增jaas.conf文件
把server和client的認(rèn)證信息放在一起
變量qabb-qa-hadoop1.h.qi-inc.com修改成各自的hostname -f的名字
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/data/keytab/zk/zk-server.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/qabb-qa-hadoop1.h.qi-inc.com";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/data/keytab/zk/zk-cli.keytab"
storeKey=true
useTicketCache=false
principal="zkcli/qabb-qa-hadoop1.h.qi-inc.com";
}; -
修改環(huán)境變量
bin/zkServer.sh
新增
export JVMFLAGS="-Djava.security.auth.login.config=/opt/zookeeper/conf/jaas.conf -Dzookeeper.allowSaslFailedClients=false"
conf/java.env
更新
export JVMFLAGS="-server -Xms2g -Xmx2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8 -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:CMSMaxAbortablePrecleanTime=5000 -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/zookeeper/ -verbose:gc -Xloggc:/data/logs/zookeeper/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7777 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false ${JVMFLAGS}"
注意新增的變量是不是帶入進(jìn)程啟動(dòng)參數(shù)
bin/zkCli.sh
新增
export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/opt/zookeeper/conf/jaas.conf"