说明
zk自3.4.10开始存在两种kerberos认证方式
-
client-server之间
client到server之间的认证是允许匿名用户登录查询的,跟sasl认证用户区别在于acl上(acl是谁创建谁能删除,其他用户不行,获取方式getAcl 路径查看)
server-server之间
client-server认证配置
-
生成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的认证信息放在一起
变量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";
}; -
修改环境变量
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}"
注意新增的变量是不是带入进程启动参数
bin/zkCli.sh
新增
export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/opt/zookeeper/conf/jaas.conf"