版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/4cd64554fb2d
关于CDH6集成kerberos的配置参见我的另一篇文章: CDH集成kerberos ,感兴趣的朋友可以查阅。
目前Kerberos服务器的高可用是通过主备模式实现,数据同步是通过kprop服务,定时将主节点上的数据同步到从节点上。本文以host1/host2为例进行说明。
1、在主节点上,修改/etc/krb5.conf,在realms配置下增加备kerberos的配置。
注意:括号位置不能有任何改变,否则会识别不到kdc。
[realms]
SPDB1.COM = {
kdc= host1
admin_server = host1
kdc = host2
admin_server = host2
将配置文件分发到所有客户端节点上
$> scp krb5.conf host2$PWD
$> scp krb5.conf host3:$PWD
2、保持配置后,重启krb5kdc和kadmin服务
$> service krb5kdc restart
$> service kadmin restart
3、在主节点安装好的kerberos服务器中,添加用来进行同步的账户
$> kadmin.local
$> kadmin.local: addprinc -randkey host/host1
$> kadmin.local: addprinc -randkey host/host2
$> kadmin.local: ktadd host/host1
$> kadmin.local: ktadd host/host2
使用随机生成密钥的方式闯进同步账号,并使用ktadd命令生成同步账号的keytab文件,默认文件生成在/etc/krb5.keytab下,生成多个账号则在krb5.keytab基础上追加。
4、在 从节点 上,部署kerberos服务
$>yum install krb5*
5、在 主节点 上,将配置文件与包含同步账户的keytab文件同步到从节点上
$> cd /var/kerberos/krb5kdc
$> scp .k5.SPDB1.COM host2:$PWD
$> scp kadm5.acl host2:$PWD
$> scp kdc.conf host2:$PWD
$> cd /etc
$> scp krb5.keytab host2:$PWD
6、在 从节点 上,申明用来同步的用户,新建/var/kerberos/krb5kdc/kpropd.acl文件,配置文件中添加对应账户
注意:主节点上不能有该文件,否则kadmin服务无法启动,会报错:Error. This appears to be a slaveserver, found kpropd.acl
[root@host2 krb5kdc]# cat kpropd.acl
host/host1@SPDB1.COM
host/host2@SPDB1.COM
7、检查kpropd会用到的端口
[root@host2 krb5kdc]# cat /etc/services
|grep -i krb5_prop
krb5_prop 754/tcp tell # Kerberos slave propagation
8、 从节点 启动kprop服务
$> service kprop start
$> chkconfig kprop on
至此,从节点上已经准备好数据接收。
9、回到 主节点 上,在主节点上将kerberos中包含的用户信息导出,然后通过kprop命令传输到从节上。
$> kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
导出成功后生成slave_datatrans和slave_datatrans.dump_ok两个文件。
$> kprop -r SPDB1.COM -f /var/kerberos/krb5kdc/slave_datatrans -d -P754 host2
如果此步失败,报错"kprop: Decrypt integrity check failed while getting initial credentials" , 请重新执行第3 步和第5 步。
10、在从节点上验证kadmin服务是否正常
1)启动krb5kdc服务
$> service krb5kdc start
$> service krb5kdc status
2)验证kadmin服务是否正常
$> kadmin.local
$> listprincs