如何将CDH集群的KDC从RedHat7迁移到RedHat6
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github: https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
本篇文章Fayson主要介绍如何将CDH集群中的KDC服务从RedHat7迁移到RedHat6。
- 文章概述
1.环境描述
2.安装新的KDC服务和迁移原KDC数据
3.CM修改Kerberos配置
- 测试环境
1.CM和CDH5.15.0
2.现有集群操作系统RedHat7.4
3.新Kerberos节点操作系统RedHat6.5
2.环境描述
原KDC服务器
IP |
HOSTNAME |
服务 |
---|---|---|
172.31.6.83 |
ip-172-31-6-83.ap-southeast-1.compute.internal |
KDC和Kadmin |
目标KDC服务器
IP |
HOSTNAME |
服务 |
---|---|---|
172.31.11.138 |
ip-172-31-11-138.ap-southeast-1.compute.internal |
KDC和Kadmin |
3.安装新的Kerberos服务
1.选择Redhat6服务作为KDC服务器,执行如下命令安装KDC和KAdmin服务
[root@ip-172-31-11-138 ~]# yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
(可左右滑动)
2.修改/etc/krb5.conf文件,内容如下:
[root@ip-172-31-11-138 ~]# vim /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
allow_weak_crypto = yes
rdns = false
default_realm = FAYSON.COM
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
FAYSON.COM = {
kdc = ip-172-31-11-138.ap-southeast-1.compute.internal
admin_server = ip-172-31-11-138.ap-southeast-1.compute.internal
}
[domain_realm]
.ap-southeast-1.compute.internal = FAYSON.COM
ap-southeast-1.compute.internal = FAYSON.COM
(可左右滑动)
3.修改kadm5.acl配置文件,内容如下:
[root@ip-172-31-11-138 ~]# vim /var/kerberos/krb5kdc/kadm5.acl
*/admin@FAYSON.COM *
(可左右滑动)
4.修改kdc.conf文件,内容如下:
[root@ip-172-31-11-138 ~]# vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
FAYSON.COM = {
#master_key_type = aes256-cts
max_renewable_life= 7d 0h 0m 0s
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 des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
(可左右滑动)
5.创建KDC服务数据库
[root@ip-172-31-11-138 ~]# kdb5_util create –r FAYSON.COM -s
(可左右滑动)
6.启动krb5kdc和kadmin服务并将这两个服务添加到自启动服务中
[root@ip-172-31-11-138 ~]# service krb5kdc start
[root@ip-172-31-11-138 ~]# service kadmin start
[root@ip-172-31-11-138 ~]# chkconfig --add krb5kdc
[root@ip-172-31-11-138 ~]# chkconfig --add kadmin
[root@ip-172-31-11-138 ~]# chkconfig krb5kdc on
[root@ip-172-31-11-138 ~]# chkconfig kadmin on
(可左右滑动)
注意:需要确保原Kerberos的配置与新节点的Kerberos配置一致。
4.迁移原Kerberos数据
1.在原Kerberos服务所在服务器上执行如下命令,导出Kerberos数据
[root@ip-172-31-6-83 ~]# kdb5_util dump -b7 ip-172-31-6-83.kdc.dump
(可左右滑动)
2.将导出的ip-172-31-6-83.kdc.dump文件拷贝至新的Kerberos服务器上,在新的Kerberos服务器上执行如下命令将数据导入,命令如下:
[root@ip-172-31-11-138 ~]# kdb5_util load -b7 ip-172-31-6-83.kdc.dump
(可左右滑动)
3.验证账号是否导入成功
4.将新Kerberos服务器上的/etc/krb5.conf文件分发至集群所有节点
注意:这里在做Kerberos数据迁移时,不要向原Kerberos中添加Principal账号,也不要在CM进行操作(如:添加、删除服务,新增节点等)。
5.修改CDH集群中Kerberos配置
1.使用管理员账号登录Cloudera Manager管理平台,点击“管理”下的“安全”,进入“Kerberos凭据”界面
2.点击“配置”,进入Kerberos配置界面,在配置界面搜索“Server”,将KDC和KDC Admin Server的主机修改为我们新部署的Kerberos节点
保存配置即可,不需要重启服务。
6.总结
1.在做Kerberos服务迁移时需要注意,我们新装的Kerberos服务需要与原有Kerberos服务配置一致。
2.新节点安装完Kerberos服务后,需要创建相应域的数据库,将krb5kdc和kadmin服务添加到自启动列表并启动服务
3.需要将新的Kerberos服务器上/etc/krb.conf文件分发至集群的所有节点
4.通过CM修改KDC和KDC ADMIN服务的配置信息,不需要重启任何服务即可
5.将RedHat7中的Kerberos数据导出时需要增加-b7参数,新节点导入数据时也一样需要添加,因为RedHat6和Redhat7之间Kerberos版本不一致。高版本数据导入低版本Kerberos时需要注意。
6.在迁移Kerberos期间,不要向原Kerberos中添加Principal账号,也不要在CM进行操作(如:添加、删除服务,新增节点等),否则会导致服务或应用找不到Principal的问题。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
- ajax跨域有没有踩过坑,IE低版本浏览器如何支持?
- 你可能不知道的 Django Rest Framework 的两个新特性
- PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践2)
- 你应该使用 Python 管理 Cron 作业
- CSS3有哪些好用的属性?
- PHP数据结构(九) ——图的定义、存储与两种方式遍历
- 使用 React 和 Django REST Framework 构建你的网站
- 小程序中带图片modal的实现
- 号称「永远不会输钱」的马丁格尔策略
- 小程序中图片高度等比缩放
- 三分钟使用 Python 处理 Nginx 日志
- Python,Shell 和 三个标准文件
- 【微信官方】获取用户信息方案介绍
- 【实战】如何使用 Python 从 Redis 中删除 4000万 KEY
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法