搭建环境

多台linux主机搭建集群+CDH 6.3.2 (Parcel)版本+dolphinscheduler 1.3.2版本

本流程在CDH已搭建完成并可正常使用后,开启kerberos功能

dolphinscheduler用于大数据任务管理与执行,是很不错的任务调度平台,是否提前部署均可

开启kerberos目的:用于用户权限管理与安全认证,在开启kerberos之前的安全防护主要采取开启防火墙的方式,现在进行替换

本流程开启kerberos后可正常运行的服务包括:

CDH集群正常启用

linux用户创建kerberos权限

hive、hbase、hdfs等服务在主机可正常执行

dolphinscheduler安装正常,任务正常执行,定时任务正常执行

dolphinscheduler的租户权限正常,可进行大数据服务运行和使用

部署kerberos

  1. 选择一台主机安装kerberos服务,执行用户为root

#server端lz1.cmp14722.app
sudo yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation -y

  1. 同步执行集群主机安装client

#client lz1.cmp14722.app02 - lz5.cmp14722.app02
for item in `cat /etc/hosts | grep lz |awk '{print $2}'`; do ssh $item "hostname; yum install krb5-devel krb5-workstation -y" ; done

如果没有设置ssh免密登录其他主机,需要手动输入每个主机登录密码,建议设置,后面也会用到,设置方法网上很多,暂略。(与一台台主机自己安装一样)

插播一句,如果ssh免密登录设置后还是不能登录,可检查所有登录主机用户目录下的.ssh文件夹权限(700)以及文件夹内authorized_keys(600)文件权限

  1. 配置文件

配置文件修改2个

  • /etc/krb5.conf文件中default_realm对应的值随便起一个即可,realms部分选择服务主机,这里我选择安装主机对应hostname

sudo vi /etc/krb5.conf
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
default_realm = BIGDATA.COM
dns_lookup_kdc = false
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
BIGDATA.COM = {
kdc = lz1.cmp14722.app
admin_server = lz1.cmp14722.app
}
[domain_realm]
.cmp14722.app = BIGDATA.COM
cmp14722.app = BIGDATA.COM

  • /var/kerberos/krb5kdc/kdc.conf文件我这里保持不变

sudo vi /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
EXAMPLE.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}

  • 将krb5.conf分发到其他主机客户端

for item in `cat /etc/hosts | grep lz | grep -v 1 |awk '{print $2}'`; do scp /etc/krb5.conf $item:/etc/ ; done

  1. 启动kerberos

  • 创建kerberos数据库

sudo kdb5_util create -r BIGDATA.COM -s
#输入密码
#完成

  • 启动kerberos

service krb5kdc start
service kadmin start
#查看服务状态
service krb5kdc status
service kadmin status

  1. 用户认证流程

  • 创建kerberos认证用户

#进入kerberos服务
kadmin.local
#查看已有认证用户
listprincs
#新增root用户认证
addprinc root/admin@BIGDATA.COM
#输入密码
#确认密码
#完成
#创建root用户的keytab文件认证
ktadd -k /opt/keytab/root.keytab -norandkey root/admin@BIGDATA.COM
#创建集群认证用户cloudera-scm,用于后面cdh开启kerberos使用
addprinc cloudera-scm/admin@BIGDATA.COM
#查看认证用户
listprincs
#退出
quit

  • root用户认证

#keytab认证
kinit -kt /opt/keytab/root.keytab root/admin@BIGDATA.COM
#查看当前生效token
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: root/ admin@BIGDATA.COM
Valid starting Expires Service principal
01/30/2023 11:13:08 01/31/2023 11:13:08 krbtgt/BIGDATA.COM@BIGDATA.COM

分发root的keytab到其他主机,实现root用户主机间的网络认证

for item in `cat /etc/hosts | grep lz | grep -v 1 |awk '{print $2}'`; do ssh $item "mkdir /opt/keytab"; scp /opt/keytab/root.keytab $item:/opt/keytab/ ; done

cdh启用kerberos

  1. 进入CM界面,打开管理-》安全

  1. 点击启用kerberos

  1. 全部勾选是

  1. 填写配置信息,server与上面krb5.conf中配置内容一致

下一步,这里可以不勾选

  1. 填写上面创建的账号与密码 cloudera-scm/admin@BIGDATA.COM

  1. 后面直接点继续,完成后,进行初始化,直至最终完成开启

  1. 重启集群,查看集群服务状态

  1. 主机上验证集群服务

通过root用户执行hive、hbase、hdfs命令

#hive命令
hive
>>show databases;
>>create database bigdata;
#hbase命令
hbase shell
>>list
#hdfs命令
hdfs dfs -ls /

如遇到某些命令没有权限或者无法通过TOKEN认证等问题,可以在kerberos服务主机上,创建对应的服务用户,进行keytab认证(参见上面用户认证流程),通过对应的服务认证,完成操作命令。认证不需要切换用户,如在root用户下可执行命令kinit -kt /opt/keytab/hbase.keytab hbase/admin@BIGDATA.COM,进行hbase的用户认证。

hbase服务也可进行用户权限授权,需要通过hbase用户的kerberos认证,作为管理员进行操作

#进入hbase
hbase shell
#查看现有用户权限
>>user_permission
#对root用户赋权,R写、W读、X执行、C创建、A管理员
>>grant 'root', 'RWXCA'

dolphinscheduler启用kerberos

  1. 配置文件

在进行dolphinscheduler安装时,主要在install_config.conf的配置,参见官网的配置流程即可,如果已经安装完成,可以修改common.properties的配置文件,这里主要说kerberos的配置部分,其他部分这里不赘述

在dolphinscheduler所在master主机上进行配置文件修改即可

vi /opt/dolphinscheduler/conf/common.properties
# resource.storage.type=HDFS
resource.storage.type=HDFS
# whether kerberos starts
hadoop.security.authentication.startup.state= true
# java.security.krb5.conf.path=/opt/dolphinscheduler/conf/krb5.conf
java.security.krb5.conf.path=/etc/krb5.conf
# login user from keytab username
login.user.keytab.username= hdfs/admin@BIGDATA.COM
# loginUserFromKeytab path
login.user.keytab.path= /opt/keytab/hdfs.keytab

这里主要涉及keytab认证选择的用户,用户需要对集群有操作权限,这里选择hdfs用户,确保已创建kdfs用户对应keytab;资源存储选择的HDFS方式(这里其他配置参考官网)

  1. 重启dolphinscheduler系统

sh stop-all.sh
sh start-all.sh

  1. admin登录dolphinscheduler验证

可正常创建租户等其他操作

  1. 用租户bidata执行大数据任务

由于需要用linux的bidata用户执行任务,因此需要创建bidata用户的kerberos认证,方法同上,因为kerberos认证有有效期,保证任务和定时任务不失败,需要通过crontab创建定时认证

#创建定时任务
crontab -e
58 23 * * * kinit -kt /opt/keytab/bidata.keytab bidata/admin@BIGDATA.COM

定时任务在所有worker主机上均需要设置,因为dolphinscheduler的任务执行默认是随机分配的

遇到的问题

集群重启后hbase服务异常

hbase服务无法完成init过程,我通过删除zk中的hbase,完成了启动

#进入zk,/bin/zookeeper-client或zk目录下执行sh zkCli.sh
zookeeper-client
[zk: localhost:2181(CONNECTED) 3] ls /
[dolphinscheduler, hive_zookeeper_namespace_hive, zookeeper, hbase]
[zk: localhost:2181(CONNECTED) 3] deleteall /hbase
#或逐个删除/hbase下的内容

重启后成功

用户无法访问集群服务

Caused by: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]

上面的错误是kerberos认证问题,当前用户没有进行kerberos认证或者本身对服务没有权限,需要具体服务具体授权,针对具体服务切换kerberos认证用户

cdh+dolphinscheduler开启kerberos相关推荐

  1. 【安全】CDH集群开启Kerberos安全认证

    文章目录 1.安装kerberos 2.CDH集群开启Kerberos安全认证 1.安装kerberos 参考:https://blog.csdn.net/qq_21383435/article/de ...

  2. DolphinScheduler启用Kerberos(亲测)

    环境背景 使用DolphinScheduler3.0.0+CDH6.3.2(适配之前已存在任务环境) 已知问题 DolphinScheduler3.1.4默认是zookeeper3.8,需要手动编译z ...

  3. JDBC 连接Hive 简单样例(开启Kerberos)

    今天在移动的云平台上通过jdbc连接hive,发现云平台使用了 kerberos的认证.与宁波实验环境不同. 发现一文解决了问题,转载如下: 原文地址:http://blog.csdn.net/zen ...

  4. Storm集群安装Version1.0.1开启Kerberos

    Storm集群安装,基于版本1.0.1, 同时开启Kerberos安全认证, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 ...

  5. Kylin开启Kerberos安全认证

    Kylin开启Kerberos安全认证, 由于Kylin是依赖Hbase启动的, Kylin启动脚本kylin.sh中就是调用的Hbase的启动脚本, 所以当Hbase开启了Keberos之后就等于K ...

  6. Hadoop开启Kerberos安全模式

    Hadoop开启Kerberos安全模式, 基于已经安装好的Hadoop的2.7.1环境, 在此基础上开启Kerberos安全模式. 1.安装规划 已经安装好Hadoop的环境 10.43.159.7 ...

  7. Zookeeper集群安装(开启kerberos)

    安装规划 zookeeper集群模式,安装到如下三台机器 10.43.159.237 zdh-237 10.43.159.238 zdh-238 10.43.159.239 zdh-239 Kerbe ...

  8. Zookeeper单机安装(开启kerberos)

    安装规划 zookeeper安装到zdh41上面,单机模式 10.43.159.41 zdh41 ZDH.COM 安装用户 zookeeper/zdh1234 useradd -g hadoop -s ...

  9. Sqoop2开启Kerberos安全模式

    Sqoop2开启Kerberos安全模式, 基于版本sqoop-1.99.7, 在已经安装好的sqoop2环境上配置kerberos. 1.安装规划 10.43.159.9 zdh-9 sqoop2k ...

最新文章

  1. 怎么保证缓存和数据库一致性
  2. Flutter开发之ListView下拉刷新上拉加载更多(35)
  3. bzoj 1572: [Usaco2009 Open]工作安排Job
  4. 多态Poly中的向上/下转型 Upcast/Downcast
  5. Linux命令学习(三):文件操作命令(1)
  6. 腾讯陈妍:万物互联时代,保险业应更注重服务创新来挖掘用户需求
  7. 面向对象VS面向过程
  8. 数据结构java语言描述朱战立_数据结构——树(Java语言描述)
  9. 笔记随笔1(webpack,vue-router,vuex)
  10. CCIE考试现在需要面试了
  11. Win10怎么备份系统
  12. 【YOLO家族】【论文翻译】YOLO 9000 /YOLO V2
  13. 我(和谐)草(和谐)尼(和谐)玛
  14. zigbee应用实践
  15. 如何将BMP文件转换为JPG文件
  16. 阿里java社招_社招|阿里巴巴Java工程师社招凉经
  17. 星星泡饭伴奏_星星泡饭 - Ayo_Lvlv - 5SING中国原创音乐基地
  18. 计算机组成原理字发生器,计算机组成原理实验2.7时序发生器赖晓铮剖析.ppt
  19. Launcher3-桌面布局+主要的类+启动流程
  20. 详解nginx服务器绑定域名和设置根目录的方法

热门文章

  1. 星野摄影入门(全流程)
  2. addEvent.js源码解析
  3. thinkphp5图片或者视频上传
  4. 【量子通信到底是怎么回事?】量子通信的概念(光的偏振特性)、量子密钥分发(quantum key distribution,QKD)
  5. IOS 页面跳转问题:点击按钮页面不跳转
  6. cesium turf.js展示两多边形相交区域
  7. LeetCode(38) Count and Say
  8. 运维工程师历年企业笔试真题汇总
  9. 酒店点餐系统开发详解(三)
  10. 台式电脑怎么卸载计算机,有些电脑软件卸载不了怎么办?电脑安装的软件无法卸载解决方法...