文档章节

Zookeeper配置Kerberos认证

闪电
 闪电
发布于 2017/01/16 20:11
字数 1057
阅读 41
收藏 0

关于 Hadoop 集群上配置 kerberos 以及 ldap 的过程请参考本博客以下文章:

参考 使用yum安装CDH Hadoop集群 安装 hadoop 集群,集群包括三个节点,每个节点的ip、主机名和部署的组件分配如下:

192.168.56.121        cdh1     NameNode、Hive、ResourceManager、HBase、impala-state-store、impala-catalog、Kerberos Server、zookeeper-server
192.168.56.122        cdh2     DataNode、SSNameNode、NodeManager、HBase、impala-server、zookeeper-server
192.168.56.123        cdh3     DataNode、HBase、NodeManager、impala-server、zookeeper-server

1. 配置 ZooKeeper Server

1.1 生成 keytab

在 cdh1 节点,即 KDC server 节点上执行下面命令:

$ cd /var/kerberos/krb5kdc/

kadmin.local -q "addprinc -randkey zookeeper/cdh1@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey zookeeper/cdh2@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey zookeeper/cdh3@JAVACHEN.COM "

kadmin.local -q "xst  -k zookeeper.keytab  zookeeper/cdh1@JAVACHEN.COM "
kadmin.local -q "xst  -k zookeeper.keytab  zookeeper/cdh2@JAVACHEN.COM "
kadmin.local -q "xst  -k zookeeper.keytab  zookeeper/cdh3@JAVACHEN.COM "

拷贝 zookeeper.keytab 文件到其他节点的 /etc/zookeeper/conf 目录:

$ scp zookeeper.keytab cdh1:/etc/zookeeper/conf
$ scp zookeeper.keytab cdh2:/etc/zookeeper/conf
$ scp zookeeper.keytab cdh3:/etc/zookeeper/conf

并设置权限,分别在 cdh1、cdh2、cdh3 上执行:

$ ssh cdh1 "cd /etc/zookeeper/conf/;chown zookeeper:hadoop zookeeper.keytab ;chmod 400 *.keytab"
$ ssh cdh2 "cd /etc/zookeeper/conf/;chown zookeeper:hadoop zookeeper.keytab ;chmod 400 *.keytab"
$ ssh cdh3 "cd /etc/zookeeper/conf/;chown zookeeper:hadoop zookeeper.keytab ;chmod 400 *.keytab"

由于 keytab 相当于有了永久凭证,不需要提供密码(如果修改 kdc 中的 principal 的密码,则该 keytab 就会失效),所以其他用户如果对该文件有读权限,就可以冒充 keytab 中指定的用户身份访问 hadoop,所以 keytab 文件需要确保只对 owner 有读权限(0400)

1.2 修改 zookeeper 配置文件

在 cdh1 节点上修改 /etc/zookeeper/conf/zoo.cfg 文件,添加下面内容:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000

将修改的上面文件同步到其他节点:cdh2、cdh3:

$ scp /etc/zookeeper/conf/zoo.cfg cdh2:/etc/zookeeper/conf/zoo.cfg
$ scp /etc/zookeeper/conf/zoo.cfg cdh3:/etc/zookeeper/conf/zoo.cfg

1.3 创建 JAAS 配置文件

在 cdh1 的配置文件目录创建 jaas.conf 文件,内容如下:

Server {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/zookeeper/conf/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/cdh1@JAVACHEN.COM";
};

同样,在 cdh2 和 cdh3 节点也创建该文件,注意每个节点的 principal 有所不同

然后,在 /etc/zookeeper/conf/ 目录创建 java.env,内容如下:

export JVMFLAGS="-Djava.security.auth.login.config=/etc/zookeeper/conf/jaas.conf"

并将该文件同步到其他节点:

$ scp /etc/zookeeper/conf/java.env cdh2:/etc/zookeeper/conf/java.env
$ scp /etc/zookeeper/conf/java.env cdh3:/etc/zookeeper/conf/java.env

1.4 重启服务

依次重启,并观察日志:

/etc/init.d/zookeeper-server restart

2. 配置 ZooKeeper Client

2.1 生成 keytab

在 cdh1 节点,即 KDC server 节点上执行下面命令:

$ cd /var/kerberos/krb5kdc/
kadmin.local -q "addprinc -randkey zkcli/cdh1@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey zkcli/cdh2@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey zkcli/cdh3@JAVACHEN.COM "

kadmin.local -q "xst  -k zkcli.keytab  zkcli/cdh1@JAVACHEN.COM "
kadmin.local -q "xst  -k zkcli.keytab  zkcli/cdh2@JAVACHEN.COM "
kadmin.local -q "xst  -k zkcli.keytab  zkcli/cdh3@JAVACHEN.COM "

拷贝 zkcli.keytab 文件到其他节点的 /etc/zookeeper/conf 目录:

$ scp zkcli.keytab cdh1:/etc/zookeeper/conf
$ scp zkcli.keytab cdh2:/etc/zookeeper/conf
$ scp zkcli.keytab cdh3:/etc/zookeeper/conf

并设置权限,分别在 cdh1、cdh2、cdh3 上执行:

$ ssh cdh1 "cd /etc/zookeeper/conf/;chown zookeeper:hadoop zkcli.keytab ;chmod 400 *.keytab"
$ ssh cdh2 "cd /etc/zookeeper/conf/;chown zookeeper:hadoop zkcli.keytab ;chmod 400 *.keytab"
$ ssh cdh3 "cd /etc/zookeeper/conf/;chown zookeeper:hadoop zkcli.keytab ;chmod 400 *.keytab"

由于 keytab 相当于有了永久凭证,不需要提供密码(如果修改 kdc 中的 principal 的密码,则该 keytab 就会失效),所以其他用户如果对该文件有读权限,就可以冒充 keytab 中指定的用户身份访问 hadoop,所以 keytab 文件需要确保只对 owner 有读权限(0400)

2.2 创建 JAAS 配置文件

在 cdh1 的配置文件目录 /etc/zookeeper/conf/ 创建 client-jaas.conf 文件,内容如下:

Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/zookeeper/conf/zkcli.keytab"
  storeKey=true
  useTicketCache=false
  principal="zkcli@JAVACHEN.COM";
};

同步到其他节点:

$ scp client-jaas.conf cdh2:/etc/zookeeper/conf
$ scp client-jaas.conf cdh3:/etc/zookeeper/conf

然后,在 /etc/zookeeper/conf/ 目录创建或者修改 java.env,内容如下:

export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/etc/zookeeper/conf/client-jaas.conf"

如果,zookeeper-client 和 zookeeper-server 安装在同一个节点上,则 java.env 中的 java.security.auth.login.config 参数会被覆盖,这一点从 zookeeper-client 命令启动日志可以看出来。

并将该文件同步到其他节点:

$ scp /etc/zookeeper/conf/java.env cdh2:/etc/zookeeper/conf/java.env
$ scp /etc/zookeeper/conf/java.env cdh3:/etc/zookeeper/conf/java.env

2.3 验证

启动客户端:

$ zookeeper-client -server cdh1:2181

创建一个 znode 节点:

k: cdh1:2181(CONNECTED) 0] create /znode1 sasl:zkcli@JAVACHEN.COM:cdwra
    Created /znode1

验证该节点是否创建以及其 ACL:

[zk: cdh1:2181(CONNECTED) 1] getAcl /znode1
    'world,'anyone
    : cdrwa

本文转载自:http://blog.javachen.com/2014/11/18/config-kerberos-in-cdh-zookeeper.html

闪电
粉丝 75
博文 392
码字总数 6789
作品 0
海淀
技术主管
私信 提问
zookeeper配置kerberos认证的坑

zookeeper配置了kerberos之后,zkCli.sh 连接认证死活不通过 连接命令: zkCli.sh 报错如下: WatchedEvent state:SyncConnected type:None path:null2017-08-21 10:11:42,054 [myid:] - ER......

落花非有意
2018/06/26
0
0
搜索引擎(Solr配置管理详解)

学习目标 掌握在生产环境中安装配置solr 掌握solr的安全配置 掌握solr的集合管理 应用于生产 在linux系统上安装solrCloud 1.依赖: JRE solr7.3 需要 java1.8 独立的zookeeper服务 ,zookeep...

这很耳东先生
03/07
56
0
OpenStack 上搭建 Kafka 集群

最近在 OpenStack 环境下需要部署消息队列集群,包括 RabbitMQ 和 Kafka,这篇记述一下 Kafka 集群的部署过程。 本文所用的环境包括: 软件版本 OpenStack 版本: Pike release Kafka 版本:2...

blackpiglet
2018/10/15
0
0
hadoop kerberos hbase zookeeper 之间是怎么协同工作的?

各位大神好,请问这几个组件是如何协同工作的?有参考的架构拓扑图参考的吗? 比如,hbase存在zookeeper中的数据,hbase读取时候存在hdfs上的数据,kerberos认证时候票据什么时候要用到呢?...

DarkForces
2017/06/01
470
2
zookeeper和kafka的SASL认证以及生产实践

一、什么是zookeeper? ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次它们被实现时,都有...

朱培
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
55分钟前
3
0
Kafka 2.3 Producer (0.9以后版本适用)

kafka0.9版本以后用java重新编写了producer,废除了原来scala编写的版本。 这里直接使用最新2.3版本,0.9以后的版本都适用。 注意引用的包为:org.apache.kafka.clients.producer import ja...

实时计算
今天
3
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
15
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部