Kerberos高可用HA配置

2019-07-07  本文已影响0人  Moon_魔宽

版权声明:本文为博主原创文章,未经博主允许不得转载。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

3)kill主服务的krb5kdc和kadmin服务进行验证

$> ps -ef|grep -i krb5

$> kill -9 11652

$> ps -ef|grep -i kadmin

$> kill -9 11740

4)此时在备服务器上服务依旧正常,且可以正常添加凭证

[root@host2 krb5kdc]# kadmin.local

Authenticating as principal root/admin@SPDB1.COM with password.

kadmin.local:  addprinc cloudera-scm1/admin@SPDB1.COM

WARNING: no policy specified for cloudera-scm1/admin@SPDB1.COM; defaulting to no policy

Enter password for principal "cloudera-scm1/admin@SPDB1.COM":

Re-enter password for principal "cloudera-scm1/admin@SPDB1.COM":

Principal "cloudera-scm1/admin@SPDB1.COM" created

并且在其他客户端也可以认证在备服务器上刚新增的凭证

11、在主节点上将同步命令做成脚本,以能够实时进行同步

[root@host1 krb5kdc]# catkprop_trans.sh

#!/bin/bash

DUMP=/var/kerberos/krb5kdc/slave_datatrans

REALM=SPDB1.COM

PORT=754

SLAVE="host2"

TIMESTAMP=`date`

echo "Start $TIMESTAMP"

kdb5_util dump $DUMP

krpop -r $REALM -f $DUMP -d -P $PORT $SLAVE

12、添加到定时任务中

$> chmod 700 kprop_trans.sh

$> vi /etc/crontab

0 * * * * root /var/kerberos/krb5kdc/kprop_trans.sh> /var/kerberos/krb5kdc/lastupdate

$> service crond start

$> chkconfig crond on

cdh集群在集成kerberos时,只指定一个kdc,可能会报Communication failure with server while initializing kadmin interface

解决方法:

临时停掉备节点的kdc服务,将集群krb5.conf文件中的备kdc信息去掉,再重启主节点上的kadmin和kdc服务。

等待集群集成完成后,再重新修改回原配置即可。

上一篇下一篇

猜你喜欢

热点阅读