前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「EMR 运维指南」之 Kerberos 跨域互信配置

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

原创
作者头像
岳涛
发布2023-11-24 16:53:06
7100
发布2023-11-24 16:53:06
举报
文章被收录于专栏:大数据生态

说明

本文描述问题及解决方法同样适用于 弹性 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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 操作流程
    • 步骤一:工作准备
      • 步骤二:添加跨域认证Principal
        • 步骤三:配置Cluster-A的krb5.conf
          • 步骤四:访问Cluster-B服务
          相关产品与服务
          大数据
          全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档