配置跨集群互信
1.源集群修改项
创建跨域krbtgt Principal
进入kadmin命令行,执行以下2条命令:(如有加密算法需要添加加密算法部分)
addprinc krbtgt/源集群realm@目标集群realm
addprinc krbtgt/目标集群realm@源集群realm
设置密码:xxxxxx
注:此密码需与目标集群创建该principal密码设置为同一个
2.目标集群修改项
适配/etc/hosts
修改目标所有节点/etc/hosts文件,增加源集群节点的映射关系
10.159.164.61 tst-su01-01
10.159.164.62 tst-su01-02
10.159.164.63 tst-su01-03
10.159.164.205 tst-ka05 HNTest01KDC
10.159.164.206 tst-ka06 HNTest01KDC
10.159.164.207 tst-ka07 HNTest01KDC
10.159.164.208 tst-ka08 HNTest01KDC
修改Yarn和HDFS的hadoop.rpc.protection
保证源集群hadoop.rpc.protection(core-site.xml中)的属性值与目标集群的一致,由于源集群有业务运行,因此修改目标集群配置,修改后重启集群
配置值:authentication privacy integrity
在core-site中配置principal和user的映射RULES
(注意:修改该服务端参数需要重启HDFS)
修改HDFS的core-site.xml文件的hadoop.security.auth_to_local属性:
增加红色部分:
<property>
<name>hadoop.security.auth_to_local</name>
<value>
RULE:[1:$1@$0](^.*@HADOOP\.COM$)s/^(.*)@HADOOP\.COM$/$1/g
RULE:[2:$1@$0](^.*@HADOOP\.COM$)s/^(.*)@HADOOP\.COM$/$1/g
DEFAULT
</value>
</property>
以上规则的作用:
规则1用于将HADOOP.COM域里不包含主机名的Principal映射为短名称。例如:aaa@HADOOP.COM => aaa
规则2用于将HADOOP.COM域里包含主机名的Principal映射为短名称。例如:hdfs /fully-qualified-domain-name@HADOOP.COM => hdfs
在krb5.conf中配置信任关系
在两个集群的节点的/etc/krb5.conf文件配置domain和realm的映射关系,例如:
在目标Cluster中配置:
[capaths]
目标集群realm = {
源集群realm = .
}
配置成'.'是表示没有intermediate realms
配置realms
为了是目标集群(IDC)可以访问源集群(HADOOP)的KDC,需要将源集群(HADOOP)的KDC Server配置到目标集群(IDC)中,如下:
[realms]
IDC.COM = {
kdc = {host}.IDC.COM:88
admin_server = {host}.IDC.COM:749
default_domain = IDC.COM
}
HADOOP.COM = {
kdc = {host}.HADOOP.COM:88
admin_server = {host}.HADOOP.COM:749
default_domain = HADOOP.COM
}
创建跨域 krbtgt Principal
进入kadmin命令行:
Kadmin –p kadmin/admin
输入kadmin密码,执行以下命令:
addprinc -e "aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal" krbtgt/源集群realm@目标集群realm
addprinc -e "aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal" krbtgt/目标集群realm@源集群realm
提示设置密码时,需设置与2.2.1章节源集群相同的密码
配置domain_realm
在domain_realm中,一般配置成'.IDC.COM'和'IDC.COM'的格式,'.'前缀保证kerberos将所有的IDC.COM的主机均映射到IDC.COM realm。但是如果集群中的主机名不是以IDC.COM为后缀的格式,那么需要在domain_realm中配置主机与realm的映射关系,例IDC.nn.local映射为IDC.COM,需要增加IDC.nn.local = IDC.COM。
[domain_realm]
.hadoop.com=HADOOP.COM
hadoop.com=HADOOP.COM
.IDC.com=IDC.COM
IDC.com=IDC.COM
重启kerberos服务
其他
若存在加密算法,需要在krb5.conf的[realms]中添加supported_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5