背景说明:
在Ambari平台上启用Kerberos之后,一些服务的Web UI 如:Namenode:50070、Yarn Web UI、spark history UI等快速链接大部分都是需要Kerberos认证才可以继续使用的。
像这种情况,就不能在Linux上进行操作.需要在Windows上安装Kerberos客户端,再进行浏览器配置才可以访问Hadoop相关服务的Web UI界面。
安装配置主要分为以下几步
- 在windows上安装Kerberos客户端,并修改本地krb5.ini文件
- 配置hosts文件,添加集群ip映射
- 配置浏览器
- Kerberos认证
一、安装配置Kerberos客户端
下载 MIT Kerberos for Windows 4.1
地址:http://web.mit.edu/kerberos/dist/
Windows 64位:64-bit MSI Installer kfw-4.1-amd64.msi, 10812k.
根据自己windows操作系统来选择对应版本
- 客户端安装
选择Typical,点击下一步。
点击完成。后面会出现提示框,是否重启计算机,选择No就可。
默认安装路径:
MIT Kerberos软件的安装按照向导一步步操作即可,其安装目录默认为“C:\Program Files\MIT\Kerberos”。
krb5.ini配置
文件路径:C:\ProgramData\MIT\Kerberos5\krb5.ini
从HDP KDC Server节点的/etc目录下拷贝krb5.conf文件MIT Kerberos软件的安装目录。
将Kerberos KDC所在主机的/etc/krb5.conf文件有选择的粘贴到windows的krb5.ini里面
[libdefaults]
default_realm = DLAKE.COM
dns_lookup_realm = false
dns_lookup_kdc = true
rdns = false
ticket_lifetime = 24h
forwardable = true
udp_preference_limit = 0
#default_ccache_name = KEYRING:persistent:%{uid}
#default_ccache_name = FILE:/tmp/krb5cc_%{uid}
[realms]
DLAKE.COM = {
kdc = ipa1.dlake.com:88
master_kdc = ipa1.dlake.com:88
admin_server = ipa1.dlake.com:749
kdc = ipa2.dlake.com:88
master_kdc = ipa2.dlake.com:88
admin_server = ipa2.dlake.com:749
default_domain = dlake.com
#pkinit_anchors = FILE:/var/lib/ipa-client/pki/kdc-ca-bundle.pem
#pkinit_pool = FILE:/var/lib/ipa-client/pki/ca-bundle.pem
}
说明:krb5.ini是系统文件 需要admin账户权限修改。
windows10以管理员身份运行的设置方法:
过计算机管理永久开启Administrator管理员账号登录
右键桌面的“计算机” - 选择“管理”;依次展开“计算机管理(本地) - 系统工具 - 本地用户和组 - 用户”在右边的文件里面找到“Administrator”并双击它,在“常规”选项下将“账户已禁用”的勾去掉,这样就开启了 Administrator(管理员)账户。
配置MIT Kerberos环境变量
配置如下环境变量:
变量名:KRB5_CONFIG
变量值:C:\ProgramData\Kerberos\krb5.ini
说明:ProgramData在window中是隐藏文件,需要打开隐藏文件、
注:环境变量KRB5_CONFIG的变量值为krb5.ini文件存放路径
变量名:KRB5CCNAME
变量值:D:\tmp\krb5cc_0
说明:环境变量KRB5CCNAME的变量值为HDP集群中某个用户或大数据服务对应用户的票据缓存文件存放路径。在Windows操作系统下创建目录,用来存放从HDP集群中拷贝的票据缓存文件,此处目录为D:\tmp。
在MIT客户端工具中认证的话,会自动在这个目录中生成krb5cc_0该文件
票据缓存文件获取实例:
[root@hdp2 ~]#
kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs-hdp1-auth@DLAKE.COM
[root@hdp2 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0 (注:该文件拷贝至Windows环境的用户票据缓存文件存放路径即可)
Default principal: hdfs-hdp1-auth@DLAKE.COM
配置hosts文件
文件路径:C:\Windows\System32\drivers\etc\hosts
添加ip的映射
说明:如果客户端不访问ipa的话 ipa的ip与hostname映射可以不用加
10.167.*.17 ipa1.dlake.com ipa1
10.167.*.18 ipa2.dlake.com ipa2
10.167.*.8 hdp1.dlake.com hdp1
10.167.*.16 hdp2.dlake.com hdp2
10.167.*.15 hdp3.dlake.com hdp3
Kerberos认证
有两种方式:
直接认证Kerberos主体,但得手动输入密码
通过keytab密钥认证Kerberos主体,不需要手动输入密码,但前提是密钥要与Kerberos主体对应。
第一种认证方式
在Kerberos KDC所在主机上创建一个主体票据
如: kadmin.local “addprinc zhangsan/zhangsan”
有了主体票据之后,双击打开Kerberos客户端,获取Ticket。
利用MIT Kerberos获取Kerberos票据
启动MIT Kerberos,点击“Home→Get Ticket”,输入MIT Kerberos环境变量配置中所使用的Kerberos用户对应的Principal及其密码。如下图:
输入密码,登录成功后。如下图:
也可以在windows命令行内执行
客户端使用klist -kte命令来查看keytab,然后使用kinit命令认证,如下图所示:
kinit -e
kinit hdpadmin@DLAKE.COM
cmd 命令行登录,会有该异常。后续优化
配置浏览器
由于技术有限,目前只实现如何配置火狐Firefox浏览器,在火狐浏览器上访问Hadoop的Web UI。
打开浏览器,在地址栏输入about:config,如下图所示:
点击接受风险并继续,在搜索栏内,搜索network.negotiate-auth.trusted-uris,双击将其值修改为集群节点ip或主机名,注意:这里如果修改为主机名的话,到时候访问的话,就以主机名访问,ip的话会失效,不起作用。
设置:
network.negotiate-auth.trusted-uris 为集群hostname
hdp1.dlake.com,hdp2.dlake.com,hdp3.dlake.com
如下图:
搜索network.auth.use-sspi,将值改为false。(默认是true)
测试访问web ui
经过如上步骤,启动Firefox浏览器,便可以正常访问启用了Kerberos的HDP集群。
Hdfs 集群web ui:http://hdp1.dlake.com:50070
Yarn ResourcesManager web ui:http://hdp1.dlake.com:8088
Ranger web ui: http://hdp2.dlake.com:6080
Spark History web ui: http://hdp1.dlake.com:18081/
MR JobHistory UI :http://hdp1.dlake.com:19888/