「EMR 运维指南」之 Kerberos 跨域互信配置

2023-11-24 16:53:06 浏览数 (1)

说明

本文描述问题及解决方法同样适用于 弹性 MapReduce(EMR)

操作流程

步骤一:工作准备

本文以Cluster-A跨域去访问Cluster-B中的服务为例。配置完成后,Cluster-A在获取到本集群KDC授予的TGT(Ticket Granting Ticket)后,能够跨域访问Cluster-B中的服务。本文配置的跨域互信是单向的,即Cluster-B无法跨域访问Cluster-A上的服务,如果需要实现双向跨域互信,按照同样的方法交换配置即可。 在两个集群在emr-header-1节点上,执行 hostname 命令获取hostname。在emr-header-1节点的/etc/krb5.conf文件中获取realm。本文使用的两个集群信息示例如下:

  • Cluster-A的相关信息:
  • hostname:emr-header-1.cluster-1234。
  • realm:EMR.1234.COM。
  • Cluster-B的相关信息:
  • hostname:emr-header-1.cluster-6789。
  • realm:EMR.6789.COM。

步骤二:添加跨域认证Principal

1. 使用SSH方式登录到集群Cluster-A,详情请参见[登录集群]

2. 使用root用户,在集群Cluster-A的emr-header-1节点执行以下命令。 sh /usr/lib/has-current/bin/admin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab admin.local: addprinc -pw 123456 krbtgt/EMR.6789.COM@EMR.1234.COM 上面命令涉及的参数如下:

  • 123456 :是初始密码,您可以自定义。
  • EMR.1234.COM :Cluster-A的realm。
  • EMR.6789.COM :Cluster-B的realm。

3. 在集群Cluster-B的emr-header-1节点,重复上述步骤[1]~[2],添加跨域认证Principal。

步骤三:配置Cluster-A的krb5.conf

1. 执行以下命令,修改Cluster-A集群上krb5.conf的配置信息。

代码语言:javascript复制
vim /etc/krb5.conf

配置 [realms] 、 [domain_realm] 和 [capaths] 。示例如下。

代码语言:javascript复制
[libdefaults]
    kdc_realm = EMR.1234.COM
    default_realm = EMR.1234.COM
    udp_preference_limit = 4096
    kdc_tcp_port = 88
    kdc_udp_port = 88
    dns_lookup_kdc = false
[realms]
    EMR.1234.COM = {
        kdc = 10.81.**.**:88
    }
    EMR.6789.COM = {
        kdc = 10.81.**.**:88
    }
[domain_realm]
    .cluster-1234 = EMR.1234.COM
    .cluster-6789 = EMR.6789.COM
[capaths]
    EMR.1234.COM = {
       EMR.6789.COM = .
    }
    EMR.6789.COM = {
       EMR.1234.COM = .
    }

说明:

kdc参数值中的 10.81.**.** 为HAS KDC所在节点的内网IP地址。

1. 同步修改好的krb5.conf配置信息至Cluster-A所有节点。

2. 拷贝Cluster-B集群节点/etc/hosts中的信息(只需要长域名 emr-xxx-x.cluster-xxx )至Cluster-A集群所有节点的/etc/hosts文件中。

代码语言:javascript复制
10.**.**.**  emr-worker-1.cluster-xxx 10.**.**.**  emr-worker-2.cluster-xxx 10.**.**.**  emr-header-1.cluster-xxx

3. 说明

  • 如果Cluster-A上需要运行作业访问Cluster-B,则需要先重启YARN。
  • 在Cluster-A的所有节点上,配置Cluster-B的host绑定信息。

步骤四:访问Cluster-B服务

在Cluster-A上,您可以使用Cluster-A的Kerberos keytab文件,访问Cluster-B的服务。 例如,访问Cluster-B的HDFS服务。创建测试需要的Principal及导出keytab文件,详情请参见[兼容MIT Kerberos认证]。下面以test用户的keytab为例介绍。

代码语言:javascript复制
kinit -kt test.keytab test@EMR.1234.COM
hadoop fs -ls hdfs://emr-header-1.cluster-6789:9000/
Found 6 items
drwxr-xr-x   - hadoop    hadoop          0 2021-08-27 10:10 hdfs://emr-header-1.cluster-6789:9000/apps
drwxrwxrwt   - hadoop    hadoop          0 2021-08-27 10:10 hdfs://emr-header-1.cluster-6789:9000/spark-history
drwxrwxrwt   - hadoop    hadoop          0 2021-08-27 10:11 hdfs://emr-header-1.cluster-6789:9000/tmp
drwxrwxrwt   - hadoop    hadoop          0 2021-08-27 10:11 hdfs://emr-header-1.cluster-6789:9000/user

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞