美文网首页
Kerberos高可用HA配置

Kerberos高可用HA配置

作者: Moon_魔宽 | 来源:发表于2019-07-07 16:51 被阅读0次

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

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

    相关文章

      网友评论

          本文标题:Kerberos高可用HA配置

          本文链接:https://www.haomeiwen.com/subject/gexihctx.html