作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Web服务器
代理服务器
ZooKeeper
Kafka
RabbitMQ
Hadoop HDFS(本章节)
上个小节,我们介绍了kerberos这个网络认证协议,本小节我们就来进行kerberos的部署。
# 安装 KDC (以 MIT Kerberos 为例)
yum install krb5-server krb5-libs krb5-workstation
# 配置 /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = kdc-server.example.com
admin_server = kdc-server.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
default_realm
:客户端未指定领域时使用的默认领域(必须大写)dns_lookup_*
:设为 false
避免依赖 DNS,需手动配置 KDCticket_lifetime
:用户票据有效期(建议 24 小时)renew_lifetime
:票据总生命周期(续订上限)forwardable
:允许代理认证(如 SSH 跳转)EXAMPLE.COM
:领域名称(需与 default_realm
一致)kdc
:KDC 服务器的主机名或 IP(可端口 kdc = host:88
)admin_server
:KDC 管理服务地址(默认端口 749)创建 Kerberos 数据库(存储所有主体和密钥),当然我这里并没有输入密码,而是直接回车,所以这里的密码是空密码,当然我这里测试没有问题,生产建议还是需要配置密码。
[root@localhost hadoop-2.10.2]# kdb5_util create -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'EXAMPLE.COM',
master key name 'K/M@EXAMPLE.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
krb5kdc
:密钥分发中心服务(处理票据请求)kadmin
:Kerberos 管理服务(管理主体和策略)systemctl start krb5kdc kadmin
systemctl enable krb5kdc kadmin
[root@localhost hadoop-2.10.2]# kadmin.local -q "addprinc admin/admin"
Authenticating as principal root/admin@EXAMPLE.COM with password.
WARNING: no policy specified for admin/admin@EXAMPLE.COM; defaulting to no policy
Enter password for principal "admin/admin@EXAMPLE.COM":
Re-enter password for principal "admin/admin@EXAMPLE.COM":
Principal "admin/admin@EXAMPLE.COM" created.
[root@localhost hadoop-2.10.2]#
#设置密码
primary
= admin
(标识管理员身份)instance
= admin
(区分管理员类型)admin/admin@EXAMPLE.COM
(假设领域为 EXAMPLE.COM)*/admin@EXAMPLE.COM *
表示所有 admin
实例的主体都有完全管理权限主体 权限
(*
代表所有权限)kdc-server.example.com
解析到 127.0.0.1[root@localhost hadoop-2.10.2]# echo "*/admin@EXAMPLE.COM *" > /var/kerberos/krb5kdc/kadm5.acl
[root@localhost hadoop-2.10.2]# echo "127.0.0.1 kdc-server.example.com" >> /etc/hosts
root@localhost hadoop-2.10.2]# kinit admin/admin
Password for admin/admin@EXAMPLE.COM:
[root@localhost hadoop-2.10.2]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@EXAMPLE.COM
Valid starting Expires Service principal
07/20/2025 23:14:31 07/21/2025 23:14:31 krbtgt/EXAMPLE.COM@EXAMPLE.COM