我按照这个官方文档安装了 CDH 5.3.2 的 Kerberos。
我还按照 ZooKeeper 身份验证 配置了安全的 ZooKeeper,我在其中执行了以下操作:
1)。为每个 ZK 服务器创建主体并导出其密钥表文件;
2)。配置相关文件,如
zoo.cfg
、jaas.conf
和java.env
;
但是当我尝试启动 ZK Cluster 时失败了。我检查了日志文件,它报告了以下异常:
2015-09-22 15:19:08,232 ERROR org.apache.zookeeper.server.quorum.QuorumPeerMain:意外异常,异常退出 java.io.IOException:无法配置服务器,因为 SASL 配置不允许 ZooKeeper 服务器正确验证自身:javax.security.auth.login.LoginException: 校验和失败 在org.apache.zookeeper.server.ServerCnxnFactory.configureSaslLogin(ServerCnxnFactory.java:207) 在org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:87) 在 org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:135) 在org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116) 在org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
校验和失败。我不知道这意味着什么。
我确信我的 Kerberized CDH 运行正常,因为我可以访问 HDFS 并提交 YARN 作业作为相应的主体。此外,我可以通过命令
kinit -k -t <path-to-keytab> <zookeeper/FQDN@REALM>
获取zookeeper委托人的票证。
那么是什么原因导致了这个问题呢?任何建议将不胜感激。
我也有同样的问题。我通过在 Cloddra Manager 上的 kerberos 管理中重新生成 Zookeeper 密钥表来解决这个问题。我在 5.5.1 版本的 CDH 中做到了这一点。
我希望这对某人有帮助
正如https://community.cloudera.com/t5/Cloudera-Manager-Installation/Kerberos-Authentication-Wizard-failing-to-generate-workable/m-p/25748#M4011中指出的,Cloudera管理器尝试使用tcp但 KDC 默认配置为仅使用 udp!供参考:https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/kdc_conf.html
解决方法:在 kdc.conf 中在
kdc_tcp_ports = 88
下面添加 kdc_ports = ...
(88 是 kerberos 的默认 tcp 端口)并重新启动服务:service krb5-kdc restart
。现在手动启动zookeeper和其余服务。