乐趣区

关于数据库:如何用CDHApache-DolphinScheduler开启Kerberos

搭建环境

多台 linux 主机搭建集群 +CDH 6.3.2 (Parcel) 版本 +Apache DolphinScheduler1.3.2 版本,本流程在 CDH 已搭建实现并可失常应用后,开启 kerberos 性能,Apache DolphinScheduler 用于大数据工作治理与执行,是很不错的任务调度平台,是否提前部署均可!

开启 kerberos 目标: 用于用户权限治理与平安认证,在开启 kerberos 之前的平安防护次要采取开启防火墙的形式,当初进行替换!

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

  • CDH 集群失常启用
  • linux 用户创立 kerberos 权限
  • hive、hbase、hdfs 等服务在主机可失常执行
  • DolphinScheduler 装置失常,工作失常执行,定时工作失常执行
  • dolphinscheduler 的租户权限失常,可进行大数据服务运行和应用

部署 kerberos

抉择一台主机装置 Kerberos 服务,执行用户为 root

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

同步执行集群主机装置 client

#client lz1.cmp14722.app02 – lz5.cmp14722.app02
for item in cat /etc/hosts | grep lz |awk '{print2}'; do sshitem “hostname; yum install krb5-devel krb5-workstation -y” ; done

如果没有设置 ssh 免密登录其余主机,须要手动输出每个主机登录明码,倡议设置,前面也会用到,设置办法网上很多,暂略。(与一台台主机本人装置一样)

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

配置文件

配置文件批改 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 '{print2}'; do scp /etc/krb5.confitem:/etc/ ; done

启动 kerberos

  • 创立 kerberos 数据库

sudo kdb5_util create -rBIGDATA.COM-s
# 输出明码
# 实现

  • 启动 kerberos

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

用户认证流程

  • 创立 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 '{print2}'; do sshitem “mkdir /opt/keytab”; scp /opt/keytab/root.keytab $item:/opt/keytab/ ; done

CDH 启用 kerberos 

进入 CM 界面,关上治理 -》平安

点击启用 kerberos

全副勾选是

填写配置信息,server 与下面 krb5.conf 中配置内容统一

下一步,这里能够不勾选

填写下面创立的账号与明码 cloudera-scm/admin@BIGDATA.COM

前面间接点持续,实现后,进行初始化,直至最终实现开启

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

主机上验证集群服务

通过 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’

禁用 kerberos:如何禁用 CDH 集群 Kerberos- 腾讯云开发者社区 - 腾讯云

 DolphinScheduler 启用 kerberos 

配置文件

在进行 Apache DolphinScheduler 装置时,次要在 install_config.conf 的配置,参见官网的配置流程即可,如果曾经装置实现,能够批改 common.properties 的配置文件,这里次要说 kerberos 的配置局部,其余局部这里不赘述

在 Apache 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 形式(这里其余配置参考官网)

重启 DolphinScheduler 零碎

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

admin 登录 DolphinScheduler 验证

可失常创立租户等其余操作

用租户 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 认证用户

用户实际案例

奇富科技  蜀海供应链 联通数科拈花云科

蔚来汽车 长城汽车集度长安汽车

思科网讯生鲜电商联通医疗联想

新网银行生产金融 腾讯音乐自若

有赞伊利当贝大数据

联想传智教育 Bigo

通信行业  作业帮


迁徙实际

Azkaban   Ooize   

Airflow(有赞案例)Air2phin(迁徙工具)

Airflow 迁徙实际

Apache DolphinScheduler 3.0.0 降级到 3.1.8 教程


新手入门

抉择 Apache DolphinScheduler 的 10 个理由

Apache DolphinScheduler 3.1.8 保姆级教程【装置、介绍、我的项目使用、邮箱预警设置】轻松拿捏!

Apache DolphinScheduler 如何实现自动化打包 + 单机 / 集群部署?

Apache DolphinScheduler-3.1.3 版本装置部署具体教程

Apache DolphinScheduler 在大数据环境中的利用与调优

参加 Apache DolphinScheduler 社区有十分多的参加奉献的形式,包含:

奉献第一个 PR(文档、代码) 咱们也心愿是简略的,第一个 PR 用于相熟提交的流程和社区合作以及感触社区的友好度。

社区汇总了以下适宜老手的问题列表 :https://github.com/apache/dolphinscheduler/issues/5689

非老手问题列表 :https://github.com/apache/dolphinscheduler/issues?

q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参加奉献链接 :https://dolphinscheduler.apache.org/zh-cn/community/developme…

来吧,DolphinScheduler 开源社区须要您的参加,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是微小的。

本文由 白鲸开源科技 提供公布反对!

退出移动版